Назад к блогу

Анимировали сайт крупного российского вендора Аванпост

Этот проект нам принесли ребята из креативного агентства Zapal. Их клиент Аванпост больше 15 лет помогает работать предприятиям защищённо. В 2024 они готовились к обновлению стиля и сайта — дизайн Zapal взяли на себя, а для разработки подключили нас на проект.

Нам нужно было разработать главную страницу сайта по готовым макетам по сложной дизайн-концепции в космическом стиле со множеством анимаций

Клиент хотел обновить старый сайт и сделать акцент на главной странице

Именно главная страница рассказывает пользователям о компании и продуктах. Причём делает это с помощью погружения в космическую тематику.

Старая версия выглядела скучновато и совсем без анимаций:

С нашей стороны нужно было:

  • Разработать главную страницу по готовым макетам;
  • Реализовать анимации в каждом блоке;
  • Оптимизировать страницу.

Было важно подобрать такие инструменты реализации, которые не сломают придуманную дизайнером концепцию и погрузят пользователя сайта в атмосферу космоса

Дизайнеры из Zapal передали нам макеты и моушен-ролик с анимациями

По опыту мы знаем, что макеты могут быть не идеальны, поэтому в первую очередь анализируем материалы, которые нам передают. Ошибки и недочёты в макетах встречаются довольно часто. Иногда они возникают из-за незнания технических особенностей или банального отсутствия такого опыта — дизайнер мало взаимодействовал с разработчиками и ещё не набил руку.

Обычно мы подмечаем ошибки в макетах сразу и говорим про это дизайнеру

Если у него появляются сомнения или вопросы по поводу технических моментов, то выходим на созвон и на примерах объясняем что к чему и где нужно поправить.

В этот раз мы обратили внимание на такие моменты:

  • Высота в макетах слишком большая — за основу взяли просто разрешение экрана, а не высоту в браузере.
  • Заголовки со сложными ромбовидными градиентами, которые при экспорте становятся радиальными и не выглядят так, как в макете.
  • Много блюров, которые мы не сможем повторить технически. Их очень сложно анимировать + количество повлияет на производительность.

Эти пункты было важно отловить на старте и исправить, чтобы потом по итогам разработки не получилось неудачи в цепочке «ожидание → реальность».

Начали работать с блюрами, но быстро заметили, что они лагали и по-разному отображались с браузерах

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

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

Оптимизировать сияние звезды было сложно, но мы справились

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

Выбирали карточки для блока с новостями, чтобы на всех устройствах они выглядели одинаково хорошо

На сайте блок состоит из нескольких карточек с текстом, которые дизайнер решил нарисовать по-своему.

На десктопе карточки выглядели одним образом, на планшете — уже другим

Проблема в том, что на одном устройстве расположение карточек не работало бы так же, как на других

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

В итоге, мы остановились на втором варианте. Получили классный результат, который устроил и дизайнера, и нас.

Итог нашей работы с карточками — оставили один блок с визуалом, а другие расположили рядом

Работа с анимациями или «Круто, давай всё по новой»

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

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

Главная мысль — информация с сайта должна доноситься быстро и понятно

Если же переборщить с анимациями и креативом, пользователь ничего не поймёт и закроет сайт. А ещё анимации было сложно оптимизировать должным образом из-за большого количества последовательностей.

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

Теперь перед нами стояла другая сложность — словить баланс между качеством и производительностью

При этом не перегрузить пользователя спецэффектами и отдавать результат за несколько секунд.

С этого момента мы быстро перестроили работу с макетами

Для более правильной реализации концепции в дизайн пришлось вносить изменения по ходу работы и начали мы с появления элементов. На сайте есть несколько элементов и самые важные из них — тексты и картинки с космическими кораблями. По макету они должны появляться друг за другом, последовательно. Мы попробовали повторить это решение, но заметили, что скорость получается низкая.

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

Раньше: элементы на странице появлялись друг за другом, что тормозило анимацию и пользователь дольше оставался на одном блоке. Цепочка получалась длинная.

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

Изменения в процессе помогли нам продвинуться в проекте и сделать сайт более быстрым

Что по итогу: Lottie, PixiJS, WebGL

Мы реализовали анимации с помощью Lottie, PixiJS и WebGL.

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

Внимание на фон:

Сначала мы планировали анимировать круги с помощью Lottie

В нашем случае, когда все анимации привязаны к скроллу, это оказалось бесполезно. В Lottie мы не можем управлять отдельными анимациями, только общей. То есть, в результате нас ждут 2 варианта: круг может только крутиться или только меняться по скроллу. В других случаях — они остаются статичными.

Для реализации пришлось бы работать с кругами по очереди — выключать одну анимацию и включать вторую

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

Мы не хотели, чтобы пользователи видели резкий переход в анимации кругов, поэтому выбрали PixiJS

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

Для реализации мы взяли те же круги, но работали с ними вместе

Закинули их в Canvas с помощью PixiJS, чтобы спокойно анимировать. Затем перевели на WebGL, чтобы отобразить точки и линии круга в виде привлекательных 3D’шек. Это позволило улучшить производительность кругов и сайт меньше лагал. В итоге, получили плавный и красивый результат:

Ещё одна механика, на которую потратили много времени — таймлайны кругов и конфликты между ними

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

Дело в том, что одна и та же анимация привязана к разным триггерам. Например, пользователь скролит страницу, а элементы не двигаются так, как задумано. В нашем случае, таймлайны кругов конфликтовали с нативным скроллом, но мы нашли решение: подключили lenis-scroll — инструмент, который улучшает взаимодействие пользователя с помощью плавных и естественных анимаций прокрутки.

Теперь всё работает плавно и круги нигде не застревают

В итоге, мы анимировали главную страницу

Рады, что добились на проекте:

  • Плавных анимаций без задержек
  • Быстрых страниц, которые летают, как и корабли на сайте
  • Результата, который был заложен в концепцию и дизайнерские решения
  • Довольного клиента

Работа над этим проектом в очередной раз показала нам, что ключик к успешному результату — это коммуникация

Без диалога и готовности слушать и помогать друг другу решать стоящие на пути задачи, проект такого уровня сложности вряд ли бы получился. Рады, что ребята из Zapal были настолько вовлечены в процесс и открыты к нашим предложениям.

Наша команда, в свою очередь, докручивала каждую анимацию до победного и делала так, чтобы проект воплотился в жизнь именно таким, каким его задумали на старте. Все большие молодцы!