Data publikacji: 20 marca 2025 r.
Od wersji 135 przeglądarki Chrome możesz korzystać z funkcji ze specyfikacji CSS Overflow 5, które zostały zaprojektowane z myślą o przewijaniu i karuzeli.
W tym poście omawiamy różne sposoby przewijania i używania karuzeli, które wykorzystują te nowe funkcje i nie wymagają JavaScriptu. Obejrzyj ten film i zobacz, co możesz teraz osiągnąć.
Film pokazuje harmonię przycisków przewijania, znaczników przewijania, animacji napędzanej przez przewijanie, zapytań scroll-state(), :has(), siatki, kotwic i wiele innych.
Jeszcze bardziej imponująca jest historia dotycząca ułatwień dostępu.
Sprawdzone metody dotyczące karuzeli są obsługiwane przez przeglądarkę dzięki współpracy zespołów ds. rozwoju i dostępności. Trudno byłoby stworzyć bardziej czytelny autoprezenter niż ten.

Poznaj ::scroll-button()
i ::scroll-marker()
Karuzela to obszar przewijania z maksymalnie 2 dodatkami interfejsu użytkownika: przyciskami i znacznikami.
W pierwszej wersji funkcji karuzeli CSS przyciski i znaczniki są tworzone z CSS. Przeglądarka umieszcza elementy jako elementy siostrzane z odpowiednimi rolami w odpowiedniej kolejności na kartach i zachowuje ich stan. Ułatwia to tworzenie karuzeli z dostępnością.
Przyciski przewijania
Elementy<button>
przewijania oferowane przez przeglądarkę, które umożliwiają dostęp do treści i przewijanie 85% obszaru przewijania po naciśnięciu.Markery przewijania
Elementy nawigacji<a>
z pamięcią stanu, które ułatwiają dostęp do treści żądanego elementu w obszarze przewijania.
W dalszej części tego artykułu pokazujemy, jak utworzyć karuzel, korzystając z tych nowych funkcji.
Zacznij od scrollera
Przyciski i oznaczenia możesz dodawać do dowolnej przewijanej części witryny.
Ten kod CSS tworzy podstawową obszar przewijania, który będzie używany w kolejnych krokach do dodawania przycisków i znaczników. W przypadku karuzeli nie jest wymagane blokowanie przewijania, ale w tym przykładzie jest ono używane. Karuzele działają też w przypadku pasków przewijania w pionie i dwukierunkowych.
.carousel {
overflow-x: auto;
scroll-snap-type: x mandatory;
> li {
scroll-snap-align: center;
}
}
Dodawanie przycisków przewijania za pomocą ::scroll-button()
W zależności od systemu operacyjnego przy suwakach mogą już być widoczne przyciski przewijania. Wbudowane przyciski paska przewijania zazwyczaj przesuwają obszar przewijania, a przyciski CSS – 85% obszaru przewijania.
W przypadku karuzeli, które wyświetlają tylko jeden element o pełnej szerokości z punktami zablokowania przewijania, będzie to wyglądać jak wyświetlanie poszczególnych elementów. W przypadku długich list elementów, na których widocznych jest więcej niż 1 element, przewija się prawie całą stronę.
Aby dodać przyciski przewijania za pomocą CSS:
- Dodaj je jak inne pseudoelementy, za pomocą selektora:
.carousel::scroll-button(right)
dla przycisku przewijania w prawo. - Podaj
content
z opcjonalnym tekstem alternatywnym ułatwiającym dostępność.
Przeglądarka utworzy prawdziwe przyciski z Twoimi treściami jako elementy siostrzane suwaka. Teraz możesz dowolnie rozmieścić te przyciski, nadać im styl lub anchor()
. Ten kod CSS tworzy 2 przyciski: jeden do przewijania w lewo, a drugi do przewijania w prawo.
.carousel {
…
&::scroll-button(left) {
content: "⬅" / "Scroll Left";
}
&::scroll-button(right) {
content: "⮕" / "Scroll Right";
}
&::scroll-button(*)::focus-visible {
outline-offset: 5px;
}
}
Dodawanie znaczników przewijania za pomocą ::scroll-marker()
Podobnie jak suwak, znaczniki przewijania CSS mogą wskazywać rozmiar karuzeli, a także umożliwiać szybkie przewijanie do początku lub końca. Marker przewijania CSS różni się od paska przewijania, ponieważ każdy marker to link, który może reprezentować dowolny element w scrollerze.
Przykładem takiego rozróżnienia są sezony serialu telewizyjnego. Zamiast tworzyć znacznik dla każdego z 10 odcinków, utwórz 2 znaczniki, które odsyłają do początku rozdziału.
Zwróć uwagę, że te znaczniki to nie kropki, lecz właściwości content: "Season 1"
pseudoelementu. Markerami mogą być też miniatury, które są często używane w galeriach w witrynach e-commerce lub witrynach poświęconych zdjęciom.
znaczniki są podobne do linków <a>
na stronie, ale mają kilka specjalnych funkcji:
- Obejmują one stan
:target-current
, gdy znacznik jest widoczny lub przypięty. - Dostępna jest nawigacja za pomocą klawiatury, która działa jak grupa fokusowa.
- Dostępna jest obsługa czytników ekranu i raporty w postaci listy kart.
Aby dodać znaczniki do istotnych punktów zainteresowania w przewijarce, wykonaj te czynności:
- Zdefiniuj miejsce docelowe elementu
scroll-marker-group
jakobefore
lubafter
. - Wybierz punkty zainteresowania za pomocą selektora
.carousel .point-of-interest::scroll-marker
. - Określ
content
z opcjonalnym dostępnym tekstem alternatywnym; numery, tekst, pusty tekst lub obraz.
Przeglądarka tworzy wszystkie znaczniki i umieszcza je w kontenerze grupy znaczników. W tym przykładzie dla każdego elementu <li>
tworzony jest pusty znacznik, aby zaznaczyć każdy element.
.carousel {
…
scroll-marker-group: after;
> li::scroll-marker {
content: ' ';
&:target-current {
background: var(--accent);
}
}
}
Element zawierający znaczniki nazywa się ::scroll-marker-group
i jest tworzony jako element nadrzędny względem scrollera, tak jak przyciski przewijania. Ten kontener można spersonalizować i umieścić w dowolnym miejscu.
znaczniki i przyciski jednocześnie
Połączenie tych dwóch elementów daje efekt podobny do karuzeli, ale z tymi korzyściami:
- Działa z wyłączonym JavaScriptem.
- Brak stosowania technik hydration i lazy sizing (zmniejsz CLS).
- Gotowe do obsługi wszystkich rodzajów animacji i wyzwalania podczas przewijania.
- Dostępność jest wliczona w cenę.
- Dotykowa, mysz i klawiatura.
Zwiększ zasięg, osiągaj więcej, szybciej.
Zasoby
W tym poście te funkcje są głównie określane jako „karuzela”, ale ich możliwości i przydatność wykraczają daleko poza przypadki użycia karuzeli. Aby w pełni wykorzystać możliwości tych nowych funkcji, wypróbuj galerię obrotową i inne komponenty, takie jak scrollspy, karty i slajdy.
- Standardy internetowe
- Chrome
Konfigurator karuzeli
Osoby uczące się w sposób wizualny i interakcyjny mogą skorzystać z konfiguratora karuzeli.
Zawiera przełączniki, np. przyciski przewijania, a po włączeniu wyświetlany karuzelę natychmiast pojawiają się przyciski i używane jest powiązane z nimi formatowanie CSS.

