Button

Компонент, который даёт пользователю возможность выполнить какое‑то действие или перейти на другую страницу. Правильный HTML-тег определяется автоматически (по умолчанию button или a при передаче свойства href).

Связанные компоненты:

Загружается...

Задаётся свойством mode.

  • "primary" — акцентная кнопка. Используется для выполнения основных действий (например, “Сохранить”, “Отправить”, “Открыть”);
  • "secondary" — второстепенная кнопка. Подходит для действий, которые не являются основными, но все же важны (например, «Отмена», «Редактировать»). Может применяться в сочетании с primary кнопкой;
  • "outline" — второстепенная кнопка с обводкой со средним акцентом. Используется в ситуациях, когда необходимо сохранить визуальную легкость интерфейса. Также может применяться, когда фон secondary кнопки сливается с фоном интерфейса/баннера;
  • "tertiary" — кнопка без фона с низким акцентом. Часто используется для действий, которые имеют минимальное влияние на интерфейс (например, «Помощь», «Подробнее», «Справка»). Также применяется в контексте, где primary и secondary кнопки уже заданы;
  • "link" — визуально то же самое, что и tertiary, но без фона и боковых отступов. Может найти применение в шапках или в одном ряду с элементами интерфейса, где требуется небольшой отступ между объектами.

Задаётся свойством appearance.

Значение задаёт кнопке акцентный цвет, который может меняться в зависимости от светлой или тёмной схемы.

Загружается...

Значение задаёт кнопке акцентный цвет, который не меняется в зависимости от светлой или тёмной темы.

Загружается...

Значение задаёт кнопке цвет для действия подтверждения (чаще всего зеленый).

Загружается...

Значение задаёт кнопке цвет критических действий (чаще всего красный).

Загружается...

Значение задаёт кнопке нейтральный цвет, который также может являться альтернативным акцентным цветом кнопки.

Загружается...

Значение цвета используется для кнопок, располагающихся поверх цветных элементов или фото.

Загружается...

Задаётся свойством rounded.

Свойство позволяет переопределить радиус скругления для возможности получить полностью скругленную кнопку.

Загружается...

Задаётся свойством size.

Значения, соответствующие каждому размеру, зависят от параметра адаптивности sizeY. В режиме sizeY="compact" значения каждого из размеров будут меньше, чем в режиме sizeY="regular".

Загружается...

Свойство позволяет отключить возможность взаимодействия с кнопкой и добавляет визуальную индикацию недоступности;

Загружается...

Свойство позволяет добавить индикацию загрузки вместо содержимого кнопки. Используйте, когда после взаимодействия с кнопкой запускаются затратные по времени действия.

Загружается...

Задаётся свойством align.

Загружается...

В компоненте доступна возможность добавления дополнительного контента слева и/или справа от текста, задаётся свойством before и after соответственно. Наиболее частый вариант использования свойств before/after - иконки.

Следует руководствоваться следующими правилами:

  • для кнопок size="s" рекомендуется использовать иконки размером 12px;
  • для кнопок size="m" рекомендуется использовать иконки размером 16px;
  • для кнопок size="l" рекомендуется использовать иконки размером 24px.

Также для кнопок size="l" можно использовать компонент Counter в before/after.

Обратите внимание, что есть возможность использовать before/after без указания текста (свойство children). Таким образом можно создавать кнопки, которые содержат только иконку. Обратитесь к разделу a11y, потому что подобные кнопки требуют дополнительных действий для поддержания доступности.

Загружается...

Как уже было указано выше, компонент автоматически выбирает правильный HTML-тег (по умолчанию button или a при передаче свойства href), обеспечивая базовые требования доступности.

Также компонент поддерживает все стандартные aria-атрибуты, если вам необходимо переопределить стандартное поведение.

Обратите внимание, что при передаче свойства href и disabled одновременно, VKUI перестаёт передавать для тэга a свойство href, отключая возможность взаимодействия. По возможности старайтесь не передавать href и disabled одновременно, потому что это не соответствует a11y.

