К содержанию

Навигация

Аккордеон

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

Пример

Стили, поведение и публичный контракт компонента.

Разметка

Минимальную разметку показывает пример выше. Части вложены так: article.sf-accordion → заголовок sf-accordion-heading → кнопка sf-accordion-trigger с подписью sf-accordion-title и иконкой sf-icon, затем панель sf-accordion-content.

  • Заголовок — настоящий <h2>…<h6> того уровня, который нужен структуре страницы; CSS снимает с него отступы и начертание.
  • Кнопка — нативный <button type="button"> с aria-expanded. Скрипт связывает её с панелью: ставит id, aria-controls, а панели с role="region" — aria-labelledby.
  • Закрытая панель получает атрибут hidden и класс hidden; открытая — без них. Начальное состояние задаёт разметка, дальше его ведёт скрипт.
  • Иконку sf-icon скрипт заполняет сам: chevron_right или, у варианта с плюсом, add и remove.
  • Скрипт подключает аккордеоны при загрузке страницы и вставленные позже. Разметку без кнопки sf-accordion-trigger он делает кликабельной целиком и ставит ей класс sf-accordion--legacy; писать его вручную не нужно.

Варианты

Поверхность

Без модификатора аккордеон — самостоятельная карточка с заливкой. sf-accordion--outline оставляет фон прозрачным и обводит раздел контуром — для аккордеона на уже заданной поверхности. sf-accordion--flush убирает фон и скругление и оставляет только разделитель снизу — для плотных списков внутри общего контейнера.

Иконка

Шеврон смотрит в сторону у закрытого раздела и вниз у открытого; он подходит меню, иерархии и последовательным шагам. sf-accordion--plus-minus показывает плюс у закрытого раздела и минус у открытого — для вопросов и подробностей, где смысл — показать или скрыть текст.

Один открытый раздел

По умолчанию разделы открываются независимо. Контейнер .sf-accordion-group с data-mode="single" оставляет открытым один раздел: открытие следующего закрывает предыдущий. Аккордеоны лежат прямыми потомками контейнера.

Подключите основу Framework.

Состояния

Наведение и нажатие заголовок показывает сам.

Открыт

Открытый раздел: у кнопки aria-expanded="true", у панели нет hidden. Скрипт ставит самому аккордеону класс active, поворачивает шеврон и рисует разделитель между заголовком и панелью.

Фокус

При переходе клавишей Tab кольцо фокуса охватывает заголовок изнутри и не обрезается на стыке с панелью; панель вместе с заголовком не подсвечивается. В примере фокус показан классом focus-visible, который CSS читает наравне с :focus-visible.

Доступность

  • Кнопка внутри заголовка даёт разделу роль, имя и состояние aria-expanded; раздел переключается по Enter и пробелу.
  • Подпись заголовка коротко называет содержимое раздела.
  • role="region" на панели ставьте, когда разделов немного: каждая такая панель становится ориентиром страницы.
  • Каждый заголовок — отдельная точка Tab; стрелками разделы не переключаются.
  • Шеврон зеркалится при письме справа налево. При системной настройке уменьшения движения поворот иконки не анимируется; в режиме высокой контрастности кольцо фокуса рисуется цветом текста.

Классы

Что Классы
Блок sf-accordion
Части sf-accordion-content, sf-accordion-heading, sf-accordion-title, sf-accordion-trigger
Модификаторы sf-accordion--flush, sf-accordion--legacy, sf-accordion--outline, sf-accordion--plus-minus

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

Переменные

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

Переменная По умолчанию Задаёт
--sf-accordion--background-color var(--sf-surface-container) background-color
--sf-accordion--border-color var(--sf-outline-variant) border, border-bottom, border-block-end
--sf-accordion--border-width var(--sf-px) border, border-bottom, border-block-end, height
--sf-accordion--content-padding var(--sf-space-3) padding
--sf-accordion--radius var(--sf-radius--surface) border-end-end-radius, border-end-start-radius, border-start-end-radius, border-start-start-radius
--sf-accordion--trigger-padding-block var(--sf-space-2) padding
--sf-accordion--trigger-padding-inline var(--sf-space-3) padding

См. также

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

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

    Настройки

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