Hack Frontend Community

CSS-свойства для создания анимаций и плавных переходов

Основные CSS-свойства для анимаций и переходов

CSS предоставляет два подхода для создания визуальных эффектов:

  1. Плавные переходы (transition) — для простых эффектов (при наведении, фокусе и т. д.)
  2. Анимации (@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 — для сложных, заранее спланированных анимаций.