Если вы используете кнопку, которая содержит только иконку (before/after свойство без указания children), то обязательно добавьте aria-label для компонента. Лучшим решением вместо aria-label будет использование компонента VisuallyHidden с необходимым текстом, так как такое решение будет наиболее универсальным для всех ассистивных технологий.

// хорошо
<Button before={<Icon16Search />} size="m" aria-label="Найти" />
 
// ещё лучше
<Button before={<Icon16Search />} size="m">
  <VisuallyHidden>Найти</VisuallyHidden>
</Button>

Компонент поддерживает свойство disableSpinnerAnimation, которое позволяет отключить анимацию при указании loading={true}.

СвойствоОписание
activatedboolean

Позволяет управлять activated-состоянием извне.

По умолчанию: -
activeClassNamestring

Deprecated: Since 7.3.0.

Свойство устарело и будет удалено в v8, используйте свойство activeMode.

По умолчанию: -
activeEffectDelaynumber

Длительность показа active-состояния.

По умолчанию: -
activeModeStateModeLiteral

Стиль подсветки active-состояния. Если передать произвольную строку, она добавится как css-класс во время active.

По умолчанию: -
afterReactNode

Контент, отображаемый после основного содержимого кнопки.

По умолчанию: -
alignAlignType
По умолчанию: center
appearance"accent" | "positive" | "negative" | "neutral" | "overlay" | "accent-invariable"

Цветовая схема кнопки.

По умолчанию: accent
baseClassNamestring | false

Deprecated: Since 7.3.0.

Свойство устарело и будет удалено в v8, используйте свойство className.

По умолчанию: -
baseStyleCSSProperties

Deprecated: Since 7.3.0.

Свойство устарело и будет удалено в v8, используйте свойство style.

По умолчанию: -
beforeReactNode

Контент, отображаемый перед основным содержимым кнопки.

По умолчанию: -
borderRadiusMode"auto" | "inherit"

Задает border-radius элементу В режиме auto на маленьких экранах border-radius: 0, иначе определяется токеном --vkui--size_border_radius--regular.

По умолчанию: -
ComponentElementType<any, keyof IntrinsicElements>
По умолчанию: -
disableSpinnerAnimationboolean

Отключает анимацию спиннера загрузки.

По умолчанию: -
focusVisibleModeFocusVisibleMode

Стиль аутлайна focus visible. Если передать произвольную строку, она добавится как css-класс при :focus-visible

По умолчанию: -
getRootRefRef<HTMLElement>
По умолчанию: -
hasActiveboolean

Указывает, должен ли компонент реагировать на active-состояние.

По умолчанию: -
hasHoverboolean

Указывает, должен ли компонент реагировать на hover-состояние.

По умолчанию: -
hasHoverWithChildrenboolean

Позволяет родительскому компоненту иметь hovered-cостояние при наведении на любой дочерний элемент. По умолчанию состояние hovered у родителя сбрасывается.

Присваивается родителькому компоненту.

По умолчанию: -
hoverClassNamestring

Deprecated: Since 7.3.0.

Свойство устарело и будет удалено в v8, используйте свойство hoverMode.

По умолчанию: -
hoveredboolean

Позволяет управлять hovered-состоянием извне.

По умолчанию: -
hoverModeStateModeLiteral

Стиль подсветки hover-состояния. Если передать произвольную строку, она добавится как css-класс во время hover.

По умолчанию: -
loadingboolean

Включает состояние загрузки (отображает спиннер).

По умолчанию: -
mode"link" | "primary" | "secondary" | "tertiary" | "outline"

Режим отображения кнопки.

По умолчанию: primary
roundedboolean

Добавляет скругленные углы кнопке.

По умолчанию: -
size"s" | "m" | "l"

Размер кнопки.

По умолчанию: s
stretchedboolean

Растягивает кнопку на всю ширину контейнера.

По умолчанию: false
unlockParentHoverboolean

Позволяет родительскому компоненту показывать hovered-состояние при наведении на текущий дочерний компонент.

Присваивается дочернему компоненту.

По умолчанию: -