Zawiera on też przykłady bardziej zaawansowanych koncepcji, które są związane z karuzelą:
- interactivity
- scroll-state
- animacja sterowana przez przewijanie
- i przyciąganie kolumn do przewijania.
Galeria obrotowa
Pokażę Ci, jak to działa – dla tych, którzy chcą się dowiedzieć, jak daleko można posunąć te funkcje, i odpowiedzieć na pytania w rodzaju „Czy to może zrobić X?”. Każdy pokaz jest oparty na zastosowaniu, które można znaleźć w internecie. Każde z nich pokazuje, jak sterować tymi przyciskami i znacznikami za pomocą animacji sterowanej przez przewijanie, zapytań scroll-state() i wielu innych metod.
Ciekawostka: cała witryna jest pozbawiona kodu JavaScript.

Przykłady są bardzo zróżnicowane: od bardzo prostych do bardzo zaawansowanych i bogatych w funkcje. Przeglądanie galerii powinno być inspirujące i budować zaufanie, a także oczywiście umożliwiać przeglądanie kodu. Znajdź i sprawdź @layer utilities
, aby znaleźć narzędzia, które pomogą Ci tworzyć karuzele.
dalsze prace,
Jesteśmy dumni z tego, jak dobrze te funkcje integrują się z kodem HTML i CSS. Dostępność karuzeli CSS jest najwyższej jakości. Karuzelę CSS cechuje większa skuteczność niż jakiekolwiek rozwiązanie oparte na JavaScript. Użytkownicy mogą korzystać z karuzeli CSS w sposób naturalny, płynny i bogaty. Można jednak coś poprawić.
Dodawanie własnych elementów
Trwają już prace nad umożliwieniem dodawania własnych komponentów do przycisków przewijania i znaczników. Oznacza to, że możesz przesłać własne tagi <a>
, które zawierają rozszerzone treści, np. ikony. Możesz też użyć własnych wielowarstwowych przycisków utworzonych za pomocą Tailwind.
Przewijanie cykliczne
Wiele karuzeli kończy się pętlą, tak jak na przykład karuzela na festynie. Rozważamy to i zamierzamy wprowadzić rozwiązanie na platformie.
Mamy nadzieję, że spodoba Ci się ta funkcja. Z niecierpliwością czekamy na użytkowników, którzy mają wyłączony JavaScript, aby mogli teraz korzystać z przyjemnego interfejsu z możliwością przewijania. Dzięki temu uda się zmniejszyć CLS, który jest związany z lepszym czasem trwania wbudowanego karuzela.
Mniej pracy, lepsze wrażenia użytkowników i większa skuteczność.