Birthday Sale! Up to 40% off unlimited courses & creative assets Birthday Sale! Save up to 40%!
Advertisement
  1. Web Design
  2. Parallax Scrolling
Webdesign

Создание веб-сайта с эффектом параллакс-прокрутки при помощи Stellar.js

by
Difficulty:IntermediateLength:LongLanguages:

Russian (Pусский) translation by AlexBioJS (you can also view the original English article)

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


Введение

Эффект параллакс-прокрутки был популярен с того времени, как сайты вроде Better World Nike добавили его на своих страницах несколько лет назад. Что касается интерфейсов, то эффект параллакса начали  использовать где-то с 1980-х, когда им впервые воспользовались в заголовках видео-игр и в дальнейшем в самих играх. Совсем недавно он стал появляться в веб-интерфейсах – примером может послужить silverbackapp, где этот эффект был использован в качестве части заголовка.

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


Пара... Что?

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

Так что же именно из себя представляет эффект параллакса? Хорошо, это, пожалуй, одна из вещей, которую ваши клиенты упоминают, когда вслепую говорят «Я хочу, чтобы в моем сайте был HTML5». Каждый раз, когда клиенты просят меня сделать сайт с "HTML5", мне приходится специально у них уточнять, что они понимают под HTML5 – на данный момент похоже, что это просто модное словечко, которое клиенты продолжают говорить мне, в действительности не понимая его смысла.

Так что же, это HTML5? Безусловно, HTML5 действительно играет роль в реализации эффекта параллакс-прокрутки, однако это не только HTML5, для него также используется та или иная форма Javascript, например jQuery, и вы не смогли бы его создать без чуточки CSS3.

Само слово parallax происходит от Греческого παραλλαξη (parallaxis), что означает изменение. Объекты, расположенные ближе к наблюдателю, обладают большим параллаксом, чем те, что расположены вдалеке. Это означает, что нам может казаться, что объекты, расположенные ближе к нам, движутся быстрее тех, что расположены на заднем плане.

За счет наслоения множества планов и объектов (например изображений) и последующего изменения скорости их движения создается ощущение глубины восприятия (трехмерности).


Параллакс в действии

Взгляните на некоторые примеры, демонстрирующие эффекты параллакса.

Saucony
Lois Jeans
Nike Jump man
Bomb girls
Tokiolab
Intacto

Каждый веб-сайт рассказывает историю

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

Wieden+Kennedy (W&K), разработчики веб-сайта Better World Nike, разделяют это мнение:

По нашему мнению, технологии независимы от общего представления. Наша основная задача заключалась в том, чтобы создать замечательный интерфейс, повествующий историю. – Wieden+Kennedy (W&K)


Как будет работать наш сайт

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

Ниже показано, как будет выглядеть структура папок для нашего веб-сайта:

parallax website folder structure

Используемые плагины

Stellar.js

Чтобы мне легче было достичь цели руководства, я использую Stellar.js, плагин jQuery, разработанный Mark Dalgleish, при помощи которого облегчается создание веб-сайтов с эффектом параллакс-прокрутки. Чтобы помочь вам в этом, имеются и другие плагины, которые я перечислил внизу этого руководства. Я решил использовать Stellar.js, поскольку с его помощью довольно просто создать веб-сайт с эффектом параллакс-прокрутки и, хотя этого и не показано в этом руководстве, его можно оптимизировать для работы на платформах интеллектных устройств вроде iOS.

Waypoints.js

Также я буду использовать плагин jQuery Waypoints.js, разработанный Caleb Troughton. Это еще один плагин jQuery, при помощи которого функция выполняется каждый раз, когда вы прокручиваете страницу к элементу. За счет этого становится возможным указать при помощи навигационного меню на веб-сайте, на каком слайде мы находимся в соответствии с позицией полосы прокрутки.

jQuery Easing

jQuery easing – плагин, разработанный GSGD, который предоставляет продвинутые варианты сглаживания (* от англ. еasing; изменение анимации с течением времени). Мы будем его использовать для добавления изящного сглаживания при переходе от одного слайда к другому.


HTML-разметка

