Перейти к содержимому
v2.5.0
English
Русский
Документация

Button

Button — основной компонент действия на базе ButtonBase с поддержкой размеров и растягивания на всю ширину для типовых действий в продукте.

Именование

Текст кнопки должен ясно описывать действие. Если содержимое — только иконка, используйте IconButton с явным aria-label.

Работа с клавиатурой

ОбъявлениеПереведите фокус на демо и нажмите клавишу из таблицы.
КлавишаДействие
EnterSpaceАктивирует кнопку в фокусе. Это нативный <button>; с asChild у дочернего элемента остаются свои клавиши, и ссылка реагирует только на Enter.
Каждая строка проверена в настоящем браузере: Playwright нажимает клавишу в Chromium и смотрит, где оказались фокус и активный элемент.
  • Выполняемое действие должно оставаться понятным из текста.
  • При полиморфном использовании asChild должен сохраняться интерактивный элемент, с которым можно работать с клавиатуры.

Поведение фокуса

  • Фокус должен попадать на интерактивный корень.
  • Видимое выделение фокуса должно сохраняться после кастомной стилизации.

Семантика для скринридеров

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

Семантика формы

  • type по умолчанию не задан: как и нативный <button>, Button отправляет окружающую форму.
  • Задайте type='button' для действий, которые не должны отправлять форму.
  • Используйте type='submit' осознанно, когда кнопка участвует в отправке формы.

Риски доступности

  • Неоднозначный текст вроде «Продолжить» без окружающего контекста.
  • Использование asChild с дочерним элементом, теряющим интерактивную семантику.
  • Замена текста спиннером или иконкой без сохранения понятного смысла.