Как сделать Flipping эффект с помощью CSS анимации
CSS анимация — это очень полезная и весёлая штука. С помощью нескольких простых правил можно сделать совсем не обычные и элегантные вещи, которые будут привлекать пользователей своей привлекательно анимацией.
Сегодня мы с Вами научимся делать один из очень интересных эффектов с помощью CSS анимации, а именно переворачивающийся эффект при наведении на изображение, ещё его называют Flipping эффект.
За урок огромное спасибо http://davidwalsh.name
Демо
HTML разметка
Так как у нашего блока с картинкой будет две стороны, делаем соответствующую разметку:
<div class="flip-container" ontouchstart="this.classList.toggle('hover');"> <div class="flipper"> <div class="front"> <!-- front content --> </div> <div class="back"> <!-- back content --> </div> </div> </div>
У нас есть два класса «front», который отвечает за переднюю часть блока, которая стоит по умолчанию, другими словами — это изображения. И класс «back», который отвечает за отображение внутренней стороны, которая появляется с красивой анимацией при наведении на неё.
CSS
Я готов поспорить с Вами, что Вы и ожидать не могли, что правил CSS будет так мало :) Вот, собственно, и все CSS правила:
.flip-container { perspective: 1000; } .flip-container:hover .flipper, .flip-container.hover .flipper { transform: rotateY(180deg); } .flip-container, .front, .back { width: 320px; height: 480px; } .flipper { transition: 0.6s; transform-style: preserve-3d; position: relative; } .front, .back { backface-visibility: hidden; position: absolute; top: 0; left: 0; } .front { z-index: 2; } .back { transform: rotateY(180deg); }
Переворачивание по вертикали
По умолчанию блок переворачивается по горизонтали, но конечно же можно сделать, чтобы он переворачивался и по вертикальной плоскости, нужно добавить просто несколько CSS правил и всё:
.vertical.flip-container { position: relative; } .vertical .back { transform: rotateX(180deg); } .vertical.flip-container .flipper { transform-origin: 100% 213.5px; /* half of height */ } .vertical.flip-container:hover .flipper { transform: rotateX(-180deg); }
Поддержка Internet Explorer
С браузером Internet Explorer вообще отдельная история, так как нужно переделать практически все правила, так как до сих пор множество их не поддерживается, к сожалению:
.flip-container { perspective: 1000; transform-style: preserve-3d; } .flip-container:hover .back { transform: rotateY(0deg); } .flip-container:hover .front { transform: rotateY(180deg); } .flip-container, .front, .back { width: 320px; height: 480px; } .flipper { transition: 0.6s; transform-style: preserve-3d; position: relative; } .front, .back { backface-visibility: hidden; transition: 0.6s; transform-style: preserve-3d; position: absolute; top: 0; left: 0; } .front { z-index: 2; transform: rotateY(0deg); } .back { transform: rotateY(-180deg); } .vertical.flip-container { position: relative; } .vertical .back { transform: rotateX(180deg); } .vertical.flip-container:hover .back { transform: rotateX(0deg); } .vertical.flip-container:hover .front { transform: rotateX(180deg); }
Демо
Вот и всё, друзья. При совсем небольших усилиях мы сделали сегодня с Вами совершенно не сложный и красивый эффект с помощью CSS анимации. Конечно же это совсем простой пример, который Вы можете доработать или же изменить под свои нужды.
На этом всё, пока.