Сначала мы добавляем в нашем index.html HTML5 doctype (* тип документа) и затем создаем раздел head. В нем содержится CSS Reset (* таблица стилей для сбрасывания значений свойств стилей, применяемых браузером по умолчанию), за которой следует наша таблица стилей 'styles.css'. Затем мы добавляем библиотеку jQuery, после которой идет наш собственный jQuery-файл 'js.js'. Далее следуют три плагина: 'jquery.stellar.min.js','waypoints.min.js' и 'jquery.easing.1.3.js'.

Следующий элемент в нашем HTML-документе – изображение логотипа Envato, которое остается в неизменной фиксированной позиции везде на сайте. Для этого элемента мы добавляем класс 'envatologo', чтобы у нас была возможность задать его позиционирование позднее, при написании кода CSS.

Слайды

Для четырех слайдов используется та же самая разметка:

Мы добавляем класс 'slide', правила которого будут использованы в качестве общего стилевого оформления для всех слайдов. Далее каждому слайду добавляется id 'slide', за которым следует номер, то есть 'slide1'. Мы используем атрибут HTML5 Data и называем его 'data-slide'. За счет этого мы сможем получить слайд при помощи jQuery. Добавляется еще один атрибут HTML5 Data 'data-stellar-background-ratio'. Он предназначен для плагина jQuery stellar.js и сообщает ему, с каким соотношением скорости должен прокручиваться элемент.

Соотношение задается относительно обычной скорости прокрутки, так что при соотношении, равном 0.5, элемент прокручивался бы вдвое медленнее, при соотношении, равном 1, скорость была бы той же, и при соотношении, равном 2, элемент прокручивался бы вдвое быстрее.

У всех слайдов, за исключением четвертого, имеется кнопка, при помощи которой можно будет прокрутить страницу к следующему слайду. Для нее мы добавляем атрибут 'data-slide' со значением номера следующего слайда. Это делается для того, чтобы в кнопке была информация о том, какой слайд следующий, благодаря чему мы бы могли передать это значение jQuery. В большинстве слайдов также имеется строчный элемент span с классом 'slideno' – просто крупная текстовая версия числа слайда, отображаемая в нижнем левом углу большинства слайдов. Он мог бы быть также использован для добавления заголовков.

В третьем и четвертом слайдах мы также добавляем кое-какие элементы для добавления изображений в div с классом 'slide'. Эти изображения придадут реалистичность создаваемому нами эффекту. Мы оборачиваем их в div с классом 'wrapper', который будет отцентрирован и в качестве значения ширины которого устанавливается значение '960px'; мы делаем это только для того, чтобы убедиться, что он нормально отображается на десктопных мониторах всех размеров.

Для каждого изображения добавлен атрибут 'data-stellar-ratio'. Опять-таки он предназначен для плагина stellar.js и сообщает ему, с каким соотношением скорости нам необходимо прокручивать элемент.


Код CSS

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

Первое, что нам необходимо выполнить в коде CSS, – подключить шрифт BEBAS при помощи @font-face. Затем мы добавляем его для html, чтобы задать шрифт для сайта. Также мы задаем в качестве значений ширины и высоты html и body 100%. За счет этого наши слайды смогут занять всю ширину и высоту экрана пользователя.

Навигационное меню

Для главного навигационного меню в качестве значения position задано 'fixed', чтобы оно оставалось на том же самом месте везде на сайте. Мы задаем для него отступ сверху величиной 20px, чтобы добавить немного пространства выше него, и устанавливаем в качестве значения z-index 1, чтобы гарантировать, что меню располагается на верхнем слое сайта.

Стилевое оформление для элемента списка представляет из себя просто стилевое оформление для текста и границы вдоль нижней части элемента, которая выступает в качестве подчеркивания. В качестве ширины этого элемента задано 53px. Также добавлен переход, благодаря которому выполняется анимация элемента из его нормального состояния в состояние, когда поверх него перемещен курсор. Я воспользовался здесь префиксом -webkit-, просто чтобы длина кода оставалась небольшой, однако в полном исходном коде, который вы можете скачать, перейдя по ссылке выше, указаны префиксы всех вендоров.

Для состояния элемента, когда поверх него перемещен курсор, используются те же правила, что и для класса 'active'; по сути это правила просто для увеличения размера шрифта и ширины элемента. Класс 'active' используется jQuery для задания стилевого оформления соответственного слайда, который находится в окне просмотра.

