Компонент оформляет прокрутку области ограниченной высоты или ширины: прячет
системную полосу и рисует поверх содержимого тонкую полосу, которую можно
тянуть указателем. Для прокрутки всей страницы он не нужен.
Минимальную разметку показывает пример выше: корень sf-scrollbar и прямой
потомок sf-scrollbar__viewport, внутри которого лежит содержимое.
Корню задайте высоту (для горизонтальной прокрутки — ширину): область
прокручивается внутри неё.
Прокручивается только прямой потомок sf-scrollbar__viewport.
Дорожку sf-scrollbar__track и ползунок sf-scrollbar__thumb скрипт
компонента добавляет сам; в разметке их нет.
Области дайте доступное имя через aria-label или aria-labelledby.
Варианты
Режим
Атрибут data-mode на корне задаёт поведение полосы: overlay (по
умолчанию) — тонкая полоса появляется при прокрутке, наведении и фокусе и
гаснет в покое; persistent — полоса видна всегда; standard — системная
полоса, окрашенная в цвета темы; hidden — полосы нет, область прокручивается
колесом, касанием и клавишами. Режимы standard и hidden работают без
скрипта. data-sf-scrollbar — другое имя того же атрибута.
data-axis="vertical" (по умолчанию) рисует полосу у конца строки,
data-axis="horizontal" — внизу, для горизонтальной ленты. Горизонтальная
полоса учитывает направление письма. data-sf-scrollbar-axis — другое имя
того же атрибута.
Область sf-scrollbar__viewport получает tabindex="0", если его нет, и
роль region, если у неё есть имя. С клавиатуры её прокручивают стрелками,
Page Up и Page Down, Home и End.
Ползунок получает role="scrollbar", aria-controls на область,
aria-orientation и aria-valuenow от 0 до 100. Имя он берёт у области;
без имени области ползунок называется английским «Scroll». В порядок
фокуса ползунок не входит: клавиатурная остановка — сама область.
В режиме hidden пользователь не видит, что область прокручивается:
оставляйте видимый край обрезанного содержимого.
JavaScript
Скрипт компонента находит корни .sf-scrollbar при загрузке страницы и в
добавленной позже разметке и следит за изменением data-mode и data-axis.
Размер ползунка пересчитывается при изменении содержимого и размеров области.
SF.Scrollbar.init(target) подключает корни внутри target,
SF.Scrollbar.destroy(root) снимает полосу и обработчики. Состояние полосы
скрипт пишет в атрибуты корня: data-sf-scrollbar-state (active или
idle), data-sf-scrollbar-overflow (true, если есть что прокручивать) и
data-sf-scrollbar-dragging. Событий компонент не отправляет.
Классы и переменные собраны из CSS выпуска и обновляются вместе с ним.
Переменные
Компонент читает свои переменные, а модификаторы задают им значения; таблица показывает, из чего складывается вид. Переменные компонента — его внутренняя проводка, а не поверхность настройки: их имена и устройство могут меняться. Вид проекта меняют общие токены, а глубокий вид Smart-компонента — его шаблон (см. Переменные компонента). Значение по умолчанию — из базового правила блока (.sf-scrollbar); переменную без него задают только модификаторы.