Generator paska przewijania CSS
Niestandardowe paski przewijania były kiedyś koszmarem pseudoelementów z prefiksami producentów. Dziś scrollbar-color i scrollbar-width obsługują typowe przypadki we wszystkich nowoczesnych przeglądarkach: wąską lub standardową szerokość oraz dwukolorowy motyw (suwak i ścieżka). Do sterowania na poziomie pikseli (wypełnienie ścieżki, promień suwaka, stany po najechaniu) starsze pseudoelementy ::-webkit-scrollbar nadal działają w Chrome i Safari. Ten generator tworzy obie wersje i poprawnie je kaskaduje.
Jak nadać styl paskowi przewijania
-
1
Wybierz szerokość
Auto (domyślna szerokość platformy), cienki (węższy) lub konkretna wartość w pikselach za pomocą reguł webkit.
-
2
Ustaw kolory suwaka i ścieżki
Nowoczesne `scrollbar-color` przyjmuje dwa kolory. Reguły webkit pozwalają na osobny kolor, promień i stany po najechaniu.
-
3
Dodaj efekt po najechaniu (opcjonalnie)
Suwak rozjaśnia się po najechaniu. Działa przez `::-webkit-scrollbar-thumb:hover`.
-
4
Określ zakres
Zastosuj do `html` / `body` (cała strona) albo tylko do konkretnego przewijalnego kontenera.
-
5
Skopiuj CSS
Połączone reguły nowoczesne i webkit: działa w każdej nowoczesnej przeglądarce z płynnym mechanizmem awaryjnym.
Nowoczesne właściwości standardowe (od 2023)
/* Applies to the element that scrolls */
html {
scrollbar-width: thin; /* auto | thin | none */
scrollbar-color: #4f46e5 #e5e7eb; /* thumb track */
}
Wsparcie przeglądarek (2024):
scrollbar-width: Chrome 121+, Safari 18.2+, Firefox 64+.scrollbar-color: Chrome 121+, Safari 18.2+, Firefox 64+.scrollbar-gutter: stable: Chrome 94+, Safari 14+, Firefox 97+. Rezerwuje miejsce na pasek przewijania nawet wtedy, gdy nie jest potrzebny, co zapobiega przesunięciu układu.
Pseudoelementy webkit (Chrome, Safari, starszy Edge)
::-webkit-scrollbar {
width: 10px;
height: 10px;
}
::-webkit-scrollbar-track {
background: #e5e7eb;
border-radius: 10px;
}
::-webkit-scrollbar-thumb {
background: #4f46e5;
border-radius: 10px;
}
::-webkit-scrollbar-thumb:hover {
background: #3730a3;
}
Bardziej szczegółowa kontrola. width ustawia szerokość pionowego paska przewijania; height ustawia wysokość poziomego. Dodaj obie właściwości dla kontenerów, które mogą przewijać się w obu kierunkach.
Kaskadowe połączenie obu podejść
Najpierw podaj reguły nowoczesne, a potem webkit jako rozszerzenie dla przeglądarek renderujących oba warianty:
.scroll-area {
scrollbar-width: thin;
scrollbar-color: #4f46e5 #e5e7eb;
}
.scroll-area::-webkit-scrollbar { width: 8px; }
.scroll-area::-webkit-scrollbar-track { background: #e5e7eb; }
.scroll-area::-webkit-scrollbar-thumb {
background: #4f46e5;
border-radius: 4px;
border: 2px solid #e5e7eb;
}
Firefox uwzględnia tylko nowoczesne reguły scrollbar-*. Chrome i Safari uwzględniają reguły webkit (które nadpisują nowoczesne, więc zachowanie jest spójne).
scrollbar-gutter zapobiega przesuwaniu treści
Bez zarezerwowanego marginesu treść zmienia układ, gdy pojawia się pasek przewijania (częste w listach dynamicznych). Rozwiązanie:
html { scrollbar-gutter: stable; }
/* or */
html { scrollbar-gutter: stable both-edges; }
Miejsce na pasek przewijania jest rezerwowane niezależnie od tego, czy treść się przewija. both-edges dodaje odpowiadający margines po przeciwnej stronie, aby treść pozostała wizualnie wyśrodkowana.
Całkowite ukrycie pasków przewijania
.no-scrollbar {
scrollbar-width: none; /* Firefox */
}
.no-scrollbar::-webkit-scrollbar { display: none; } /* Chrome, Safari */
Uwaga: ukrycie paska przewijania sprawia, że użytkownicy nie widzą, iż treść można przewijać. Stosuj to tylko z wyraźnym wskaźnikiem (strzałki, kropki stron) albo gdy przewijanie wynika jasno z kontekstu (poziome karuzele, historie czatu).
Uwagi dotyczące urządzeń mobilnych
W systemach iOS i Android paski przewijania pojawiają się tylko na chwilę podczas przewijania. Twój niestandardowy CSS paska nadal się stosuje, ale użytkownicy mogą nigdy nie zobaczyć go dłużej niż przez sekundę. Projektuj odpowiednio: nie inwestuj zbyt mocno w efekty wizualne, które rzadko są widoczne.
Dostępność
- Kontrast: suwak względem ścieżki powinien osiągać 3:1 dla kontrastu nietekstowego (WCAG 1.4.11).
- Szerokość: cienkie paski przewijania trudno chwycić myszą, zwłaszcza użytkownikom z niepełnosprawnościami ruchowymi. Standardowa szerokość jest bezpieczniejszym ustawieniem domyślnym.
- Nigdy nie usuwaj paska przewijania w obszarach przewijalnych bez zapewnienia innego sposobu przewijania. Użytkownicy polegający na pasku zostaną zablokowani.
Najczęściej zadawane pytania
Tak, za pomocą nowoczesnych właściwości scrollbar-width i scrollbar-color. Firefox nie obsługuje pseudoelementów webkit, więc aby uzyskać spójny wygląd w różnych przeglądarkach, najpierw użyj właściwości nowoczesnych, a reguły webkit dodaj jako rozszerzenie.
Ponieważ domyślne paski przewijania nakładają się na treść i nie rezerwują miejsca, dopóki nie są potrzebne. Ustaw scrollbar-gutter: stable na przewijanym elemencie, aby zawsze rezerwować margines i zapobiec zmianie układu, gdy pasek pojawia się lub znika.
Zwykle tak, bo pasek przewijania wygląda nie na miejscu i konkuruje z treścią. Dodaj widoczne kropki paginacji lub przyciski strzałek, aby użytkownicy nadal wiedzieli, że treść się przewija. Uwzględnij prefers-reduced-motion, jeśli używasz przyciągania przewijania (scroll-snapping).
Może wpływać. Bardzo cienkie lub słabo kontrastowe paski przewijania są trudne w użyciu dla osób z niepełnosprawnościami ruchowymi i słabym wzrokiem. Zachowaj szerokość paska co najmniej 8–10 px dla wygodnego chwytu i utrzymuj kontrast 3:1 między suwakiem a ścieżką.
Powiązane narzędzia
Tabela ASCII
Pełna tabela ASCII od 0 do 127 z zapisem dziesiętnym, szesnastkowym, ósemkowym i binarnym oraz notacją numerycznych odwołań HTML, w tym kodami sterującymi NUL, LF i DEL.
Referencja znaków HTML
Przeszukiwalna lista encji HTML wraz z ich kodami nazwanymi i liczbowymi oraz kopiowaniem jednym kliknięciem specjalnych znaków i symboli.
Skróty klawiaturowe
Wyszukuj udokumentowane skróty domyślne VS Code, Chrome i Bash z GNU Readline w macOS, Windows i Linux.
Generator losowych liter
Generuj losowe litery A-Z. Wybierz liczbę, wielkie litery, małe litery lub zapis mieszany i użyj wyniku w grach, zadaniach lub lekcjach.
Konwerter ASCII na binarny
Konwertuj dowolny ciąg ASCII na reprezentację binarną. Każdy znak staje się ośmioma bitami, rozdzielonymi spacjami, gotowymi do wklejenia w ślad protokołu albo zadanie domowe.
Próbnik kolorów HEX
Wybierz lub wpisz kolor HEX i sprawdź RGB, HSL, przybliżone CMYK, luminancję względną oraz kontrast z bielą i czernią.