Создаем 5 простых CSS анимаций используя ключевые кадры
В этом практическом уроке я покажу вам несколько простых анимаций, которые можно создать с помощью ключевых кадров (keyframes) в CSS. Это будут простые примеры, более сложные варианты рассмотрим в последующих уроках. Желательно, чтобы сначала вы ознакомились с теоретической частью — рассмотрели CSS-анимацию (animation) и ключевые кадры @keyframes.
С помощью ключевых кадров @keyframes CSS можно создавать практически любую анимацию. В основе их работы заключается принцип сменяемости CSS стилей за определенный период времени. Изменять CSS стили можно сколь угодно раз и в любые промежутки времени.
А теперь давайте перейдем к практике.
Как создать CSS анимацию с @keyframes
Для начала нам нужно создать HTML элемент, для которого задействовать анимацию. Это может выглядеть примерно так:
<div class="blok-dlya-animaciyi">
<button class="animaciya {тип анимации} btn-button">Кнопка</button>
</div>
С помощью приведенного выше кода я создал родительский элемент div с классом blok-dlya-animaciyi (обертку для анимированного элемента), и дочерний элемент Кнопка (button) с нужными классами: animaciya (общие настройки анимации) и {тип анимации} (заменить позже конкретным типом анимации). Ниже присваиваем CSS стили для общих настроек анимации:
/* Общая конфигурация анимации (продолжительность и режим) */
.animaciya {
-webkit-animation-duration: 1s;
animation-duration: 1s;
-webkit-animation-fill-mode: both;
animation-fill-mode: both;
animation-iteration-count: infinite;
}
Далее, используя класс {тип анимации}, я буду определять, какую анимацию хочу применить к элементу.
Ниже я приведу пример 5 основных и простых анимаций, которые можно легко создать только с помощью ключевых кадров @keyframes в CSS.
Анимация подпрыгивания (bounce)
Чтобы создать анимацию подпрыгивания кнопки, я использую свойство transform, чтобы изменять координаты объекта и с помощью ключевых кадров @keyframes распределить по времени эти изменения. Следующий код позволяет перемещать кнопку вверх и вниз (по вертикальной оси). Обратите внимание, что мы должны заменить класс {тип анимации} на bounce (в данном случае; ниже в примерах — другие классы). Добавьте эти стили в свой HTML файл и так вы задействуете анимацию в виде подпрыгивания кнопки:
/* Ключевые кадры анимации подпрыгивания (bounce) */
@-webkit-keyframes bounce {
0%, 20%, 50%, 80%, 100% {-webkit-transform: translateY(0);}
40% {-webkit-transform: translateY(-30px);}
60% {-webkit-transform: translateY(-15px);}
}
@keyframes bounce {
0%, 20%, 50%, 80%, 100% {transform: translateY(0);}
40% {transform: translateY(-30px);}
60% {transform: translateY(-15px);}
}
/* применяю анимацию подпрыгивания (bounce) для кнопки */
.bounce {
-webkit-animation-name: bounce;
animation-name: bounce;
}
По схожему принципу делаю следующие виды анимаций.
Анимация появления/исчезновения через затухание (fade)
Для этой анимации я использую свойство непрозрачности (opacity) в CSS: для появления (fadeIn) кнопки — от 0 до 1, а для угасания (fadeOut) — от 1 до 0. Вот такой получается CSS код:
/* Ключевые кадры анимации появления через затухание fadeIn */
@-webkit-keyframes fadeIn {
0% {opacity: 0;}
100% {opacity: 1;}
}
@keyframes fadeIn {
0% {opacity: 0;}
100% {opacity: 1;}
}
/* применяю анимацию появления через затухание (fadeIn) к кнопке */
.fadeIn {
-webkit-animation-name: fadeIn;
animation-name: fadeIn;
}
/* Ключевые кадры анимации исчезновения через затухание fadeOut */
@-webkit-keyframes fadeOut {
0% {opacity: 1;}
100% {opacity: 0;}
}
@keyframes fadeOut {
0% {opacity: 1;}
100% {opacity: 0;}
}
/* применяю анимацию исчезновения через затухание (fadeOut) для кнопки */
.fadeOut {
-webkit-animation-name: fadeOut;
animation-name: fadeOut;
}
Идем дальше, и по схожему принципу сделаем другие виды анимации.
Анимация пульсирования (pulse)
Для этой анимации я использую свойство масштабирования scale:
/* Ключевые кадры анимации пульсирования (pulse) */
@-webkit-keyframes pulse {
0% { -webkit-transform: scale(1); }
50% { -webkit-transform: scale(1.1); }
100% { -webkit-transform: scale(1); }
}
@keyframes pulse {
0% { transform: scale(1); }
50% { transform: scale(1.1); }
100% { transform: scale(1); }
}
/* применяю анимацию пульсирования (pulse) для кнопки */
.pulse {
-webkit-animation-name: pulse;
animation-name: pulse;
}
Анимация вспышки (flash)
Для этой анимации я также использую свойство непрозрачности opacity CSS, но с большей частотой, чтобы получить эффект вспышки:
/* Ключевые кадры анимации вспышки (flash) */
@-webkit-keyframes flash {
0%, 50%, 100% {opacity: 1;}
25%, 75% {opacity: 0;}
}
@keyframes flash {
0%, 50%, 100% {opacity: 1;}
25%, 75% {opacity: 0;}
}
/* применяю анимацию вспышки (flash) для кнопки */
.flash {
-webkit-animation-name: flash;
animation-name: flash;
}
Анимация встряхивания/дрожания (shake)
Здесь похожая анимация с первым примером — подпрыгиванием (bounce), но вместо вверх/вниз, я двигаю элемент по горизонтали — слева направо:
/* Ключевые кадры анимации встряхивания (shake) */
@-webkit-keyframes shake {
0%, 100% {-webkit-transform: translateX(0);}
10%, 30%, 50%, 70%, 90% {-webkit-transform: translateX(-10px);}
20%, 40%, 60%, 80% {-webkit-transform: translateX(10px);}
}
@keyframes shake {
0%, 100% {transform: translateX(0);}
10%, 30%, 50%, 70%, 90% {transform: translateX(-10px);}
20%, 40%, 60%, 80% {transform: translateX(10px);}
}
/* применяю анимацию встряхивания (shake) для кнопки */
.shake {
-webkit-animation-name: shake;
animation-name: shake;
}
Если собрать воедино все вышерассмотренные виды анимации, то получится вот такое демо, что на видео:
Если вам понравился сегодняшний урок, поделитесь с друзьями. Если у вас есть вопросы/пожелания по данной теме, не стесняйтесь оставлять комментарии в соответствующем разделе ниже. Благодарю за внимание!