Поиск по сайту:

Как стилизовать полосы прокрутки с помощью CSS


Введение

В сентябре 2018 года W3C CSS Scrollbars определил спецификации для настройки внешнего вида полос прокрутки с помощью CSS.

По состоянию на 2020 год 96% пользователей Интернета используют браузеры, поддерживающие стиль полосы прокрутки CSS. Однако вам нужно будет написать два набора правил CSS для поддержки браузеров Blink и WebKit, а также Firefox.

В этом руководстве вы узнаете, как использовать CSS для настройки полос прокрутки для поддержки современных браузеров.

Предпосылки

Чтобы следовать этой статье, вам понадобятся:

  • Знакомство с концепциями изящной деградации.

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

В настоящее время стилизация полос прокрутки для Chrome, Edge и Safari доступна с псевдоэлементом префикса поставщика -webkit-scrollbar.

Вот пример использования ::-webkit-scrollbar, ::-webkit-scrollbar-track и ::webkit-scrollbar-thumb псевдоэлементы:

body::-webkit-scrollbar {
  width: 12px;               /* width of the entire scrollbar */
}

body::-webkit-scrollbar-track {
  background: orange;        /* color of the tracking area */
}

body::-webkit-scrollbar-thumb {
  background-color: blue;    /* color of the scroll thumb */
  border-radius: 20px;       /* roundness of the scroll thumb */
  border: 3px solid orange;  /* creates padding around scroll thumb */
}

Вот скриншот полосы прокрутки, созданной с помощью этих правил CSS:

Этот код работает в последних версиях Chrome, Edge и Safari.

К сожалению, W3C официально отказалась от этой спецификации и, вероятно, со временем она станет устаревшей.

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

В настоящее время стилизация полос прокрутки для Firefox доступна с новыми полосами прокрутки CSS.

Вот пример, в котором используются свойства scrollbar-width и scrollbar-color:

body {
  scrollbar-width: thin;          /* "auto" or "thin" */
  scrollbar-color: blue orange;   /* scroll thumb and track */ 
}

Вот скриншот полосы прокрутки, созданной с помощью этих правил CSS:

Эта спецификация имеет некоторое сходство со спецификацией -webkit-scrollbar для управления цветом полосы прокрутки. Однако в настоящее время нет поддержки для изменения заполнения и округлости для «ползунка дорожки».

Создание перспективных стилей полосы прокрутки

Вы можете написать свой CSS так, чтобы он поддерживал спецификации -webkit-scrollbar и CSS Scrollbars.

Вот пример, который использует scrollbar-width, scrollbar-color, ::-webkit-scrollbar, ::-webkit- полоса прокрутки, ::webkit-scrollbar-thumb:

/* Works on Firefox */
* {
  scrollbar-width: thin;
  scrollbar-color: blue orange;
}

/* Works on Chrome, Edge, and Safari */
*::-webkit-scrollbar {
  width: 12px;
}

*::-webkit-scrollbar-track {
  background: orange;
}

*::-webkit-scrollbar-thumb {
  background-color: blue;
  border-radius: 20px;
  border: 3px solid orange;
}

Браузеры Blink и WebKit будут игнорировать правила, которые они не распознают, и применять правила -webkit-scrollbar. Браузеры Firefox будут игнорировать правила, которые они не распознают, и применять правила CSS Scrollbars. Как только браузеры Blink и WebKit полностью откажутся от спецификации -webkit-scrollbar, они вернутся к новой спецификации CSS Scrollbars.

Заключение

В этой статье вы познакомились с использованием CSS для стилизации полос прокрутки и с тем, как обеспечить распознавание этих стилей в большинстве современных браузеров.

Также можно смоделировать полосу прокрутки, скрыв полосу прокрутки по умолчанию и используя JavaScript для определения высоты и положения прокрутки. Однако эти подходы наталкиваются на ограничения при воспроизведении таких процессов, как инерционная прокрутка (например, затухание движения при прокрутке с помощью трекпадов).

Если вы хотите узнать больше о CSS, ознакомьтесь с нашей темой по CSS, где вы найдете упражнения и проекты по программированию.