Как сделать параллакс эффект

Обновлено: 06.07.2024

Всем привет. Сегодня расскажу вам о небольшом скрипте для создания простого parallax эффекта.

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

Что такое параллакс эффект на сайте

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

Как сделать параллакс эффект на сайте

Итак, первым делом подключаем библиотеку jquery. Как обычно, между тегами head:

Теперь, нужно скачать подключить скрипт Simple Parallax Scrolling. Я рекомендую использовать сразу сжатую версию, так как дополнительных настроек внутри скрипта делать не понадобится:

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

Я создал шапку сайта (class="head") и добавил 2 обязательных атрибута:

Обратите внимание, что картинка не кладется в шапку при помощи тега img, а задается непосредственно в атрибутом в том контейнере, в котором хотим реализовать parallax.

На этом, в принципе, можно заканчивать, но еще пару слов:

  • Если в dive, в котором хотим реализовать параллакс эффект нет других элементов, то необходимо задать ему высоту, иначе ничего не увидите.
  • В случае использования не адаптивного дизайна, можно задать ширину и высоту изображения прямо в html при помощи атрибутов naturalWidth и naturalHeight.
  • Можно двигать изображения при помощи атрибута data-position. Это аналог background-position в css.

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

На сегодня - все. Вот так просто можно реализовать простой вариант параллакс эффекта. Пока.


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

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

До CSS3, не зная точную высо т у своего футера, добиться этого эффекта было очень трудно. И хотя мы и называем его “прилипающий футер”, вы не можете просто прописать ему свойство position: sticky , так как это может блокировать контент.

На сегодняшний день, наиболее подходящим решением является использование Flexbox. Суть в том, чтобы использовать свойство flex-grow в div , содержащем основной контент страницы. В приведенном ниже примере я использую тег main .

flex-grow определяет, какую часть свободного пространства может занять контейнер, в соотношении с другими контейнерами. При значении 0 вы вообще ничего не увидите, поэтому нужно установить значение 1 или выше. В приведенном ниже примере я использовал свойство flex: auto , которое по умолчанию устанавливает значение flex-grow равное 1 .

Чтобы избежать “нежелательного поведения”, мы добавим свойство flex-shrink: 0 в тег footer . flex-shrink определяет фактор сжатия flex-элемента. Flex-элементы будут заполнять контейнер в зависимости от значения flex-shrink , когда стандартная ширина flex-элементов шире, чем flex-контейнер.

Обновление: Вышеупомянутое решение может некорректно работать в Internet Explorer 11. Я протестировал свой код в IE11, но он работал вполне нормально.

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

Для достижения данного эффекта, нам потребуется обернуть обычный тег img в тег div в HTML-коде.

Затем в CSS нам нужно установить значения width и height для родительского элемента и убедиться, что значение свойства overflow установлено на hidden . Далее вы сможете применить любой вид анимации, посредством свойства transform , к img в теге div .

Если вы ищите быстрый способ, как применить “темный режим” к своему веб-сайту, попробуйте использовать фильтры invert и hue-rotate .

Значения свойства filter: invert() могут варьироваться от 0 до 1 , где 1 меняет белый цвет на черный.

filter: hue-rotate() меняет цвет изображения в зависимости от заданного угла поворота в цветовом круге. Значение задается в градусах от 0deg до 360deg .

Соединив эти свойства в теге body , вы сможете быстро опробовать темную версию своего сайта (Чтобы фильтры подействовали на фон, вы должны задать ему цвет).

Используя эти настройки, мы можем мгновенно преобразить домашнюю страницу Google:


В Chrome или Firefox нажмите F12, чтобы открыть инструменты разработчика. Оттуда вы можете редактировать CSS любого сайта.

Чтобы создать пользовательские маркеры для неупорядоченного списка, вы можете использовать свойство content вместе с псевдоэлементом ::before .

Бонус: Навигационная цепочка или “хлебные крошки”

Существует множество полезных способов использовать свойство content , и я не удержался, добавив еще один.

Поскольку слэш и другие символы, используемые для разделения “хлебных крошек”, являются чисто стилистическими, имеет смысл определить их в CSS. Как и многие примеры в этой статье, этот эффект опирается на псевдокласс last-child — доступный только в CSS3:

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

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

Пример с использованием только CSS

