8 простых, но эффектных примеров CSS3 анимации
CSS3 предоставляет практически неограниченные возможности для UX разработчиков и, что очень круто — большинство из них очень просто реализовать.
Всего несколько строк кода могут создать эффектную анимацию, которая впечатлит ваших посетителей и повысит доверие к вашему сайту и, при правильном использовании, может повысить конверсию.
В этой статье мы напишем несколько простых, но очень интересных эффектов анимации на чистом CSS3.
HTML
Все эффекты управляются CSS свойством transition, поэтому разметка для примера очень проста:
<!DOCTYPE html> <html> <head> <style type="text/css"> </style> </head> <body> <div></div> </body> </html>
Теперь зададим высоту, ширину, цвет фона (чтобы видеть, что происходит) и свойство перехода (transition):
<style type="text/css"> body > div { width:483px; height:298px; background:#676470; transition:all 0.3s ease; } </style>
Свойство transition имеет три параметра: свойство к которому применяется (в нашем случае все), скорость перехода (у нас — 0.3 сек) и применяемый эффект (ease). Все это означает, что все изменения, происходящие с нашим элементом будут выполняться плавно (в течение 0.3 сек).
Осталось только изменить внешний вид элемента и анимация будет сделана за нас.
1. Fade in
Fade эффекты очень популярны, это хороший способ привлечь внимание к чему-либо.
Этот эффект реализуется в два этапа: первое, устанавливается начальное значение прозрачности; далее — изменение состояния, например, при наведении курсора:
.fade { opacity:0.5; } .fade:hover { opacity:1; }
Не забудьте присвоить класс «fade» вашему div’у.
2. Изменение цвета
Изменение цвета раньше было непростой задачей, с применением сложных математических хитростей для вычисления отдельных RGB значений и их комбинаций. Сейчас, достаточно задать соответствующий цвет с помощью CSS и плавная анимация будет сделана за нас:
.color:hover { background:#53a7ea; }
3. Расширение и сужение
Для расширения элемента раньше нужно было изменять ширину (width), высоту (height) или отступы (padding), но сейчас мы можем использовать CSS свойство transform для увеличения.
Примените класс «grow» к вашему элементу и добавьте следующий код к вашим стилям:
.grow:hover { -webkit-transform: scale(1.3); -ms-transform: scale(1.3); transform: scale(1.3); }
Уменьшить элемент можно так же просто как и увеличить. Для увеличения используйте значение параметра больше 1, для уменьшения — меньше 1:
.shrink:hover { -webkit-transform: scale(0.8); -ms-transform: scale(0.8); transform: scale(0.8); }
4. Вращение
CSS свойство transform имеет множество вариантов применений, один из лучших — вращение элемента. Класс «rotate»:
.rotate:hover { -webkit-transform: rotateZ(-30deg); -ms-transform: rotateZ(-30deg); transform: rotateZ(-30deg); }
5. Сглаживание углов
Очень популярный эффект анимации — переход от квадратного элемента к круглому и наоборот. Этот эффект очень легко реализовать с помощью CSS: надо всего-лишь изменить свойство border-radius.
Класс «circle»:
.circle:hover { border-radius:50%; }
6. 3D тень
Этот эффект достигается с помощью добавления свойства box-shadow и перемещения элемента вдоль оси x с помощью свойств transform и translate. Таким образом создается эффект поднятия элемента.
Класс «threed»:
.threed:hover { box-shadow: 1px 1px #53a7ea, 2px 2px #53a7ea, 3px 3px #53a7ea; -webkit-transform: translateX(-3px); transform: translateX(-3px); }
7. Покачивание
Не все эффекты создаются с помощью свойства transition. Мы также можем создавать сложные эффекты анимации с помощью свойств @keyframes, animation и animation-iteration.
Для этого сначала надо создать анимацию в ваших стилях. Обратите внимание, что для совместимости необходимо использовать @-webkit-keyframes одновременно с @keyframes:
@-webkit-keyframes swing { 15% { -webkit-transform: translateX(5px); transform: translateX(5px); } 30% { -webkit-transform: translateX(-5px); transform: translateX(-5px); } 50% { -webkit-transform: translateX(3px); transform: translateX(3px); } 65% { -webkit-transform: translateX(-3px); transform: translateX(-3px); } 80% { -webkit-transform: translateX(2px); transform: translateX(2px); } 100% { -webkit-transform: translateX(0); transform: translateX(0); } } @keyframes swing { 15% { -webkit-transform: translateX(5px); transform: translateX(5px); } 30% { -webkit-transform: translateX(-5px); transform: translateX(-5px); } 50% { -webkit-transform: translateX(3px); transform: translateX(3px); } 65% { -webkit-transform: translateX(-3px); transform: translateX(-3px); } 80% { -webkit-transform: translateX(2px); transform: translateX(2px); } 100% { -webkit-transform: translateX(0); transform: translateX(0); } }
Эта анимация просто передвигает элемент справа налево, осталось только применить её:
.swing:hover { -webkit-animation: swing 1s ease; animation: swing 1s ease; -webkit-animation-iteration-count: 1; animation-iteration-count: 1; }
8. Inset border
Один из популярных видов кнопок — кнопки без фона, но с массивными рамками. Конечно, рамки можно реализовать просто добавив свойство border, но это изменит размеры самого элемента. Это можно исправить с помощью свойства box-sizing, но легче использовать для анимации рамок свойство box-shadow.
Класс «border»:
.border:hover { box-shadow: inset 0 0 0 25px #53a7ea; }
На этом всё!
Спасибо!!!
Молодцы,очень разумно все сделано. Просто палец вверх.
отличные примеры, молодцы!!!
Не получается плавно…
Сделай не
body > div
{
width:483px;
height:298px;
background:#676470;
transition:all 0.3s ease;
}
А
body > div
{
width:483px;
height:298px;
background:#676470;
transition:all 0.3s;
}
Хорошие примеры.
Правда я искал примеры анимации без наведений и прочих действий мышью…
Нет ли в вашем арсенале анимации изменения размера сразу после загрузки блока?
7й пример «Покачивание» у меня как качели раскачивается.
А как сделать, чтобы было как у вас, только по горизонтали?
Здравствуйте! Мне понравился эффект сглаживания углов. Я в ксс новичок, и не понимаю, куда конкретно вставлять этот код. Между каких тегов? помогите пожалуйста))
Просто и красиво.
Супер. Доволен.