Красивая 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);
}
В комментариях к коду описаны ключевые моменты.
На этом все 🙂 Не пропустите новые уроки!







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