Обязательным свойством для простейшей версии этого эффекта является background-attachment: fixed , фиксирующее расположение фонового изображения внутри окна просмотра (viewport). (Противоположный эффект достигается с помощью background-attachment: scroll ).

Как и в случае с “прилипающим футером”, до CSS3 было очень сложно кадрировать изображение. Сейчас же у нас есть два свойства, которые упрощают этот процесс: object-fit и object-position . Вместе они позволяют изменять размеры изображения, не влияя на соотношение его сторон.

Да, всегда есть возможность кадрировать ваше изображение в фоторедакторе, но большим преимуществом кадрирования в браузере является то, что это можно сделать при помощи анимации.

Чтобы продемонстрировать этот прием как можно проще, нижеприведенный пример запускает эффект при помощи тега . Таким образом, мы сможем использовать псевдокласс :checked в CSS и нам не потребуется никакой JavaScript:

Если у вас есть опыт использования Adobe Photoshop, тогда вы, вероятно, знаете, насколько разнообразными могут быть режимы наложения для создания неповторимых и интересных эффектов. Но знаете ли вы, что большинство из этих режимов наложения также доступны в CSS?

Вот так выглядит домашняя страница Medium, если у изображений выставлено свойство background-color на светло-голубой (lightblue) и blend-mode на difference :


Свойство mix-blend-mode определяет режим смешивания цветов выбранного элемента с нижележащими слоями. Так, например, вы можете создавать подобные эффекты, используя mix-blend-mode с color-dodge и цвет фона lightsalmon .


Примечание: В настоящее время в Chrome 58+ имеется ошибка, из-за которой mix-blend-mode не будет отображаться на элементах, расположенных в тегах или , у которых не задан цвет. Проще всего в этой ситуации назначить этим тегам свойство background-color: white .

CSS Grid и Flexbox значительно упростили процесс создания различных типов адаптивных макетов, а также позволили нам легко центрировать элементы по вертикали, что прежде было очень сложно.

Тем не менее, есть тип макета, к которому эти инструменты плохо подходят. Данный макет используется Pinterest — в нем вертикальное расположение каждого элемента изменяется в зависимости от высоты элемента над ним.


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

Чтобы это сработало, вам нужно обернуть свои элементы в div и присвоить этому блоку свойства column-width и column-gap .

Затем, чтобы предотвратить разделение элементов между двумя колонками, добавьте column-break-inside: avoid отдельным элементам.

Приведенный выше пример также отлично иллюстрирует псевдокласс :not() . Он идет вместе с псевдоклассом :hover , поэтому все элементы, кроме того, на который наведен курсор, угасают.

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

Было трудно составить список из 8 CSS приемов, так как были и другие пункты, которые я бы хотел добавить. К ним относятся такие функции, как keyframe анимация, scroll-snapping (умная прокрутка), более сложная панель навигации, 3D-эффекты, CSS-оптимизация веб-страницы для печати.

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

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

Способы сделать параллакс эффект

Если для создания параллакса используются фоновые изображения в блоках с разной вложенностью, то в этом случае удобно использовать свойство background-position для смещения фоновых изображений, но если в эффекте параллакса замешаны абсолютно-позиционируемые слои, то в этом случае придется оперировать свойствами их положения left, top и т.д. Но гораздо удобнее использовать возможности CSS3 и свойство transform, которое позволяет избежать некоторые ненужные расчеты, особенно при масштабировании страницы сайта. К тому же, transform позволяет сделать множество других крутых эффектов совместно с параллаксом, но это уже тема для отдельной статьи. Ну, а пока рассмотрим два примера создания эффекта: с фоновыми изображениями и с блоками.

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

Параллакс фона

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

Давайте рассмотрим всё на конкретном примере горного пейзажа со скачущим всадником.

Параллакс фона. Клик по сцене вызывает эффект фокусировки с размытием.

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

Фоновые изображения PNG для параллакс эффекта

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

Атрибут data-landscape является триггером, с помощью которого скрипт определяет, что вот именно для этих блоков нужно менять позиционирование фона, то есть свойство background-position . В последнем блоке с атрибутом data-rider никаких изменений не производится, а там просто присутствует анимированное GIF-изображение с всадником.

В CSS для основного контейнера должно быть указано позиционирование отличное от static, чтобы можно было одинаково расположить и растянуть внутри него внутренние блоки с изображениями фонов. Для вложенных блоков в основной контейнер (.contain > div) потребуется указать абсолютное позиционирование, чтобы блоки смогли наложиться друг поверх друга. Помимо этого, для этих же блоков нужно указать линейный переход для свойств, которые мы будем изменять с помощью JavaScript достигая эффекта параллакса.

