Skip to content

CSS: tray

.instui-tray — панель, закреплённая по краю, выезжающая с любой стороны; нативный [popover] или <dialog>.

Размещения start/end разрешаются относительно inset-inline (логическое, с учётом направления); трансформация скольжения зеркалируется автоматически внутри предка [dir="rtl"], поэтому для макетов справа-налево дополнительной разметки не требуется.

Source: tray.css

Доступность

Трэй — это поверхность диалога или всплывающей подсказки, поэтому называйте её с помощью aria-label или aria-labelledby, а её элемент закрытия содержит aria-label (в примере .instui-close-button использует aria-label="Close").

Использование

css
@import "@pantoken/components/components.css";
@import "@pantoken/components/tray.css";

Примеры

html
<div class="instui-tray -placement-end -size-sm">
  <span class="instui-heading -level-h3">Filters</span>
  <p class="-size-sm">A tray slides in from the start edge and fills the viewport height.</p>
</div>
<button class="instui-button -toggle">toggle tray</button>

Структура

text
.instui-tray
  close-button (component, 0..1)
  ‹content›
flowchart TD n0[".instui-tray"]:::cssdoc-root n1(["close-button"]):::cssdoc-component n2[/"‹content›"/]:::cssdoc-slot n0 -.->|0..1| n1 n0 --> n2 click n1 "/api/css/close-button.md" classDef cssdoc-root stroke-width:1px; classDef cssdoc-part stroke-width:1px; classDef cssdoc-slot stroke-width:1px; classDef cssdoc-component stroke-width:1px;

Модификаторы

МодификаторОписание
.-placement-bottomЗакрепить по нижнему краю.
.-placement-endЗакрепить по конечному (inline-end) краю.
.-placement-start(по умолчанию) Закрепить по начальному (inline-start) краю.
.-placement-topЗакрепить по верхнему краю.
.-size-largeБольшой. Длинная форма для -size-lg.
.-size-lgБольшой.
.-size-md(по умолчанию) Средний.
.-size-medium(по умолчанию) Средний. Полная форма псевдонима для -size-md.
.-size-regularУстарело — use .-size-md.
.-size-smМаленький.
.-size-smallМаленький. Длинная форма для -size-sm.
.-size-x-largeОчень большой. Длинная форма для -size-xl.
.-size-x-smallОчень маленький. Длинная форма для -size-xs.
.-size-xlОчень большой.
.-size-xsОчень маленький.

Условия

ТипЗапросОписание
supports(transition-behavior: allow-discrete)

Использованные токены

TokenТипЗначение
--instui-component-tray-background-color<color>LightDarklight-dark(#ffffff, #1C222B)
--instui-component-tray-border-color<color>LightDarklight-dark(#E8EAEC, #334450)
--instui-component-tray-border-width<length>0.0625rem
--instui-component-tray-padding<length>1.5rem
--instui-component-tray-width-lg<length>48em
--instui-component-tray-width-md<length>30em
--instui-component-tray-width-sm<length>20em
--instui-component-tray-width-xl<length>62em
--instui-component-tray-width-xs<length>16em
--instui-component-tray-z-index<integer>9999
--instui-elevation-topmostnone | <shadow>#
--tray-slide-x-100%
--tray-slide-y0%

Поддержка браузеров

  • Открывается с использованием нативного API [popover] и @starting-style; эффект выезда находится за защитой @supports (transition-behavior: allow-discrete), поэтому в браузерах без этой функции трэй всё равно откроется, но без анимации выезда.

Подкомпоненты

Связанные

  • modal — тот же шаблон с закрываемым оверлеем, но центрированный вместо закреплённого по краю.
  • popover — универсальная поверхностная прослойка верхнего уровня, на которой это основано.