- Параллакс на чистом CSS
- Теория
- Коррекция глубины
- Регулирование скорости слоя
- Создание разных участков параллакс эффекта
- Поддержка браузеров
- Потрясающие эффекты параллакса и скроллинга на основе CSS
- CSS Scrollbar
- CSS Snap Points
- Mouse Move Parallaxa
- 3D CSS Parallax Depth Effect
- CSS-Only Parallax Effect
- Pure CSS Parallax Scrolling
- Page Scroll Effects
- [Pure CSS] – One Page Scroll
- Image Cutout Parallax Effect
- Skew Scrolling Effect
- Pure CSS Scroll-Icon Animation
- Parallax Scrolling
- CSS Scroll Down Button
- Parallax Background
- stroll.js – CSS3 scroll effects
- CSS Horizontal Scrolling
- Page Top Parallax
- CSS Scroll Reveal Sections
- Красивые эффекты прокрутки для сайта
- Подборка курсов по верстке сайтов
- 24 CSS Scroll Effects
- Related Articles
- Author
- Links
- Made with
- About a code
- 3D CSS Scroll
- Author
- Links
- Made with
- About a code
- Horizontal Scroller Edge Fade Mask
- Author
- Links
- Made with
- About a code
- CSS Only Scrolling Shadow
- Author
- Links
- Made with
- About a code
- Full Screen Vertical Scroll Snap
- Author
- Links
- Made with
- About a code
- Overlapping Horizontal Slideshow Using position: sticky;
- Author
- Links
- Made with
- About a code
- Horizontal Scrolling with position: sticky
- Author
- Links
- Made with
- About a code
- Stacking Cards
- Author
- Links
- Made with
- About a code
- CSS Fixed Conic Fill
- Author
- Links
- Made with
- About a code
- Knockout Text Scroll Reveal
- Author
- Links
- Made with
- About a code
- CSS-Only Horizontal Parallax Gallery
- Author
- Links
- Made with
- About a code
- Overlapping Sections
- Author
- Links
- Made with
- About a code
- 12 nth Selectors
- Author
- Links
- Made with
- About a code
- Full Bleed Banner
- Author
- Links
- Made with
- About a code
- CSS Scroll-Behavior: Smooth
- Author
- Links
- Made with
- About the code
- CSS scroll-behavior, scroll-snap-type & mix-blend-mode
- Author
- Links
- Made with
- About the code
- CSS Scroll Reveal Sections
- Author
- Links
- Made with
- About the code
- Simple Scroll Animation
- Author
- Links
- Made with
- About the code
- Skew Scrolling Effect
- Author
- Links
- Made with
- About the code
- Background and Text Scroll Effect
- Author
- Links
- Made with
- About a code
- Scrolling Gradient
- Author
- Links
- Made with
- About the code
- One Page Scroll
- Author
- Links
- Made with
- About a code
- Dual Color Text Scroll Effect
- Author
- Links
- Made with
- About the code
- Intersection Observer
- Author
- Links
- Made with
- About the code
- Scrolling Half by Half
- Author
- Links
- Made with
- About a code
- CSS Background Change On Scroll
Параллакс на чистом CSS
В этой статье показывается, как с помощью CSS трансформаций и махинаций с 3d сделать параллакс-эффект на сайте на чистом CSS.
Параллакс почти всегда создаётся с помощью JavaScript и, чаще всего, получается ресурсоёмким, из-за вешания листенеров на событие скролла, модификации DOM напрямую и срабатывания ненужных перерисовок и перестановок. Всё это происходит асинхронно с потоком, в котором браузер рендерит страницу, из-за чего скролл начинает подтормаживать, а картинка рваться на части. Более правильные реализации параллакса отслеживают скролл и используют отложенные обновления DOM с помощью requestAnimationFrame . Получается качественной другой результат, но почему бы вообще не избавиться от JavaScript?
Перенос параллакс эффекта в CSS спасает от проблем с производительностью и лишних манипуляций, позволяя браузеру самому всё регулировать за счёт аппаратного ускорения. В результате, почти все ресурсоёмкие процессы обрабатываются напрямую браузерным движком. Частота кадров (FPS) остаётся стабильной, а картинка становится плавной. Плюс, можно сразу комбинировать параллакс с другими CSS фишками — media queries или supports. Отзывчивый параллакс — каково?
Теория
Прежде, чем погрузиться в понимание работы этого механизма, создадим необходимую разметку:
.parallax < perspective: 1px; height: 100vh; overflow-x: hidden; overflow-y: auto; >.parallax__layer < position: absolute; top: 0; right: 0; bottom: 0; left: 0; >.parallax__layer--base < transform: translateZ(0); >.parallax__layer--back
Вся магия происходит в классе parallax . Определение свойств стилей height и perspective установит перспективу элемента в его центре, создав фиксированный 3D вьюпорт. overflow-y: auto позволит контенту внутри элемента нормально скроллиться, при этом потомки элемента будут отрисовываться относительно фиксированной перспективы. В этом и заключается ключ к созданию параллакс эффекта.
Далее, класс parallax__layer . Как и следует из имени, он определяет слой контента, к которому будет применен параллакс эффект. Элемент с этим классом выдирается из общего потока контента и позиционируется так, чтобы заполнить свой контейнер.
Наконец, у нас есть классы-модификаторы parallax__layer—base и parallax__layer—back . Они нужны, чтобы регулировать скорость скролла параллакс элементов, смещая их по оси Z (удаляя или приближая к вьюпорту). Для краткости я сделал всего две скорости скролла — позже мы добавим еще несколько.
Коррекция глубины
Так как параллакс эффект создаётся за счёт 3D преобразований, смещение элемента по оси Z имеет побочный эффект — размеры элемента меняются, в зависимости от того, ближе или дальше он к вьюпорту. Чтобы исправить это, нам нужно применять scale() трансформацию, чтобы элемент отрисовывался в своём изначальном размере:
Коэффицент скейла можно посчитать по формуле 1 + (translateZ * -1) / perspective) . Например, если перспектива вьюпорта задана как 1px и мы смещаем элемент на -2px по оси Z, то коэффицентом будет scale(3) .
Регулирование скорости слоя
Скорость слоя регулируется комбинацией значений перспективы и смещения по Z. Элементы с отрицательными значениями Z будут скроллиться медленнее, чем элементы с положительными значениями. Чем больше разность значения от 0, тем явнее параллакс эффект
( т.е. translateZ(-10px) будет скроллиться медленнее, чем translateZ(-1px) ).
Создание разных участков параллакс эффекта
Предыдущие примеры демонстрировали базовую технику использования простого контента, но ведь большинство параллакс сайтов делят страницу на разные участки с разными эффектами. Вот как можно реализовать это в нашем методе.
Во-первых, нам нужен элемент parallax__group , чтобы сгруппировать наши слои вместе:
для него CSS будет выглядеть так:
В этом примере я хочу, чтобы каждая группа заполнила вьюпорт, поэтому я задаю height: 100vh , хотя, если нужно, число для каждой группы может быть разным. transform-style: preserve-3d не даёт браузеру сделать плоскими элементы с parallax__layer , а position: relative позволяет дочерним parallax__layer элементам позиционироваться относительно их группы.
Важное правило, которое нужно помнить — при группировке элементов мы не можем обрезать контент внутри группы, тк overflow: hidden у элемента parallax__group сломает весь параллакс эффект. Необрезанный контент приведёт к тому, что дочерние элементы будут выступать за рамки. Поэтому нужно пошаманить с значением z-index у группы, чтобы быть уверенным, что контент будет корректно прятаться и показываться по мере того, как пользователь будет скроллить сайт.
Нет никаких жестких или быстрых правил по поводу работы со слоями и разные методы подразумевают разную реализацию. Но, чтобы упростить отладку позиционирования слоёв, можно применить простую трансформацию групповых элементов:
Взгляните на следующий пример и обратите внимание на галочку debug !
Поддержка браузеров
- Firefox, Safari, Opera и Chrome — все поддерживают эти эффекты
- Firefox работает, но у него есть небольшая проблема с выравниванием.
- IE пока не поддерживает preserve-3d (на подходе), поэтому параллакс работать не будет. Но это нормально, тк всё равно нужно дизайнить так, чтобы контент был адекватным и без параллакса – Ну, progressive enhancement и всё такое!
Статья — перевод (оригинал на blog.keithclark.co.uk — «Pure CSS parallax scrolling websites»)
Потрясающие эффекты параллакса и скроллинга на основе CSS
Добавление CSS-эффектов – это отличный способ сделать сайт более интересным для пользователей. В этой статье мы собрали лучшие эффекты параллакса и скроллинга.
CSS Scrollbar
CSS Snap Points
Mouse Move Parallaxa
3D CSS Parallax Depth Effect
CSS-Only Parallax Effect
Pure CSS Parallax Scrolling
Page Scroll Effects
[Pure CSS] – One Page Scroll
Image Cutout Parallax Effect
Skew Scrolling Effect
Pure CSS Scroll-Icon Animation
Parallax Scrolling
CSS Scroll Down Button
Parallax Background
stroll.js – CSS3 scroll effects
CSS Horizontal Scrolling
Page Top Parallax
CSS Scroll Reveal Sections
Красивые эффекты прокрутки для сайта
Чтобы создать на сайте красивый эффект прокрутки, важно выбрать правильную анимацию. Один из перечисленных выше CSS-сниппетов может стать именно тем эффектом, который будет потрясающе смотреться на вашем сайте.
Подборка курсов по верстке сайтов
4.4 GeekBrains еще 10 курсов
4.4 Нетология еще 5 курсов
4.4 Skillbox еще 11 курсов
24 CSS Scroll Effects
Collection of hand-picked free HTML and CSS scroll effect code examples from Codepen, GitHub and other resources. Update of May 2021 collection. 8 new items.
Related Articles
Author
Links
Made with
About a code
3D CSS Scroll
Compatible browsers: Chrome, Edge, Firefox, Opera, Safari
Author
Links
Made with
About a code
Horizontal Scroller Edge Fade Mask
Compatible browsers: Chrome, Edge, Firefox, Opera, Safari
Author
Links
Made with
About a code
CSS Only Scrolling Shadow
Compatible browsers: Chrome, Edge, Firefox, Opera, Safari
Author
Links
Made with
About a code
Full Screen Vertical Scroll Snap
Compatible browsers: Chrome, Edge, Firefox, Opera, Safari
Author
Links
Made with
About a code
Overlapping Horizontal Slideshow Using position: sticky;
Compatible browsers: Chrome, Edge, Firefox, Opera, Safari
Author
Links
Made with
About a code
Horizontal Scrolling with position: sticky
Compatible browsers: Chrome, Edge, Firefox, Opera, Safari
Author
Links
Made with
About a code
Stacking Cards
Compatible browsers: Chrome, Edge, Firefox, Opera, Safari
Author
Links
Made with
About a code
CSS Fixed Conic Fill
Scroll contextual conic gradient text. Text mask revealing «fixed to viewport» background gradient.
Compatible browsers: Chrome, Edge, Firefox, Opera, Safari
Author
Links
Made with
About a code
Knockout Text Scroll Reveal
Compatible browsers: Chrome, Edge, Firefox, Opera, Safari
Author
Links
Made with
About a code
CSS-Only Horizontal Parallax Gallery
A few beautiful photos from Paris in this experimental gallery. Uses transforms together with perspective property for parallax.
Compatible browsers: Chrome, Edge, Firefox, Opera, Safari
Author
Links
Made with
About a code
Overlapping Sections
Overlapping section with position sticky.
Compatible browsers: Chrome, Edge, Firefox, Opera, Safari
Author
Links
Made with
About a code
12 nth Selectors
Compatible browsers: Chrome, Edge, Firefox, Opera, Safari
Author
Links
Made with
About a code
Full Bleed Banner
Compatible browsers: Chrome, Edge, Firefox, Opera, Safari
Author
Links
Made with
About a code
CSS Scroll-Behavior: Smooth
Compatible browsers: Chrome, Edge, Firefox, Opera, Safari
Author
Links
Made with
About the code
CSS scroll-behavior, scroll-snap-type & mix-blend-mode
The scroll-behavior and scroll-snap-type CSS properties are amazing tools for creating landing pages without using js. Unfortunately, these properties are not yet supported in all browsers.
Compatible browsers: Chrome, Firefox, Opera, Safari
Author
Links
Made with
About the code
CSS Scroll Reveal Sections
Use the clip-path property to create fixed position hero sections.
Compatible browsers: Chrome, Firefox, Opera, Safari
Author
Links
Made with
About the code
Simple Scroll Animation
Simple scroll animation in HTML, CSS and JS.
Compatible browsers: Chrome, Edge, Firefox, Opera, Safari
Author
Links
Made with
About the code
Skew Scrolling Effect
Skew scrolling effect in HTML, CSS and JS.
Compatible browsers: Chrome, Firefox, Opera, Safari
Author
Links
Made with
About the code
Background and Text Scroll Effect
Super quick idea for a text reveal effect on scroll.
Compatible browsers: Chrome, Firefox, Opera, Safari
Author
Links
Made with
About a code
Scrolling Gradient
A background gradient that adapts to scroll position.
Compatible browsers: Chrome, Edge, Firefox, Opera, Safari
Author
Links
Made with
About the code
One Page Scroll
One page scroll. Not a single line of JavaScript!
Compatible browsers: Chrome, Edge, Firefox, Opera, Safari
Author
Links
Made with
About a code
Dual Color Text Scroll Effect
Compatible browsers: Chrome, Edge, Firefox, Opera, Safari
Author
Links
Made with
About the code
Intersection Observer
API that can be used to understand the visibility and position of DOM elements relative to a containing element or to the top-level viewport. The position is delivered asynchronously and is useful for understanding the visibility of elements and implementing pre-loading and deferred loading of DOM content.
Compatible browsers: Chrome, Firefox, Opera, Safari
Author
Links
Made with
About the code
Scrolling Half by Half
Scrolling half by half in pure CSS.
Compatible browsers: Chrome, Firefox, Opera, Safari
Author
Links
Made with
About a code
CSS Background Change On Scroll
Fixed element appears to change color when entering different sections. Uses duplicated elements for every section. Now with blend-mode magic for added effect.
Compatible browsers: Chrome, Edge, Firefox, Opera, Safari