CSS-свойства для создания анимаций и плавных переходов
Основные CSS-свойства для анимаций и переходов
CSS предоставляет два подхода для создания визуальных эффектов:
- Плавные переходы (
transition
) — для простых эффектов (при наведении, фокусе и т. д.) - Анимации (
@keyframes + animation
) — для сложных и многошаговых эффектов
Свойства для переходов (transitions)
transition
Позволяет задать параметры перехода.
.element {
transition: all 0.3s ease-in-out;
}
transition-property
Указывает, какие свойства будут анимироваться (например, opacity
, transform
).
transition-property: opacity, transform;
transition-duration
Длительность перехода (в секундах или миллисекундах).
transition-duration: 0.5s;
transition-timing-function
Кривая изменения (ускорение/замедление).
Значение | Поведение |
---|---|
linear | Равномерно |
ease | Старт быстро → замедление |
ease-in | Медленно → быстро |
ease-out | Быстро → медленно |
ease-in-out | Медленно → быстро → медленно |
cubic-bezier() | Своя кривая анимации |
transition-delay
Задержка перед началом перехода.
transition-delay: 0.2s;
Свойства для анимаций (keyframes)
@keyframes
Определяет шаги анимации.
@keyframes slideIn {
from {
transform: translateX(-100%);
}
to {
transform: translateX(0);
}
}
animation-name
Имя анимации (должно совпадать с ключевыми кадрами).
animation-name: slideIn;
animation-duration
Время анимации.
animation-duration: 1s;
animation-timing-function
Кривая скорости анимации.
animation-timing-function: ease-in-out;
animation-delay
Задержка перед началом.
animation-delay: 0.3s;
animation-iteration-count
Сколько раз повторять (например, infinite
, 1
, 3
).
animation-iteration-count: infinite;
animation-direction
Направление: normal
, reverse
, alternate
, alternate-reverse
.
animation-direction: alternate;
animation-fill-mode
Определяет стили до и после анимации:
Значение | Описание |
---|---|
none | По умолчанию |
forwards | Сохраняет финальные стили |
backwards | Применяет начальные стили до старта |
both | Совмещает forwards и backwards |
Пример: анимированная кнопка с эффектом "глитча" (glitch) и с эффектом "матрица" (matrix)
Hack Frontend Matrix
<button class="hack-btn">Hack Frontend</button>
.hack-btn {
background-color: #1a1a1a;
color: #0f0;
border: 2px solid #0f0;
padding: 12px 24px;
font-family: monospace;
font-size: 18px;
position: relative;
cursor: pointer;
text-transform: uppercase;
letter-spacing: 2px;
overflow: hidden;
transition: all 0.3s ease;
}
.hack-btn:hover {
background-color: #0f0;
color: #1a1a1a;
box-shadow: 0 0 15px #0f0;
}
.hack-btn::before,
.hack-btn::after {
content: 'Hack Frontend';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
opacity: 0;
}
@keyframes glitch {
0% {
transform: translate(0);
opacity: 0;
}
20% {
transform: translate(-5px, 5px);
opacity: 0.3;
color: #ff0000;
}
40% {
transform: translate(5px, -5px);
opacity: 0.3;
color: #00ffff;
}
60% {
transform: translate(0);
opacity: 0;
}
100% {
transform: translate(0);
opacity: 0;
}
}
.hack-btn:hover::before {
animation: glitch 1s infinite;
}
.hack-btn:hover::after {
animation: glitch 1s infinite reverse;
}
Совет:
Используйте transition
для простых и интерактивных эффектов, а animation
— для сложных, заранее спланированных анимаций.