Область прокрутки
Scroll area — блок с ограниченным размером, содержимое которого прокручивается. Его можно прокрутить с клавиатуры, а полоса прокрутки окрашена по теме.
1.4.0: Tables can pin their first column.
1.3.0: Date picker supports ranges.
1.2.0: Toasts stack and expand on hover.
1.1.0: Menus open submenus to the side.
1.0.0: First stable release.
<tk-scroll-area label="Release notes" fade style="max-block-size: 160px"> <p>1.4.0: Tables can pin their first column.</p> <p>1.3.0: Date picker supports ranges.</p> <p>1.2.0: Toasts stack and expand on hover.</p> <p>1.1.0: Menus open submenus to the side.</p> <p>1.0.0: First stable release.</p> </tk-scroll-area>
Анатомия
| Часть | Что это |
|---|---|
tk-scroll-area |
сам элемент; размер задаёте вы |
| слот по умолчанию | содержимое, любое |
part scroll |
прокручиваемый блок; одна остановка Tab, пока содержимое не помещается |
Размер
Высоту область прокрутки не выбирает. Ограничьте её через height, max-height или
дорожку flex или grid. Без ограничения она растёт вместе с содержимым и не
прокручивается.
Ось
<tk-scroll-area label="Team" axis="horizontal">
<div style="display: flex; gap: var(--space-8); inline-size: max-content">
<tk-tag>Ada Lovelace</tk-tag><tk-tag>Grace Hopper</tk-tag><tk-tag>Alan Turing</tk-tag>
<tk-tag>Katherine Johnson</tk-tag><tk-tag>Edsger Dijkstra</tk-tag><tk-tag>Barbara Liskov</tk-tag>
</div>
</tk-scroll-area>vertical(по умолчанию): прокрутка вверх и вниз; что не влезает по ширине, обрезается.horizontal: прокрутка вбок, для ленты карточек или широкого графика.both: прокрутка в любую сторону, для схемы или широкого журнала.
Настройки
fade: у края, за которым есть ещё содержимое, оно плавно растворяется, а в конце растворение пропадает. Нужно там, где обрезанный край можно принять за конец. Глубину задаёт--tk-scroll-area-fade-size.gutter: оставляет место под полосу прокрутки, чтобы содержимое не сдвигалось, когда перестаёт помещаться. В системах с плавающими полосами, например в macOS по умолчанию, место не резервируется.
Полоса прокрутки — собственная полоса браузера, тонкая и окрашенная по теме. В разных
системах она выглядит немного по-разному. На тёмном или цветном фоне задайте её цвет
через --tk-scroll-area-thumb-color.
Когда использовать
- Scroll area — для любой области с ограниченной высотой, где содержимое может не
поместиться: список изменений, длинный список в боковой панели, журнал, лента
карточек. Используйте её вместо обычного блока с
overflow: auto: такой блок нельзя прокрутить с клавиатуры. - Не оборачивайте компоненты, которые прокручиваются сами, например
Table ,Data table илиCode block . Получатся две остановки Tab. - Не используйте её для всей страницы; страница прокручивается сама.
- Не вкладывайте одну область прокрутки в другую без нужды.
Можно / нельзя
| ✅ Можно | ❌ Нельзя |
|---|---|
Самим ограничить размер, например max-block-size |
Ждать, что область сама выберет высоту |
label у всего, что может переполниться |
Область прокрутки без имени |
fade там, где обрезанный край похож на конец |
fade там, где строки или номера и так показывают продолжение |
| Таблицы и блоки кода прокручиваются сами | Оборачивать их в область прокрутки |
Связанные
Table ,Data table ,Code block : прокручиваются так же, сами по себе.Skeleton : заполняет область, пока грузится содержимое.
API
Атрибуты
| Атрибут | Тип | По умолчанию | Что делает |
|---|---|---|---|
label |
string | доступное имя области, пока содержимое не помещается | |
axis |
vertical | horizontal | both |
vertical |
направление прокрутки; по другой оси содержимое обрезается |
gutter |
boolean | false |
оставляет место под полосу прокрутки |
fade |
boolean | false |
растворяет края, за которыми есть ещё содержимое |
Слоты
| Слот | Содержимое |
|---|---|
| по умолчанию | прокручиваемое содержимое |
События
Своих событий нет.
CSS
| CSS-переменная | По умолчанию | Что делает |
|---|---|---|
--tk-scroll-area-thumb-color |
var(--border-default) |
цвет ползунка полосы прокрутки |
--tk-scroll-area-fade-size |
var(--space-24) |
глубина растворения у края |
::part(scroll): прокручиваемый блок, для отступов или другого размера.
Токены
| Элемент | Токен |
|---|---|
| ползунок полосы прокрутки | border/default; дорожка прозрачная |
| рамка фокуса | border/accent/focus, 2px, внутри края |
| глубина растворения | space-24 |
Своего фона у области прокрутки нет; виден фон вокруг. Значения по темам:
Доступность
Встроено:
- Пока содержимое не помещается, блок — остановка Tab, а с
labelещё и область с именем. Когда всё помещается, и то и другое пропадает. - Стрелки, Page Up, Page Down, Home и End прокручивают блок в фокусе, как везде в браузере.
- Без
labelпереполненный блок остаётся доступным с клавиатуры, но без имени. - Растворение скрыто от скринридеров; то же самое сообщает положение прокрутки.
На вашей стороне:
- Задайте
labelкаждой области, содержимое которой может не поместиться, например «Release notes».
| Клавиша | Действие |
|---|---|
Tab |
переводит фокус на область, пока содержимое не помещается |
Up / Down, Left / Right |
прокрутка |
Page Up / Page Down |
прокрутка на экран |
Home / End |
в начало или в конец |