transition: background-position linear;

Также для внутренних блоков потребуется поставить и свойство transition-duration: inherit , то есть наследуемый, поскольку это свойство будет более грамотно устанавливать посредством скрипта родителю, ведь длительность CSS-перехода должна быть равна задержке следующей итерации изменения координат, что из скрипта контролировать проще.

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

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

Завершается этот скрипт отсрочкой рекурсивного вызова следующей итерации данной функции.

Ну и конечно же, запустить выполнение нужно отдельным вызовом функции.

Параллакс по движению мыши

Давайте теперь рассмотрим, как сделать эффект параллакса, зависящий от движения мыши. Здесь же я разберу другой способ реализации параллакса основанный на свойстве CSS3 transform с функцией translate() . Именно это свойство будет меняться в зависимости от координат положения курсора мыши в окне браузера , заключенных в свойствах события мыши — clientX и clientY.

Параллакс по движению мыши. Клик по сцене вызывает эффект фокусировки.

Также атрибут data-size используется как селектор, чтобы указать соответствующие размеры блоков для имитации пространственной перспективы.

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

Как вы можете видеть, JavaScript сценарий параллакса по движению мыши достаточно простой. Прежде всего следует получить объекты, с которыми мы будем работать: контейнер и блоки с облаками.

Внутри него записан сценарий, который будет срабатывать при каждом смещение курсора, а именно, пересчитывать положение облаков в процентные значения (процентами проще оперировать, так как они не зависят от размеров окна), которые находятся в прямой зависимости от значений полодения курсора event.clientX и event.clientY .

. а далее, с помощью прохода по коллекции облаков, назначать им новые значения положения в CSS функции translate() , соответственно слову указанному в атрибуте data-size . Для каждого вида блоков-облаков добавляется свой делитель, для того, чтобы притормозить или ускорить движение.

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

Автор: Сергей Бунин. Дата публикации: 28 мая 2016 . Категория: Обработка фотографий в фотошопе.

В этом уроке мы рассмотрим, как можно в программе Photoshop CC 2015 или в любой другой версии, самостоятельно выполнить эффект ПАРАЛЛАКС – изменение видимого положения объекта относительно удалённого фона.

Проще это эффект приближения (наезда) или отдаления (отката).

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

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

2

Девочку на фотографии надо отделить от фона, чтобы получить два слоя, отдельно фон и отдельно девочку.

Для этого применяя инструмент быстрое выделение (клавиша W) или любой другой удобный для Вас, выделяем нашу героиню.

3

Теперь необходимо перенести нашу девочку на новый слой. Для этого нажимаем комбинацию клавиш Ctrl+J. Получаем новый слой с девочкой и прозрачным фоном.

4

5

6

7

8

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

9

˗ Ширина 1920 пикс.,

˗ Высота 1080 пикс.,

˗ Разрешение 72 пикс/дюйм.

10

11

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

12

13

На палитре слоев пиктограммы с изображением приобретают следующий вид.

14

Выделяем два слоя фон и модель, для этого щелкнув ЛКМ по слою с девочкой, зажимаем клавишу Shift и еще раз щелкаем ЛКМ по слою с фоном.

15

Перенесем оба слоя изображения на новый документ. Для этого переместим курсор мышки на палитру слоев (на один из слоев), его вид со стрелки поменяется на изображение кисти руки с выставленным указательным пальцем. Зажав ЛКМ, тащим на название созданного нового документа. При появлении в окне просмотра изображения нового документа, не отпуская ЛКМ, опускаем наши слои на это изображение.

16

В момент, когда полупрозрачное изображение слоев окажется на изображении нового документа отпускаем ЛКМ.

17

18

19

20

21

22

На панели отображаются все наши слои с элементами управления и регулировок.

23

Переходим сначала к слою с изображением фона. Раскрываем его, нажав на стрелочку слева от названия.

24

25

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

26

27

Переходим к слою с девочкой, также его раскрываем, нажав на стрелочку слева от названия.

28

29

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

30

31

32

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

33

34

После выполнения экспорта видео

35

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

36

Если Вы не хотите пропустить интересные уроки по обработке фотографий - подпишитесь на рассылку.

Читайте также: