К содержанию

Навигация

Полоса прокрутки

Компонент оформляет прокрутку области ограниченной высоты или ширины: прячет системную полосу и рисует поверх содержимого тонкую полосу, которую можно тянуть указателем. Для прокрутки всей страницы он не нужен.

Пример

  • Задача 1
  • Задача 2
  • Задача 3
  • Задача 4
  • Задача 5
  • Задача 6
  • Задача 7
  • Задача 8

Разметка

Минимальную разметку показывает пример выше: корень 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. Событий компонент не отправляет.

Классы

Что Классы
Блок sf-scrollbar
Части sf-scrollbar__thumb, sf-scrollbar__thumb--horizontal, sf-scrollbar__track, sf-scrollbar__track--horizontal, sf-scrollbar__viewport

Классы и переменные собраны из CSS выпуска и обновляются вместе с ним.

Переменные

Компонент читает свои переменные, а модификаторы задают им значения; таблица показывает, из чего складывается вид. Переменные компонента — его внутренняя проводка, а не поверхность настройки: их имена и устройство могут меняться. Вид проекта меняют общие токены, а глубокий вид Smart-компонента — его шаблон (см. Переменные компонента). Значение по умолчанию — из базового правила блока (.sf-scrollbar); переменную без него задают только модификаторы.

Переменная По умолчанию Задаёт
--sf-scrollbar-active-size var(--sf-a6) width, inline-size, height, block-size
--sf-scrollbar-hit-size var(--sf-b6) width, inline-size, height, block-size
--sf-scrollbar-keyboard-step var(--sf-d0) —
--sf-scrollbar-min-thumb-size var(--sf-d1) min-height, min-block-size, min-width, min-inline-size
--sf-scrollbar-rest-size var(--sf-a2) width, inline-size, height, block-size
--sf-scrollbar-thumb-color `color-mix(
Code
  in srgb,
  var(--sf-on-surface) 34%,
  var(--sf-transparent)
)` | `background` |

См. также

Поиск по документации

Введите минимум 2 символа

    Настройки

    Тема
    Размер шрифта
    Ширина страницы