CSS scroll snap: karuzele i sekcje pełnoekranowe

Poradnik CSS scroll snap

CSS scroll snap: karuzele, sekcje pełnoekranowe i plac zabaw na żywo

Wypróbuj każdą wartość scroll-snap-type, scroll-snap-align i scroll-snap-stop w działającym podglądzie, a potem skopiuj karuzelę w czystym CSS i sekcje pełnoekranowe, które pozostają dostępne.

Scroll snap sprawia, że przewijane pole zatrzymuje się na wybranych elementach podrzędnych, a nie w dowolnym miejscu. Ustaw scroll-snap-type: x mandatory (albo y, albo proximity) na kontenerze przewijania, a potem scroll-snap-align: start, center lub end na każdym elemencie podrzędnym. Dodaj scroll-padding dla stałych headerów i scroll-snap-stop: always, aby zatrzymywać się na każdym elemencie.

Właściwości scroll snap w skrócie

Scroll snap kiedyś wymagał biblioteki do karuzel. Dziś kilka linii CSS daje Ci przesuwane karty, galerię ze stronami lub sekcje pełnoekranowe, a przewijanie z bezwładnością i obsługę klawiatury załatwia przeglądarka. Użyj placu zabaw, aby poczuć różnicę między każdą wartością, zanim skopiujesz jakikolwiek kod.

Najczęściej zadawane pytania

Czym różni się mandatory od proximity?

Przy mandatory kontener zawsze zatrzymuje się na pozycji przyciągania, gdy przewijanie się kończy. Przy proximity przyciąga tylko wtedy, gdy przewijanie kończy się blisko takiej pozycji, co pozwala ludziom swobodnie czytać pomiędzy. proximity jest domyślne, gdy podajesz tylko oś.

Dlaczego scroll snap nie działa?

Typowe przyczyny to: scroll-snap-type jest na elementach podrzędnych zamiast na przewijanym rodzicu, rodzic tak naprawdę się nie przelewa (ustaw overflow-x: auto i stały rozmiar) albo elementy podrzędne nie mają scroll-snap-align. Przy przyciąganiu na poziomie strony kontenerem jest html, a nie body.

Jak sprawić, by stały header nie zasłaniał przyciąganych sekcji?

Ustaw scroll-padding-top na kontenerze przewijania równe wysokości headera, na przykład html { scroll-padding-top: 64px; }. Przyciągane sekcje i skoki do kotwic zatrzymują się wtedy pod headerem, a nie za nim.

Czy mogę zbudować karuzelę bez JavaScript?

Tak, jeśli chodzi o przesuwanie i przewijanie: wiersz flex z overflow-x: auto i przyciąganiem x mandatory to działająca karuzela. Kropki pokazujące bieżący slajd, autoodtwarzanie i zapętlenie nadal wymagają odrobiny skryptu.

Czy CSS scroll snap jest obsługiwany wszędzie?

scroll-snap-type ma status Baseline widely available od 2022 roku w Chrome, Edge, Firefox i Safari, a scroll-snap-stop od lipca 2022. Możesz go używać bez rozwiązania awaryjnego: przeglądarki bez obsługi po prostu przewijają swobodnie.

Karuzele, z których da się naprawdę korzystać

Sekcje pełnoekranowe bez pułapki

Karuzela kart w czystym CSS

Pozioma karuzela z wystającą następną kartą

Przesuń palcem, przewiń w bok lub kliknij w środku i użyj klawiszy strzałek. Każda karta ma 80 procent szerokości, więc następną widać przy krawędzi.

Sekcje pełnoekranowe

Pionowe sekcje przyciągane pod stałym headerem

Przyciąganie jest na html, czyli elemencie przewijającym stronę. scroll-padding-top trzyma sekcje z dala od headera o wysokości 64px, a proximity zapobiega uwięzieniu w długich sekcjach.

Przyciski następny i poprzedni

Sterowanie karuzelą przez scrollBy

Przeglądarka kończy ruch na najbliższym punkcie przyciągania, więc przewinięcie o szerokość jednej karty trafia dokładnie na następną kartę.

Plac zabaw scroll snap

Oś

Rygor

Wyrównanie slajdu

Zatrzymuj się na każdym slajdzie

Podgląd scroll snap, przewiń lub użyj klawiszy strzałek

Slajd {n}

Kopiuj CSS

Zacznij za darmo · Bez karty kredytowej

Powiązane: Poradniki

Produkt

Dla kogo

Funkcje

Zasoby

Firma

Mapa strony