Efekt parallax w czystym CSS

Poradnik efektu parallax w CSS

Efekt parallax w czystym CSS: perspective i animacje sterowane przewijaniem

Zbuduj parallax z CSS perspective i translateZ albo z animacjami sterowanymi przewijaniem, zobacz obliczenia głębi na żywo i poprawnie obsłuż telefony oraz ograniczony ruch.

Parallax w czystym CSS ma dwie niezawodne metody. Metoda perspective tworzy kontener przewijania z perspective i odsuwa warstwy tła do tyłu przez translateZ, a następnie powiększa je o (perspective minus z) podzielone przez perspective. Nowsza metoda wiąże animację translate z animation-timeline: view(). Obie powinny się wyłączać przy prefers-reduced-motion.

Trzy sposoby na efekt parallax

Większość poradników o parallax kończy się na background-attachment: fixed, które iPhone obsługuje tylko częściowo. Ten poradnik pokazuje dwie metody, które naprawdę animują warstwy, wyjaśnia obliczenia skali, aby warstwy się nie kurczyły, i daje mały skrypt zapasowy oraz obsługę ograniczonego ruchu, dzięki której efekt nie przyprawi nikogo o mdłości.

Najczęściej zadawane pytania

Dlaczego moja warstwa z translateZ wygląda na mniejszą?

Odsunięcie elementu od widza ujemnym translateZ zmniejsza go, dokładnie jak odległy obiekt. Dodaj scale((p - z) / p), aby przywrócić jego rozmiar. Przy perspective: 1px i translateZ(-2px) to scale(3).

Czy background-attachment: fixed działa na telefonach?

Nie niezawodnie. caniuse podaje tylko częściowe wsparcie w iOS Safari i zaznacza, że większość urządzeń mobilnych wolno aktualizuje stałe tło po przewinięciu. Traktuj to jako dodatek tylko na komputery i użyj jednej z metod z transform, gdy efekt ma znaczenie.

Czy parallax szkodzi dostępności?

Duży ruch powiązany z przewijaniem może powodować zawroty głowy lub nudności u osób z zaburzeniami błędnika. Respektuj systemowe ustawienie ograniczenia ruchu przez media query prefers-reduced-motion i pokazuj warstwy statycznie, gdy jest włączone.

Które przeglądarki obsługują parallax sterowany przewijaniem?

Według stanu na październik 2026 caniuse podaje animation-timeline w Chrome i Edge od 115, Safari od 26 i Firefox od 161. Starsze przeglądarki po prostu pomijają animację, więc strona nadal czyta się poprawnie bez efektu.

Jak działa metoda perspective

Telefony i starsze przeglądarki

Metoda 1: perspective i translateZ

Dwuwarstwowa sekcja hero we własnym kontenerze przewijania

Przewijaj wewnątrz ramki. Warstwa w paski jest w translateZ(-2px) i przeskalowana 3 razy, więc porusza się z jedną trzecią prędkości przewijania.

Metoda 2: sterowanie przewijaniem z view()

Obraz, który dryfuje, gdy jego sekcja przechodzi przez ekran

Animacja działa tylko tam, gdzie animation-timeline jest obsługiwane, a czytelnik nie prosił o ograniczenie ruchu.

Rozwiązanie zapasowe w JavaScript

Mały parallax z requestAnimationFrame

Używany tylko wtedy, gdy brakuje animacji sterowanych przewijaniem. Listener jest pasywny, a praca odbywa się raz na klatkę.

Edytor głębi

Głębia tylnej warstwy (translateZ): {n}px

Potrzebna skala: {v}

Prędkość tylnej warstwy: {v} przewijania

Podgląd parallax, przewijaj wewnątrz

Tekst z przodu porusza się z pełną prędkością

Przewijaj dalej, aby zobaczyć, jak tylna warstwa zostaje w tyle.

Twoje urządzenie prosi o ograniczenie ruchu, więc podgląd pozostaje nieruchomy.

Kopiuj CSS

Zacznij za darmo · Bez karty kredytowej

Powiązane: Poradniki

Produkt

Dla kogo

Funkcje

Zasoby

Firma

Mapa strony