Сайты с ИИ2026-08-107 минНатали Анарбаева

Как сделать анимацию сайта: CSS без тормозов

Как сделать анимацию сайта: CSS без тормозов

Сделать анимацию сайта проще всего средствами CSS: задайте начальное и конечное состояние, продолжительность и момент запуска. Для первого результата выберите один элемент, например кнопку или карточку, и не анимируйте весь экран. Рабочая анимация должна объяснять действие, не мешать чтению и отключаться при системной настройке уменьшения движения.

Когда анимация помогает, а когда мешает

Анимация оправдана, если показывает связь между действием и результатом: кнопка подтверждает нажатие, карточка раскрывается, сообщение появляется после отправки формы. Постоянное движение фона, текста и нескольких блоков одновременно не помогает выполнить задачу и отвлекает от содержания.

  • Используйте короткое движение для обратной связи после действия.
  • Показывайте появление блока там, где человек ожидает результат.
  • Не прячьте обязательную информацию до завершения эффекта.
  • Не запускайте звук или видео вместе с декоративной анимацией.
  • Оставьте интерфейс рабочим, даже если анимация отключена.

Сначала проверьте действие без анимации. Если без движения непонятно, что произошло, исправьте текст, состояние кнопки или структуру, а эффект добавляйте после.

Минимальная CSS-анимация по шагам

CSS Animations связывает набор ключевых кадров с элементом через свойства animation-*. MDN описывает этот механизм и синтаксис @keyframes в официальном руководстве.

  1. Выберите один элемент и одно изменение, например мягкое появление карточки.
  2. Добавьте элементу отдельный класс, чтобы не затронуть остальные блоки.
  3. Опишите состояния в @keyframes.
  4. Задайте длительность, функцию скорости и число повторов.
  5. Откройте страницу, перезагрузите её и проверьте начало и конец эффекта.
  6. Повторите проверку на узком экране и при медленном устройстве.
.card-enter {
  animation: card-in 320ms ease-out both;
}

@keyframes card-in {
  from { opacity: 0; transform: translateY(12px); }
  to { opacity: 1; transform: translateY(0); }
}

В примере меняются opacity и transform. Элемент остаётся в разметке, а эффект заканчивается в обычном состоянии. Не ставьте бесконечное повторение для карточек и текста. Если вы только собираете структуру страницы, сначала настройте шапку и адаптивное меню, затем добавляйте движение.

Теория понятна, дальше нужен ваш сайт, а не пример из статьи. На бесплатном вебинаре страницу собирают с нуля и сразу публикуют в интернете.

Собрать свой сайт

Как запускать эффект в нужный момент

Анимация может стартовать при загрузке, наведении, фокусе, нажатии или появлении элемента в области просмотра. Для кнопки наведение не должно быть единственным сигналом: на сенсорном экране его нет, а клавиатурному пользователю нужен стиль :focus-visible.

.button { transition: transform 160ms ease, background-color 160ms ease; }
.button:hover,
.button:focus-visible { transform: translateY(-2px); }
.button:active { transform: translateY(0); }

Для появления блоков при прокрутке сначала спросите, нужен ли эффект вообще. Уже опубликованная инструкция по прокрутке и якорям помогает отделить навигацию от декоративного движения. Не скрывайте содержимое навсегда, если JavaScript не запустился.

По теме: Как сделать сайт-каталог сайтов: структура и проверка в 2026

Учитываем настройку уменьшения движения

Медиавыражение prefers-reduced-motion сообщает, что человек включил уменьшение необязательного движения в системе. MDN указывает, что значение reduce следует использовать для удаления или замены несущественных эффектов. Поддержка и пример приведены в справке MDN.

@media (prefers-reduced-motion: reduce) {
  .card-enter { animation: none; }
  .button { transition: none; }
  html { scroll-behavior: auto; }
}

Это не запасной дизайн, а обязательная ветка проверки. В ней информация должна оставаться видимой, кнопки работать, а раскрывающиеся панели доходить до конечного состояния без ожидания.

Проверяем результат перед публикацией

Приёмка должна охватывать смысл, управление и скорость. Пройдите страницу мышью, клавиатурой и пальцем. Затем включите в системе уменьшение движения и повторите тот же путь.

  • Эффект связан с конкретным действием или появлением результата.
  • После завершения элемент остаётся читаемым и кликабельным.
  • Клавиша Tab показывает фокус, а Enter или пробел выполняют действие.
  • На телефоне движение не вызывает горизонтальную прокрутку.
  • При prefers-reduced-motion: reduce необязательное движение исчезает.
  • При медленной загрузке контент не остаётся прозрачным.
  • Несколько быстрых нажатий не запускают конфликтующие состояния.

Самое долгое в своём сайте это первый запуск: страницы, домен, публикация. На бесплатном вебинаре по вайбкодингу весь путь проходят вживую, от идеи, описанной словами, до работающего адреса. Опыт в программировании не нужен.

Пройти путь до сайта

Диагностика частых сбоев

Если анимация не запускается, сначала проверьте, назначен ли класс и совпадает ли имя @keyframes. Если элемент прыгает после эффекта, конечное состояние отличается от обычных CSS-правил. Если страница тормозит, временно отключите все эффекты и возвращайте их по одному, наблюдая за проблемным элементом.

  • Элемент мигает при загрузке: задайте безопасное обычное состояние и не делайте контент зависимым от JavaScript.
  • Анимация повторяется бесконечно: уберите infinite, если повтор не несёт информации.
  • Кнопка уезжает: не меняйте размеры и отступы в активном состоянии, используйте небольшое преобразование.
  • На мобильном эффект обрезан: проверьте overflow у родительских блоков.
  • После возврата на вкладку всё проигрывается снова: запускайте эффект по явному состоянию, а не по каждому рендеру.

По теме: Как сделать женский сайт без стереотипов в 2026 году

Когда CSS-анимации недостаточно

Для простого появления, подсветки и изменения состояния CSS достаточно. Сложная интерактивная сцена, синхронизация со звуком или монтаж кадров потребуют JavaScript либо специализированного инструмента. Сначала зафиксируйте сценарий и ограничение производительности, иначе сложность вырастет быстрее пользы.

Если цель состоит в общей проверке удобства, используйте чек-лист хорошего сайта. Он помогает увидеть, не стала ли эффектная деталь важнее понятного текста, скорости и мобильной версии.

Частые вопросы

Можно ли сделать анимацию без JavaScript?

Да. CSS подходит для появления, переходов, наведения и многих циклических эффектов. JavaScript нужен, когда запуск зависит от сложного состояния или данных.

Почему анимация дёргается?

Проверьте одновременные изменения размеров, большие изображения и несколько эффектов на одном элементе. Упростите движение и возвращайте свойства по одному.

Нужно ли анимировать первый экран?

Нет. Первый экран должен сразу показать смысл и действие. Добавляйте эффект только если он не задерживает чтение и не скрывает основной элемент.

Как проверить уменьшение движения?

Включите соответствующую настройку доступности в операционной системе, перезагрузите страницу и повторите основной сценарий.

Анимация становится полезной, когда она встроена в понятный сценарий сайта. На воркшопе вы соберёте страницу с ИИ и проверите её на компьютере и телефоне.

Собрать страницу
Разборы, кейсы и фишки вайбкодинга каждую неделю в телеграм-канале «Яков вайбкодит».
Первый проект с ИИ: живой разбор, бесплатно Занять место