Как мы работаем

Движение на сайте: что уместно, а что мешает

Сайт с движением выглядит современнее и дороже — это правда. Но движение ломает страницу тише, чем что-либо другое: ошибку в анимации не видно в консоли и не показывает ни одна панель. Человек просто не дочитывает и уходит, а мы видим «передумал».

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

Мерка

Движение отвечает на вопрос, а не украшает

Прежде чем что-то анимировать, мы отвечаем, на какой вопрос человека это движение отвечает. Вопросов ровно четыре, и других поводов нет.

  • «Что сейчас происходит?» — загрузка, отправка формы, бот печатает ответ. Здесь движение обязательно: без него человек нажимает вторую кнопку, решив, что первая не сработала.
  • «Что изменилось?» — открылось окно, появилась цена, раскрылся ответ. Короткий переход показывает связь между нажатием и результатом.
  • «Куда смотреть?» — появление блока при прокрутке. Одно появление, а не мигание по кругу.
  • «Живой ли это сайт?» — единственный чисто оформительский повод. Отвечает на него фон и первый экран, и никогда — текст, который читают.

Всё остальное движение работает против страницы. Ниже — по приёму на каждый вопрос, живьём.

Куда смотреть

Появление при прокрутке

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

Одно появление

Отыгралось — и осталось на месте. Повтор при каждой прокрутке вверх-вниз превращает страницу в мигалку.

Смещение на 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 ₽. Полный прайс — на странице услуг.

Дороже сайт делает не движение, а количество экранов, расчёты внутри и связки с чужими сервисами. Анимация занимает часы, а не дни, — при условии, что вёрстка уже готова и переделывать её не придётся.

Спрашивают

Вопросы, которые задают до заказа

Анимации не замедлят сайт?

Те, что описаны здесь, — нет: они двигают только положение и прозрачность, а это браузер умеет делать без пересчёта страницы. Замедляют сайт чужие библиотеки анимации весом в десятки килобайт и видео на первом экране. Ни того, ни другого мы не ставим.

А на старом телефоне это будет дёргаться?

Мы проверяем сайт на узком экране до сдачи. Именно поэтому анимируются только лёгкие свойства и нет постоянного движения: на новом телефоне разницы не видно, а на трёхлетнем — видно сразу.

Можно как на том сайте, который я видел?

Можно разобрать его вместе и взять приём. Чужую страницу мы не копируем: показанная заказчику чужая картинка становится обещанием, и дальше наша работа сравнивается с ней и проигрывает по мелочам, которых в ней не было.

Движение поможет получать больше заявок?

Само по себе — нет, и обещать этого мы не будем. Оно снимает сомнение «сайт сломался или так задумано» и показывает, что нажатие сработало. А число заявок решают оффер, цена и то, насколько просто оставить контакт.

Начните работать

Оставить заявку

Расскажите о задаче. Ответим в течение часа в рабочее время и назовём цену со сроком.

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

Этого достаточно, чтобы отправить заявку. Остальные поля — по желанию.

Добавить детали — задача, имя, город

Поможет быстрее рассчитать стоимость и предложить подходящий формат работы.

Заявка принята!
Ответим в течение часа в рабочее время.

Смотрите также