Движение на сайте: что уместно, а что мешает
Сайт с движением выглядит современнее и дороже — это правда. Но движение ломает страницу тише, чем что-либо другое: ошибку в анимации не видно в консоли и не показывает ни одна панель. Человек просто не дочитывает и уходит, а мы видим «передумал».
Поэтому здесь не витрина эффектов, а разбор: каждый приём показан живьём и рядом написано, где он помогает и где вредит. Сама эта страница собрана по своим же правилам — её можно открыть на слабом телефоне и прочитать.
Движение отвечает на вопрос, а не украшает
Прежде чем что-то анимировать, мы отвечаем, на какой вопрос человека это движение отвечает. Вопросов ровно четыре, и других поводов нет.
- «Что сейчас происходит?» — загрузка, отправка формы, бот печатает ответ. Здесь движение обязательно: без него человек нажимает вторую кнопку, решив, что первая не сработала.
- «Что изменилось?» — открылось окно, появилась цена, раскрылся ответ. Короткий переход показывает связь между нажатием и результатом.
- «Куда смотреть?» — появление блока при прокрутке. Одно появление, а не мигание по кругу.
- «Живой ли это сайт?» — единственный чисто оформительский повод. Отвечает на него фон и первый экран, и никогда — текст, который читают.
Всё остальное движение работает против страницы. Ниже — по приёму на каждый вопрос, живьём.
Появление при прокрутке
Блок выезжает снизу один раз, когда доходит до экрана. Не по таймеру: человек прокручивает в своём темпе, и анимация, запущенная по часам, у одного проигрывается до того, как он долистал, а у другого после.
Одно появление
Отыгралось — и осталось на месте. Повтор при каждой прокрутке вверх-вниз превращает страницу в мигалку.
Смещение на 16 пикселей
Короткое движение читается как «блок встал на место». Длинный выезд через пол-экрана читается как медленный сайт.
Задержка лесенкой
Карточки появляются по очереди с разницей в 80 мс. Больше — человек успевает заметить ожидание и начинает ждать.
Чем это сделано: IntersectionObserver ставит
блоку класс, а дальше работает обычный CSS-переход. Библиотеки для этого
не нужны — лишние 30 килобайт ради одного эффекта человек оплачивает
своим трафиком.
Отклик кнопки и карточки
Самое недооценённое движение на сайте. Кнопка, которая никак не отзывается на нажатие, читается как сломанная — и человек жмёт ещё раз, отправляя вторую заявку.
Карточка приподнимается
На 4 пикселя, за 200 мс. Этого хватает, чтобы понять: сюда можно нажать.
Правило, которое чаще всего нарушают: на телефоне наведения не существует. Всё, что видно только при наведении мышью, для половины посетителей не существует вовсе — поэтому наведение усиливает подсказку, но никогда не является единственной.
Единственное движение, которому можно крутиться бесконечно
Загрузчик, точки «печатает», точка «на связи». Они крутятся, пока идёт дело, и останавливаются, когда оно кончилось. Это не украшение, а ответ на вопрос «я жду или уже нет».
Крутится, пока идёт отправка. Остановился — значит ответ пришёл.
Три точки в переписке. Снимаются с первым словом ответа, а не висят «для красоты».
Чего мы не ставим и почему
Каждый запрет здесь куплен на своей ошибке, а не взят из чужой статьи про хороший вкус.
- Бесконечного движения рядом с текстом. Мигающая линия под строкой и полоса, бегущая по карточке, мешают читать и греют телефон всё время, пока человек на странице. Такое движение либо ограничивается числом повторов, либо снимается.
- Анимации всего, кроме
transformиopacity. Остальное заставляет браузер пересчитывать разметку каждый кадр: на новом телефоне незаметно, на трёхлетнем — рывками. - Движения, которое нельзя выключить. При системной настройке «меньше движения» анимации отключаются — для части людей это не вкус, а тошнота и головная боль.
- Заставки на входе. Человек пришёл за ответом, а не смотреть, как разъезжается логотип. Три секунды заставки — это три секунды, за которые закрывают вкладку.
- Чужих готовых наборов вроде shadcn/ui. Они требуют React, Tailwind и сборщик — три вещи, которых в наших сайтах нет намеренно. Приём оттуда взять можно, зависимость — нет.
Движение проверяется прогоном, а не на глаз
Неудачную анимацию не видно в консоли и не показывает ни один отчёт —
поэтому у неё свой список приёмки. Перед сдачей сайта мы проверяем
число бесконечных анимаций, что анимируются только разрешённые
свойства, что will-change стоит точечно и что движение
выключается по системной настройке.
И отдельно — страница просто открывается на телефоне и читается. Замер видит число повторов, а «мешает читать» видит только человек.
Отдельной цены за движение у нас нет
Движение входит в работу над сайтом и не считается строкой сверху. Иначе получается торговля воздухом: заказчик платит за «анимации», а какие именно и зачем — решает исполнитель.
Цены на сами сайты: лендинг «Старт» — От 35 000 ₽, сайт-визитка — От 35 000 ₽, лендинг «Продажи» с воронкой и калькулятором — От 65 000 ₽, сайт на 5–10 страниц — От 90 000 ₽. Полный прайс — на странице услуг.
Дороже сайт делает не движение, а количество экранов, расчёты внутри и связки с чужими сервисами. Анимация занимает часы, а не дни, — при условии, что вёрстка уже готова и переделывать её не придётся.
Вопросы, которые задают до заказа
Анимации не замедлят сайт?
Те, что описаны здесь, — нет: они двигают только положение и прозрачность, а это браузер умеет делать без пересчёта страницы. Замедляют сайт чужие библиотеки анимации весом в десятки килобайт и видео на первом экране. Ни того, ни другого мы не ставим.
А на старом телефоне это будет дёргаться?
Мы проверяем сайт на узком экране до сдачи. Именно поэтому анимируются только лёгкие свойства и нет постоянного движения: на новом телефоне разницы не видно, а на трёхлетнем — видно сразу.
Можно как на том сайте, который я видел?
Можно разобрать его вместе и взять приём. Чужую страницу мы не копируем: показанная заказчику чужая картинка становится обещанием, и дальше наша работа сравнивается с ней и проигрывает по мелочам, которых в ней не было.
Движение поможет получать больше заявок?
Само по себе — нет, и обещать этого мы не будем. Оно снимает сомнение «сайт сломался или так задумано» и показывает, что нажатие сработало. А число заявок решают оффер, цена и то, насколько просто оставить контакт.
Оставить заявку
Расскажите о задаче. Ответим в течение часа в рабочее время и назовём цену со сроком.
Посмотрим задачу и скажем ориентир по цене и сроку. Без обязательств и навязчивых звонков: ответим тем же способом, каким вы написали.