Utwórz projekt ↗
CSS / JS · KOD NA LICENCJI MIT

Delikatny parallax

Dodaj odrobinę głębi podczas przewijania.

Edytuj HTML, CSS i JS ↗ Otwórz konfigurator ↗

Gdzie wykorzystać ten przykład?

Elementy strony dopasowane do własnego projektu. Wariant „Delikatny parallax” możesz dopasować do kolorów i treści swojej strony.

Jak działa ten efekt?

HTML określa strukturę przykładu, CSS jego wygląd, a JavaScript — jeżeli występuje — odpowiada za interakcję. Podgląd pokazuje domyślne ustawienia, które możesz zmienić w edytorze.

Jak dodać go na stronę?

  1. Otwórz przykład w edytorze i podmień tekst oraz kolory.
  2. HTML wstaw w miejscu, w którym ma pojawić się element.
  3. CSS przenieś do arkusza stylów swojej strony. Reguły body z podglądu dopasuj do własnego układu.
  4. JavaScript uruchom po załadowaniu elementów HTML, na przykład przed zamknięciem </body>.
  5. Sprawdź działanie na telefonie, klawiaturą i z własną treścią.

Na co zwrócić uwagę?

Podmień treści i odnośniki. Kod działa w przeglądarce; formularze wymagają osobnej obsługi wysyłania po stronie serwera.

Co możesz zmienić w konfiguratorze?

Kolor akcentu. W edytorze kodu możesz dodatkowo zmienić całą strukturę i zachowanie przykładu.

Gotowy kod: Delikatny parallax

HTML

<div class="intro"><p>Przewiń, żeby zmienić perspektywę ↓</p></div><section class="scene"><span class="back" aria-hidden="true">◯</span><h2>Nowa perspektywa.</h2><span class="front" aria-hidden="true">✳</span></section><div class="intro">Trochę ruchu. Dużo głębi.</div>

CSS

*{box-sizing:border-box}body{margin:0;padding:35px 24px;background:#f4f5ef;color:#293322;font:15px/1.7 Arial,sans-serif;min-height:100vh;display:grid;place-items:center}button,input{font:inherit}button,a{touch-action:manipulation}button{cursor:pointer}button:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid #738858;outline-offset:4px}h2,h3,p{margin-top:0}[hidden]{display:none!important}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
body{display:block;padding:0;overflow-x:hidden}.intro{height:65vh;display:grid;place-items:center;padding:20px;color:#7b8d68;text-align:center}.scene{height:70vh;position:relative;display:grid;place-items:center;overflow:hidden;background:#e2e9d7}.scene h2{font-size:clamp(30px,6vw,62px);color:#e95b30;position:relative;z-index:1;text-align:center}.back{position:absolute;left:10%;top:0;font-size:190px;color:#b3c59d;line-height:1}.front{position:absolute;right:10%;top:50%;font-size:140px;color:#e95b30;opacity:.3;line-height:1}

JavaScript

const scene = document.querySelector('.scene');
const back = scene.querySelector('.back');
const front = scene.querySelector('.front');
const reduced = matchMedia('(prefers-reduced-motion: reduce)');
function parallax(){
    if(reduced.matches) return;
    const offset = innerHeight / 2 - scene.getBoundingClientRect().top;
    back.style.transform = 'translateY(' + offset * .18 + 'px)';
    front.style.transform = 'translateY(' + offset * -.12 + 'px)';
}
addEventListener('scroll', parallax, {passive:true});
addEventListener('resize', parallax);
parallax();

Podobne przykłady