Как создать эффект параллакса с помощью CSS?

Как создать эффект параллакса с помощью CSS?

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

Смотреть пример

В веб-дизайне проще всего достичь эффекта параллакса использованием плагина jQuery. Однако, это связано с некоторыми неудобствами. Этот плагин чаще всего способствует возникновению проблем со scroll-ингом объектов. Чтобы прокрутка была плавной, JavaScript должен обрабатывать тонны событий (а это влечет за собой проблемы с отображением; стоит хорошо подумать, прежде чем использовать его). Для того, чтобы слои перемещались, и при этом перемещались плавно, нужно провести массу вычислений и пересчетов относительно размещения объектов и элементов, а это, в свою очередь, вынуждает проводить огромное количество манипуляций с DOM.

Короче говоря: параллакс на базе JavaScript гарантированно влечет за собой проблемы с плавным скроллингом сайта.

background-position: fixed спешит на помощь!

Немногие знают, что создать эффект параллакса можно с помощью CSS. Смотрите, к примеру:

Пример использования эффекта параллакса на Codeopen

Для получения эффекта параллакса, фоновые изображения должны быть размещены в различных элементах. Эти элементы дополнительно должны быть определены как background-attachment: fixed. Используя background-attachment, поведение и расположение любого фонового изображения возможно будет изменить.

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

Всё становится гораздо интереснее, когда мы используем background-attachment в свойстве fixed. fixed означает, что фоновые изображения не фиксируются относительно элементов, а закреплены относительно области просмотра. То есть, независимо от прокрутки изображение остается на своей позиции.

Всё это приводит к созданию прекрасного параллакс-эффекта.

Давайте очень кратко рассмотрим, как это работает, на практике:

Быстрая проверка кода относительно поддержки работы браузерами на MDN показывает практически глобальную совместимость. Кроме того, он поддерживается IE9 и Android 2.1.

Подведем итог

Лично я отдаю предпочтение CSS перед JavaScript при создании параллакс-эффекта, и, кажется, теперь легко понять, почему. Нет никаких дополнительных логических задач и манипуляций с DOM, — это очень существенный плюс, согласитесь. Помнить нужно только одно.
Даже работая над созданием параллакса в CSS, остается масса задач для браузера. background-attachment: fixed – нужно делать дополнительную прорисовку для браузера, которая может снизить плавность скроллинга и очень уменьшить ваш FPS. Поэтому не забывайте следить за счетчиком FPS, например, в Chrome, — это значительно облегчит вашу работу.


Оставить комментарий