Для логотипа Еnvato заданы кое-какие стилевые правила для позиционирования просто для того, чтобы гарантировать, что он остается в центре экрана. Как и в случае с навигационным меню, для логотипа в качестве значения свойства z-index задано '1', чтобы гарантировать то, что он располагается на верхнем слое.

Теперь мы переходим к стилевому оформлению для непосредственно слайдов. Мы добавляем для них свойство background-attachment со значением 'fixed'. При помощи свойства background-attachment определяется, находится ли фоновое изображение в фиксированной позиции или же прокручивается с остальной частью страницы, так что оно оказывается полезным для фоновых изображений (например того, что использовано в четвертом слайде). В нашем примере мы воспользовались обоями (* фоновое изображение (или видеофрагмент), хранящееся в .ВМР-файле), созданными Philipp Seiffert, которые вы можете скачать здесь. В качестве значения свойства position слайда мы установили 'relative'. Это сделано для того, чтобы мы могли задать абсолютное позиционирование для элементов с классами 'slideno' и 'button' относительно положения слайда, а не собственно документа.

Свойство box shadow используется исключительно для того, чтобы приукрасить наш сайт, и за счет него добавляется изящная падающая тень к верхней вставке каждого слайда.

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

Стилевое оформление для каждого отдельного слайда относительно простое и каждый раз задается согласно одному и тому же шаблону. Для первого слайда в качестве значения цвета фона задано '#5c9900'. Для второго слайда также установлено некоторое значение цвета фона. Также второй слайд содержит изображения, и мы можем получить каждое при помощи селектора CSS nth-child(n). Его можно описать следующим образом:

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

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

Для третьего слайда стилевое оформление задается тем же образом, как и для второго.

Четвертый слайд немного отличается от предыдущих тем, что не содержит каких-либо элементов для добавления изображений или окрашенного фона, а в нем используется фоновое изображение. Также мы задали для него свойство background-size со значением cover. За счет него собственно делается так, чтобы фоновое изображение занимало все окно просмотра и изменяло свой размер в зависимости от размера окна браузера. Также мы добавили в последнем слайде, для которого задали стилевое оформление, строку с текстом и установили для содержащего ее элемента класс 'parallaxbg'.


Код jQuery

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


Пара советов

Create a Parallax Scrolling Website using Stellarjs envato

Если вы взгляните на третий слайд нашего примера, то заметите 3D-пузырьки. Я добавил небольшое размытие по Гауссу (* результат размывания изображения в соответствии с функцией Гаусса. Широко используется для снижения шума и детализации) для некоторых из них, главным образом для тех, что располагаются на самом переднем и заднем планах. Эффект, создаваемый за счет совмещения их с четко сфокусированными пузырьками, дополняет ощущение глубины, создаваемое эффектом параллакса. Это то, на что вам, вероятно, необходимо обратить внимание при попытке создать на вашем сайте хорошее ощущение глубины.

На многих сайтах, использующих этот эффект, действительно используется довольно много изображений, поэтому убедитесь, что сжали их насколько это возможно (без ущерба для качества). Если после сжатия на их загрузку по-прежнему уходит довольно много времени, то подумайте о добавлении предварительного загрузчика (* загрузчик; по сути это то, что вы видите на экране, пока остальная часть контента страницы все еще загружается. Часто представляет из себя простую или сложную анимацию, которая используется для того, чтобы пользователи оставались вовлеченными, пока завершается выполнение операций на стороне сервера) на ваш сайт.


Заключение

Эффект параллакс-прокрутки – один из наиболее любимых за последнее время, и люди постоянно делают что-то новое при помощи него. Сегодня в этом руководстве я показал вам, как создать простейший веб-сайт, на котором используется эффект параллакс-прокрутки. Демоверсия, которую я вам сегодня показал, представляет из себя относительно простой сайт, созданный с учебными целями. Тем, кто собирается создать сайт с этим эффектом, советую потратить больше времени на разработку общего представления и истории, поскольку именно за счет этого сайт становится уникальным и таким, которым хочется делиться и от просмотра которого пользователи действительно получают удовольствие. Суть состоит в том, как использовать этот эффект разумно, а не просто в том, чтобы использовать его ради галочки.

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


Ссылки на посты и ресурсы для дальнейшего изучения темы

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.