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
Generator konfiguracji webpack
Utwórz plik webpack.config.js dla webpacka 5 z krótkiego formularza: ustaw entry, folder wyjściowy i tryb, a następnie włącz TypeScript, Babel, loader CSS, HtmlWebpackPlugin i serwer deweloperski.
Generator fikcyjnych numerów telefonu
Generuj do 50 fikcyjnych numerów z oficjalnie zastrzeżonych zakresów w pięciu krajach.
Narzędzie odstępów w kodzie Python
Ujednolić wcięcia oraz proste odstępy przy przecinkach i operatorach. To lekka obróbka tekstu, a nie Black, Ruff ani parser Pythona.
Licznik FPS
Zmierz FPS w przeglądarce za pomocą requestAnimationFrame: wygładzanie, minimalna i maksymalna liczba klatek, próg ostrzeżenia i opcjonalny wykres. Działa lokalnie, bez wysyłania danych i bez API.
Generator losowych adresów
Twórz od 1 do 20 rekordów podobnych do adresów do makiet i testów, w trzech uproszczonych formatach.
Generator przycisków CSS
Zaprojektuj przycisk CSS z jednolitym lub gradientowym tłem, podglądem sześciu stanów, kontrolą kontrastu oraz bezpiecznym kodem HTML i CSS.
Narzędzie jest dostępne w innych językach
- CSSスクロールバージェネレーター [JA]
- CSS-generator för rullningslist [SV]
- Generador de barra de desplazamiento CSS [ES]
- Générateur de barre de défilement CSS [FR]
- เครื่องสร้างแถบเลื่อน CSS [TH]
- مولّد شريط التمرير CSS [AR]
- CSS 스크롤바 생성기 [KO]
- CSS-schuifbalkgenerator [NL]
- Gerador de barra de rolagem CSS [PT]
- Trình tạo thanh cuộn CSS [VI]
- Generator Bilah Gulir CSS [ID]
- CSS-Scrollbar-Generator [DE]
- Генератор CSS-скроллбара [RU]
- CSS Kaydırma Çubuğu Oluşturucu [TR]
- CSS滚动条生成器 [ZH]
- CSS Scrollbar Generator [EN]
- Generatore di barre di scorrimento CSS [IT]