Руководство по стилизации полосы прокрутки в CSS

Источник: «Guide to styling CSS scrollbars»
В этой статье мы рассмотрим несколько способов стилизации полосы прокрутки в CSS, в разных браузерах, чтобы вы могли настроить полосу прокрутки по умолчанию в соответствии с вашим брендом или дизайном.

Полоса прокрутки или скроллбар браузера по умолчанию в большинстве случаев работает хорошо. Однако, если оставить её как есть, даже самые красивые сайты могут выглядеть незавершёнными и неотшлифованными. С помощью стилизации полосы прокрутки можно создать более визуально привлекательный сайт, который будет лучше соответствовать вашему бренду или дизайну. В этом руководстве мы рассмотрим несколько различных способов стилизации полосы прокрутки в CSS.

Знакомство с полосой прокрутки

Полоса прокрутки — это часто упускаемый из виду элемент веб-дизайна. Хотя она может показаться незначительной деталью, она играет важную роль в навигации сайта. Стандартная полоса прокрутки часто бывает скучной и может выглядеть неуместно, нарушая общую эстетику. К счастью, вы можете легко настроить полосу прокрутки с помощью CSS. Для этого потребуется написать два набора правил CSS для браузеров Webkit, таких, как Chrome, Edge, Safari и Firefox.

Прежде чем погрузиться в код, давайте убедимся, что мы понимаем структуру полосы прокрутки. Знание этого поможет при создании стиля с помощью CSS, так как вы можете использовать различные свойства для выделения определённых частей полосы прокрутки. Ниже перечислены элементы, из которых состоит полоса прокрутки:

Стилизация полос прокрутки в Chrome, Edge и Safari

Браузеры Webkit позволяют настраивать полосу прокрутки с помощью псевдоэлементов ::-webkit-scrollbar, ::-webkit-scrollbar-button, ::-webkit-scrollbar-thumb, ::-webkit-scrollbar-track и других. Каждый из них нацелен на различные части полосы прокрутки, как указано выше. В CodePen ниже показан пример стилизованной полосы прокрутки с использованием вышеуказанных псевдоэлементов:

See the Pen

В приведённом выше коде мы отобразили вертикальную и горизонтальную полосы прокрутки, но в большинстве случаев мы отобразили бы только одну. Для этого мы можем изменить свойство overflow, которое отвечает за видимость полосы прокрутки, на overflow-x или overflow-y, в зависимости от того, по какой оси мы будем отображать полосу прокрутки. Однако для приведённого выше примера этого будет недостаточно, если мы не сделаем изображение отзывчивым, установив его ширину и высоту на 100%.

Селекторы псевдокласса полосы прокрутки

Чтобы создать более индивидуальный дизайн, вы можете выбрать определённые элементы полосы прокрутки и применить к ним стили, добавив псевдокласс к каждому псевдоэлементу. Ниже приведены некоторые из наиболее распространённых псевдоклассов:

Ниже приведён пример, в котором используются все вышеперечисленные псевдоклассы, кроме :horizontal, чтобы придать вертикальной полосе прокрутки другой вид:

See the Pen

В примере ниже используется псевдокласс :horizontal для вставки тени на дорожку горизонтальной полосы прокрутки:

See the Pen

Хотя спецификации Webkit для стилизации полосы прокрутки работают нормально на момент написания статьи, W3C официально отказался от этой спецификации, и ожидается, что она будет постепенно выводиться из употребления.

Стилизация полос прокрутки в Firefox

Firefox не предлагает никаких продвинутых методов стилизации, как браузеры Webkit. На момент написания статьи доступны только свойства scrollbar-width и scrollbar-color, что является стандартом, определённым W3C CSS Scrollbars. Эти свойства можно использовать для стилизации ширины полосы прокрутки, бегунка и цвета дорожки:

body {
scrollbar-width: thin;
scrollbar-color: #4d7fff #ddd;
}

Стилизация полос прокрутки для большей поддержки кроссбраузерности

При оформлении полосы прокрутки рекомендуется комбинировать спецификации Webkit и W3C CSS Scrollbars, чтобы охватить большее количество браузеров:

body {
scrollbar-width: thin;
scrollbar-color: #4d7fff #ddd;
}

body::-webkit-scrollbar {
width: 10px;
height: 10px;
}

body::-webkit-scrollbar-thumb {
background: linear-gradient(to bottom right, #4d7fff 0%, #1a56ff 100%);
border-radius: 5px;
}

body::-webkit-scrollbar-track {
background-color: #ddd;
border: 1px solid #ccc;
}

body::-webkit-scrollbar-button {
background-color: #4d7fff;
border-radius: 5px;
}

В браузерах WebKit правила, которые не распознаны, будут проигнорированы, и браузеры будут применять правила -webkit-scrollbar. С другой стороны, в браузерах Firefox правила, которые не распознаются, также будут игнорироваться, и браузеры будут применять правила CSS правила полос прокрутки. Таким образом, полоса прокрутки сохранит свой стиль в большем количестве браузеров. Хотя недостатком является то, что в Firebox нет продвинутых методов стилизации, как в Webkit, вы сможете придать полосам прокрутки одинаковый вид.

Заключение

Стилизация полосы прокрутки придаёт сайту более совершенный вид. Она также может помочь выделить бренд или продукт, включив его цветовую схему или логотип в дизайн полосы прокрутки. Однако рекомендуется не слишком далеко отходить от первоначального вида полосы прокрутки, чтобы не сделать её непривычной для пользователей и не снизить удобство пользования. Надеюсь, вам понравилась эта статья. Счастливого кодинга!

Дополнительные материалы

Предыдущая Статья

PHP 8.3: PHP CLI Lint (php -l) поддерживает одновременную проверку нескольких файлов

Следующая Статья

PHP 8.3: class_alias() поддерживает псевдонимы встроенных PHP-классов