Topbar — это панель инструментов, которая всегда остается видимой на странице и обеспечивает быстрый доступ к навигации и управлению.
В зависимости от требований интерфейса, она может включать логотип, заголовок, хлебные крошки, кнопки действий и другие элементы.
Данный вариант наполнения подходит для начальных экранов, когда отсутствует необходимость в отображении навигационного пути.
Если необходимо вывести количество объектов на текущей странице, то это можно сделать с помощью отображения рядом с заголовком страницы специального счетчика:
Для внутренних страниц отдельного модуля отлично подойдет вариант с хлебными крошками. Это поможет пользователю легче ориентироваться в приложении.
В правой части панели инструментов располагается область для размещения любых действий, которые необходимо отобразить на текущей странице.
Мы рекомендуем использовать следующий набор действий (слева направо):
Внутренние элементы могут подстраиваться под размер панели.
Допустимое минимальное расстояние между левой частью и правой частью с действиями составляет 80px и задается через CSS-переменную --kbq-top-bar-spacer-min-width.
При сжатии панели хлебные крошки будут перестраиваться следующим образом:
Вариант с использованием только заголовка будет перестраиваться следующим образом:
Более подробно сжатие хлебных крошек разобрано на странице хлебных крошек.
Панель может фиксироваться при прокрутке страницы.
В примере выше панель вынесена за пределы прокручиваемой области — для этого ничего настраивать не нужно.
Чтобы зафиксировать саму панель, поместите ее внутрь прокручиваемого элемента и задайте на ней
--kbq-top-bar-inset-block-start: 0: --kbq-top-bar-position уже равен sticky, но липкий блок смещается
только при заданном отступе, поэтому со значением auto панель ведет себя точно так же, как при
position: relative.
Панели, открытые из содержимого страницы, рисуются поверх панели инструментов. Чтобы они уходили под нее, см. Панели под липкой шапкой.
Инпуты отвечают за тень и доступное имя, все остальное настраивается через CSS-переменные, заданные на самом
kbq-top-bar. Значения по умолчанию объявлены на самом элементе, поэтому значение, заданное на родителе,
до него не доходит.
| Переменная | Значение по умолчанию | Описание |
|---|---|---|
--kbq-top-bar-z-index | 990 | Слой панели: над содержимым страницы и слоем kbqOverlayLayer (980), под контейнером CDK-оверлеев (1000). |
--kbq-top-bar-position | sticky | position хоста. Сам по себе ничего не меняет — см. --kbq-top-bar-inset-block-start. |
--kbq-top-bar-inset-block-start | auto | Отступ, на котором липкая панель останавливается от верха прокручиваемого родителя. auto не задает ограничения, поэтому панель не фиксируется. |
--kbq-top-bar-padding-vertical | var(--kbq-size-m) | Вертикальные отступы панели. |
--kbq-top-bar-padding-horizontal | var(--kbq-size-xxl) | Горизонтальные отступы панели. |
--kbq-top-bar-border-radius | 0 | Радиус скругления панели. |
--kbq-top-bar-spacer-min-width | 80px | Ширина [kbqTopBarSpacer] — гарантированное расстояние между левой и правой частью. |
--kbq-top-bar-container-start-min-width | 0 | Ширина, ниже которой левый контейнер не сжимается. Задавайте ее, если содержимое слева должно оставаться читаемым в узкой панели. |
--kbq-top-bar-container-start-gap | 0 | Расстояние между элементами левого контейнера. |
--kbq-top-bar-container-end-gap | var(--kbq-size-s) | Расстояние между элементами правого контейнера и между кнопками действий, которые сворачиваются в меню. |
--kbq-top-bar-background | var(--kbq-background-bg) | Фон панели. |
--kbq-top-bar-shadow-bottom | var(--kbq-shadow-overflow-normal-bottom) | Тень, которая рисуется при заданном withShadow. |
--kbq-top-bar-shadow-transition | ease-out 300ms | Анимация этой тени. |
kbq-top-bar намеренно не задает ориентир (landmark): одна и та же панель в одном месте является шапкой
страницы, а в другом — заголовком панели, и banner на странице может быть только один. Выбирайте семантику
в месте использования.
Если панель является шапкой страницы, назначьте ей ориентир banner — обернуть ее в <header>, не вложенный
в <main>, <article> или <section>, тоже допустимо:
<kbq-top-bar role="banner">…</kbq-top-bar>Если на странице несколько панелей, задайте каждой имя, чтобы вспомогательные технологии могли их различать:
<kbq-top-bar role="banner" aria-label="Панель мониторинга">…</kbq-top-bar>role="toolbar" используйте только в том случае, если сами реализуете перемещение фокуса стрелками: панель
инструментов должна быть единой точкой табуляции. В противном случае оставьте кнопки обычными точками
табуляции. Кнопкам-иконкам, которые обычно располагаются на панели (включая кнопку скрытых действий), нужен
собственный aria-label — панель не может его подставить.