Простой способ создать параллакс эффект js с библиотекой simpleParallax

JavaScript
24211 просмотров

Параллакс эффект на сайте — приём, при котором изображение движется медленнее страницы во время скролла, создавая иллюзию глубины. Сделать параллакс можно через CSS — свойство background-attachment: fixed , но оно не работает на iOS и применимо только к фоновым изображениям. SimpleParallax решает это через JavaScript: около 2 КБ в сжатом виде, никаких зависимостей, никакого jQuery. Главный козырь — работает напрямую с тегом <img> , не заставляя переносить изображения в background-image . Хотите добавить параллакс на сайт, не трогая вёрстку? Это оно.

SimpleParallax — параллакс эффект на JavaScript

Библиотека поддерживает <img> , <picture> , <video> , <svg> и другие HTML-элементы. SimpleParallax доступна на GitHub и поддерживается всеми современными браузерами. За вдохновением перед стартом — загляните в наш топ-10 сайтов с параллакс-эффектом.

Установка SimpleParallax

Самый быстрый способ — CDN. Добавьте скрипт перед закрывающим </body> :

<!-- Перед </body> -->
<script src="https://cdn.jsdelivr.net/npm/simple-parallax-js/dist/simpleParallax.min.js"></script>

Для проектов с npm или Yarn:

npm install simple-parallax-js
# или
yarn add simple-parallax-js

После установки через пакетный менеджер — импортируйте в нужном модуле:

// ES-модуль
import simpleParallax from 'simple-parallax-js';

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

Добавьте изображение в разметку и инициализируйте библиотеку буквально две строки кода:

const image = document.querySelector('.thumbnail');
new simpleParallax(image);
<!-- любое изображение на странице -->
<img class="thumbnail" src="image.jpg" alt="моя картинка">
Пример параллакс эффекта на JavaScript — simpleParallax по умолчанию

simpleParallax — по умолчанию, orientation: up

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

Чтобы применить параллакс сразу ко всем изображениям на странице — передайте результат querySelectorAll напрямую:

const images = document.querySelectorAll('img');
new simpleParallax(images);

JS параллакс: ориентация

Параметр orientation задаёт направление смещения изображения. Доступно восемь значений:

  • Основные: up , down , left , right
  • Диагональные: up left , up right , down left , down right

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

new simpleParallax(document.querySelector('.img-left'), {
    orientation: 'left'
});
new simpleParallax(document.querySelector('.img-right'), {
    orientation: 'right'
});
<img class="img-left"  src="image.jpg" alt="первая картинка">
<img class="img-right" src="image.jpg" alt="вторая картинка">
Параллакс эффект js — orientation left

orientation: left

Параллакс эффект js — orientation right

orientation: right

Масштаб (scale)

Swiper.js — слайдер для сайта: настройки и примеры
Swiper.js — как подключить и настроить слайдер на сайте

Параллакс работает за счёт масштабирования: библиотека увеличивает изображение, чтобы при смещении не было видно краёв. Параметр scale задаёт степень увеличения (по умолчанию 1.3 ). Чем выше значение — тем заметнее эффект, но и тем сильнее изображение «расплывается» при масштабировании. Для большинства задач хватает диапазона 1.3–1.6. Учитывайте это при подготовке картинок: при scale 1.3 изображение увеличивается на 30%, значит исходник должен быть соответствующего размера, иначе при увеличении появятся артефакты сжатия. Портретные изображения лучше работают с вертикальными ориентациями ( up , down ), а широкие горизонтальные — с боковыми ( left , right ).

new simpleParallax(image, {
    scale: 1.8
});
Параллакс на сайте — scale 1.8

scale: 1.8 — более выраженный эффект

Overflow — выход за пределы

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

new simpleParallax(image, {
    orientation: 'right',
    overflow: true
});
simpleParallax overflow true — js параллакс эффект

overflow: true, orientation: right

Плавность: delay и transition

Параметр delay добавляет инерцию: после остановки скролла изображение ещё ненадолго продолжает движение. Значение задаётся в секундах. В паре с transition — CSS-функцией плавности — можно добиться мягкого, почти физически достоверного скольжения:

new simpleParallax(image, {
    delay: 0.6,
    transition: 'cubic-bezier(0, 0, 0, 1)'
});
simpleParallax delay transition — плавный параллакс

delay: 0.6, transition: cubic-bezier(0, 0, 0, 1)

Значение delay 0.4–0.6 в паре с cubic-bezier(0, 0, 0, 1) — хорошая отправная точка. Больше 1 — начинает выглядеть тяжеловато, меньше 0.3 — эффект почти незаметен.

Все параметры SimpleParallax

  • orientation — направление смещения. По умолчанию: 'up' .
  • scale — коэффициент масштабирования изображения. По умолчанию: 1.3 .
  • overflow — разрешить выход изображения за пределы контейнера. По умолчанию: false .
  • delay — инерция в секундах: изображение продолжает движение после остановки скролла. По умолчанию: 0 .
  • transition — CSS transition-функция для параметра delay. По умолчанию: 'null' .
  • maxTransition — ограничение смещения в процентах (0 — без ограничений). По умолчанию: 0 .
  • customWrapper — CSS-селектор для обёртки, которую создаёт библиотека вокруг изображения.

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

Вам может быть интересно:
Swiper.js — слайдер для сайта: настройки и примеры
Swiper.js — как подключить и настроить слайдер на сайте
Что такое функция в программировании — типы и примеры на JavaScript и Python
Что такое функция в программировании?
Promise в JavaScript — промисы JS простыми словами для начинающих
Promise в JavaScript простыми словами — полное руководство
Анимация частиц и GLSL-шейдеры в PixiJS 8 — живой пример в браузере
Изучаем PixiJS. Часть 2 — продвинутая анимация и GLSL-шейдеры
Комментарии 0 Разные мнения приветствуются. Здесь можно спорить и обсуждать, но уважительно и без токсичности.
Отмена