Красивая CSS форма для логина с эффектом 3д трансформации
В этом уроке мы сделаем форму для логина с эффектом 3D поворота
Наша форма будет состоять из двух частей: форма для логина и для восстановления пароля. Эффект будет работать так: нам будет видна только одна форма, но при нажатии на ссылку, будет появляться другая и исчезнет текущая, с помощью поворота вокруг оси Y. Т.о. создастся эффект 3d поворота.
Мы будем использовать jQuery для отслеживания нажатия по ссылке и замены имени CSS класса у формы.
HTML
Разметка формы:
<div id="formContainer"> <form id="login" method="post" action="./"> <a href="#" id="flipToRecover">Forgot?</a> <input type="text" name="loginEmail" id="loginEmail" placeholder="Email" /> <input type="password" name="loginPass" id="loginPass" placeholder="Password" /> <input type="submit" name="submit" value="Login" /> </form> <form id="recover" method="post" action="./"> <a href="#" id="flipToLogin">Forgot?</a> <input type="text" name="recoverEmail" id="recoverEmail" placeholder="Your Email" /> <input type="submit" name="submit" value="Recover" /> </form> </div>
jQuery
Прежде всего, jQuery проверит поддержку CSS эффектов.
$(function(){
// Проверяем поддержку CSS
$.support.css3d = supportsCSS3D();
var formContainer = $('#formContainer');
// следим за нажатием на ссылку
$('.flipLink').click(function(e){
// переворачиваем форму
formContainer.toggleClass('flipped');
// если нет поддержки - прячем текущую форму
if(!$.support.css3d){
$('#login').toggle();
}
e.preventDefault();
});
formContainer.find('form').submit(function(e){
// предотвращаем отправку формы
e.preventDefault();
});
// функция проверки поддержки
function supportsCSS3D() {
var props = [
'perspectiveProperty', 'WebkitPerspective', 'MozPerspective'
], testDom = document.createElement('a');
for(var i=0; i<props.length; i++){
if(props[i] in testDom.style){
return true;
}
}
return false;
}
});
CSS
#formContainer{
width:288px;
height:321px;
margin:0 auto;
position:relative;
-moz-perspective: 800px;
-webkit-perspective: 800px;
perspective: 800px;
}
#formContainer form{
width:100%;
height:100%;
position:absolute;
top:0;
left:0;
/* Включаем 3d пространство для трансформации */
-moz-transform-style: preserve-3d;
-webkit-transform-style: preserve-3d;
transform-style: preserve-3d;
/* если форма перевернута - прячем её */
-moz-backface-visibility: hidden;
-webkit-backface-visibility: hidden;
backface-visibility: hidden;
/* включаем плавную анимацию */
-moz-transition:0.8s;
-webkit-transition:0.8s;
transition:0.8s;
/* для Firefox */
-moz-animation: pulse 2s infinite;
/* для Chrome и Safari */
-webkit-animation: pulse 2s infinite;
}
#login{
background:url('../img/login_form_bg.jpg') no-repeat;
z-index:100;
}
#recover{
background:url('../img/recover_form_bg.jpg') no-repeat;
z-index:1;
opacity:0;
/* Вращаем форму для восстановления */
-moz-transform:rotateY(180deg);
-webkit-transform:rotateY(180deg);
transform:rotateY(180deg);
}
/* Firefox Keyframe Animation */
@-moz-keyframes pulse{
0%{ box-shadow:0 0 1px #008aff;}
50%{ box-shadow:0 0 8px #008aff;}
100%{ box-shadow:0 0 1px #008aff;}
}
/* Webkit keyframe animation */
@-webkit-keyframes pulse{
0%{ box-shadow:0 0 1px #008aff;}
50%{ box-shadow:0 0 10px #008aff;}
100%{ box-shadow:0 0 1px #008aff;}
}
#formContainer.flipped #login{
opacity:0;
/**
* Вращаем логин форму
* когда добавлен класс flipped
*/
-moz-transform:rotateY(-180deg);
-webkit-transform:rotateY(-180deg);
transform:rotateY(-180deg);
}
#formContainer.flipped #recover{
opacity:1;
/* вращаем форму восстановления, делаем видимой */
-moz-transform:rotateY(0deg);
-webkit-transform:rotateY(0deg);
transform:rotateY(0deg);
}
В комментариях к коду описаны ключевые моменты.
На этом все 🙂 Не пропустите новые уроки!







Спасибо за сайт. Хороший сайт. Было нужно: открытие страницы в новой вкладке при клике по ссылке, для всей страницы. Что только не было найдено поиске, но ваш вариант самый простой и мне подходит.