Генератор CSS-скроллбара
Кастомные скроллбары раньше были кошмаром из вендорно-префиксных псевдоэлементов. Сегодня scrollbar-color и scrollbar-width покрывают типичные случаи во всех современных браузерах, узкая или обычная ширина и двухцветное (бегунок + дорожка) оформление. Для контроля на уровне пикселей (отступы дорожки, скругление бегунка, состояния hover) старые псевдоэлементы ::-webkit-scrollbar все еще работают в Chrome и Safari. Этот генератор выводит оба, корректно каскадируя.
Как оформить скроллбар
-
1
Выберите ширину
Auto (стандартная ширина платформы), thin (уже) или конкретное значение в пикселях через webkit-правила.
-
2
Задайте цвета бегунка и дорожки
Современный `scrollbar-color` принимает два цвета. Webkit-правила дают отдельные цвет, скругление и состояния hover.
-
3
Добавьте эффект hover (опционально)
Бегунок светлеет при наведении. Работает через `::-webkit-scrollbar-thumb:hover`.
-
4
Определите область применения
Примените к `html` / `body` (вся страница) или только к конкретному прокручиваемому контейнеру.
-
5
Скопируйте CSS
Совмещенные современные + webkit-правила: работают в каждом современном браузере с плавным откатом.
Современные стандартные свойства (2023+)
/* Применяется к элементу, который прокручивается */
html {
scrollbar-width: thin; /* auto | thin | none */
scrollbar-color: #4f46e5 #e5e7eb; /* бегунок дорожка */
}
Поддержка браузерами (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+. Резервирует место под скроллбар, даже когда оно не нужно, предотвращая сдвиг макета.
Webkit-псевдоэлементы (Chrome, Safari, старый 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;
}
Более детальный контроль. width задает ширину вертикального скроллбара; height задает высоту горизонтального скроллбара. Добавьте оба для контейнеров, которые могут прокручиваться в любом направлении.
Каскадирование двух подходов
Сначала укажите современные правила, затем webkit как улучшение для браузеров, которые отрисовывают оба:
.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 учитывает только современные правила scrollbar-*. Chrome и Safari учитывают webkit-правила (которые переопределяют современные, поэтому поведение согласовано).
scrollbar-gutter предотвращает сдвиг контента
Без зарезервированного желоба контент перетекает, когда появляется скроллбар (частое явление в динамических списках). Решение:
html { scrollbar-gutter: stable; }
/* или */
html { scrollbar-gutter: stable both-edges; }
Слот скроллбара резервируется независимо от того, прокручивается ли контент. both-edges добавляет соответствующий желоб с противоположной стороны, чтобы контент оставался визуально центрированным.
Полностью скрыть скроллбары
.no-scrollbar {
scrollbar-width: none; /* Firefox */
}
.no-scrollbar::-webkit-scrollbar { display: none; } /* Chrome, Safari */
Будьте осторожны: скрытие скроллбара мешает пользователям увидеть, что контент можно прокручивать. Используйте только с явным индикатором (стрелки, точки страниц) или когда поведение прокрутки очевидно из контекста (горизонтальные карусели, истории чатов).
Особенности мобильных
На iOS и Android скроллбары появляются лишь на мгновение во время прокрутки. Ваш кастомный CSS скроллбара все равно применяется, но пользователи могут так и не увидеть его дольше секунды. Проектируйте соответственно, не вкладывайтесь сильно в визуальные изыски, которые редко появляются.
Доступность
- Контраст: бегунок относительно дорожки должен соответствовать 3:1 для нетекстового контраста (WCAG 1.4.11).
- Ширина: тонкие скроллбары трудно захватить мышью, особенно пользователям с моторными нарушениями. Обычная ширина, более безопасный дефолт.
- Никогда не убирайте скроллбар на прокручиваемых областях, не предоставив другой способ прокрутки. Пользователи, полагающиеся на скроллбар, окажутся в тупике.
Часто задаваемые вопросы
Да, с современными свойствами scrollbar-width и scrollbar-color. Firefox не поддерживает webkit-псевдоэлементы, поэтому для согласованного вида в разных браузерах сначала используйте современные свойства, а webkit-правила добавляйте как улучшение.
Потому что стандартные скроллбары накладываются на контент и не резервируют места до момента надобности. Задайте scrollbar-gutter: stable на прокручиваемом элементе, чтобы всегда резервировать желоб, предотвращая перетекание при появлении или исчезновении скроллбара.
Обычно да, потому что скроллбар смотрится неуместно и конкурирует с контентом. Добавьте видимые точки пагинации или элементы управления-стрелки, чтобы пользователи все равно знали, что контент прокручивается. Учитывайте prefers-reduced-motion, если используете scroll-snapping.
Может. Очень тонкие или низкоконтрастные скроллбары трудно использовать пользователям с моторными нарушениями и слабым зрением. Держите скроллбар шириной не менее 8-10 px для комфортного захвата и сохраняйте контраст 3:1 между бегунком и дорожкой.
Сопутствующие инструменты
Справочная таблица ASCII
Полная таблица ASCII от 0 до 127 с десятичным, шестнадцатеричным, восьмеричным и двоичным представлением, а также записью числовых ссылок HTML, включая NUL, LF и DEL.
Справочник сочетаний клавиш
Ищите документированные сочетания по умолчанию для VS Code, Chrome и Bash с GNU Readline в macOS, Windows и Linux.
Справочник символов HTML
Справочник HTML-сущностей с поиском, их именованными и числовыми кодами, а также копированием специальных символов и знаков одним кликом.
Счетчик FPS
Измерьте FPS браузера через requestAnimationFrame: сглаживание, минимальная и максимальная частота кадров, порог предупреждения и график по желанию. Работает локально, без загрузок и API.
Генератор цветовой палитры
Создавайте монохромные, аналоговые, комплементарные, триадные или тетрадные палитры из базового HEX-цвета и экспортируйте готовые CSS-переменные.
Генератор случайных букв
Генерируйте случайные буквы A-Z. Выберите количество, верхний или нижний регистр либо смешанный вариант для игр, заданий и уроков.