CSS3 flip effect

Patrząc na demo css3 flip effect trudno oprzeć się wrażeniu, że animacja została zrobiona w javascripcie. Nic bardziej mylnego :). Do wykonania efektu obracającej się kartki wystarczy niewiele reguł css3. Ze względu na ograniczoną obsługę reguły css3 transition najlepiej oglądać efekt w przeglądarkach z silnikiem webkit np. Google Chrome. Kod html, któremu będziemy nadawać style jest bardzo prosty. Div od id box zawierający dwa divy (pierwszą i drugą stronę obracającej się kartki).

<div id="box">
	<div>Design</div>
	<div>Concept</div>
</div>
Na początku należy dodać regułę dla body.
body {
	display: -moz-box;
	display: -webkit-box;
	display: box;
}
Następnie stylujemy element o id box. Oprócz znanych reguł takich jak kolor tła, obramowanie czy margines pojawiają się reguły transition. Zwróćmy uwagę na zastosowane prefiksy dla określonych przeglądarek (-webkit-, -moz-). Właściwość transistion pozwala na zmianę stanu elementu w sposób płynny. Jako wartość dla transition podaliśmy all 1s. Oznacza to, że przeglądarka będzie reagowała na zmianę dowolnej własności css (all) w czasie 1s.
#box {
	background: #e3e3e3;
	border: 1px solid #666;
	margin:0 auto;
	width: 300px;
	height: 200px;
	cursor: pointer;
	position: relative;/*wyeliminowanie pojawiających się dziwnie poziomych pasków przewijania*/
	-webkit-transition: all 1s;	
	-moz-transition: all 1s;
	transition: all 1s;	
}
Teraz styl dla wewnętrznych divów. Oba divy wyświetlają się jeden pod drugim, więc aby to skorygować nadajemy pozycję absolutną. Dodajemy również efekt przejścia (transition). Dodam tu tylko, że możemy ease-in-out oznacza typ animacji. Podanie typu jest opcjonalne. Jeśli go nie podamy zostanie użyty domyślny czyli linear.
#box div {
	position: absolute;
	width: 100%; 
	height: 100%;
	top: 0; 
	left: 0;
	background: #92C8E1;
	color:#1E3C5E;
	font: 48px/200px bold Arial, sans-serif;
	text-align: center;
	-webkit-transition: all .5s ease-in-out;
	-moz-transition: all .5s ease-in-out;
	transition: all .5s ease-in-out;
}
Aby pierwszy div był widoczny najpierw musimy dodać następujące reguły.
#box > div:first-child {
	position: relative;
	z-index: 2;
}
Teraz zaczynamy faktyczną zabawę z obrotami kartki. Dla stanu hover elementu o id box stosujemy transformację obrotu wokół osi Y o 180 stopni - transform: rotateY(180deg). Tak samo postępujemy z drugim divem (zawierającym tekst "Concept"), aby odbić lustrzanie tekst. Na koniec ustawiamy opacity: 0 dla pierwszego diva aby go ukryć.
#box:hover, #box:hover div:last-child {
	-webkit-transform: rotateY(180deg);
	-moz-transform: rotateY(180deg);
	transform: rotateY(180deg);   	   	
}
#box:hover > div:first-child {
	opacity: 0;
}