Кнопка (Button)
Кнопки позволяют пользователям выполнять действия и делать выбор одним нажатием.
Кнопки сообщают о действиях, которые могут предпринять пользователи. Они обычно размещаются в пользовательском интерфейсе в таких местах, как:
- модальные окна
- формы
- карточки
- панели инструментов
Базовая кнопка
Кнопка Button
имеет три варианта: текстовый (по умолчанию), содержащийся и очерченный.
Текстовая кнопка
Текстовые кнопки обычно используются для менее выраженных действий, в том числе расположенных: в диалогах, в карточках. В карточках текстовые кнопки помогают сделать акцент на содержимом карточки.
Основная кнопка
Основные кнопки это кнопки с высоким акцентом, отличающиеся использованием подъема и заливки. Они содержат действия, которые являются основными для вашего приложения.
Вы можете удалить возвышение с помощью параметра disableElevation
.
Выделенная кнопка
Выделенные кнопки - это кнопки со средним акцентом. Они содержат действия, которые важны, но не являются основными в приложении.
Выделенные кнопки также являются альтернативой кнопкам с меньшим акцентом, или более яркой альтернативой текстовым кнопкам.
Обработка щелчков
Все компоненты принимают обработчик onClick
, который применяется к корневому элементу DOM.
<Button
onClick={() => {
alert('clicked');
}}
>
Click me
</Button>
Обратите внимание, что в документации не упоминаются нативные свойства (их очень много) в разделе API компонентов.
Цвет
Помимо использования цветов кнопок по умолчанию, вы можете добавить пользовательские цвета или отключить те, которые вам не нужны. Дополнительную информацию смотрите в примере Добавление новых цветов.
Размеры
Для получения кнопок большего или меньшего размера используйте параметр size
.
Кнопки с пиктограммами и надписями
Иногда для улучшения пользовательского интерфейса приложения вам могут понадобиться значки для определенных кнопок, поскольку мы легче распознаем логотипы, чем простой текст. Например, если у вас есть кнопка удаления, вы можете пометить ее значком мусорного ведра.
Кнопки-иконки
Кнопки-иконки часто встречаются на панелях управления приложений.
Иконки также подходят для кнопок-переключателей, которые позволяют выбрать или снять выделение с одного варианта, например, добавить или снять выделение с элемента. снять выделение, например, добавить или убрать звезду к элементу.
Настройка
Здесь приведены некоторые примеры настройки компонента. Подробнее об этом можно узнать на странице документации про переопределения.
🎨 Если вы ищете вдохновение, вы можете посмотреть примеры кастомизации MUI Treasury.
Кнопка загрузки
Кнопки загрузки могут показывать состояние загрузки и отключать взаимодействие.
Переключите переключатель загрузки, чтобы увидеть переход между различными состояниями.
Сложная кнопка
Текстовые кнопки, содержащиеся кнопки, плавающие кнопки действия и кнопки-иконки построены на основе одного и того же компонента: ButtonBase
.
Вы можете использовать преимущества этого компонента нижнего уровня для создания пользовательских взаимодействий.
Сторонняя библиотека маршрутизации
Одним из частых случаев использования является выполнение навигации только на клиенте, без HTTP-пути на сервер.
Компонент ButtonBase
предоставляет свойство component
для обработки этого случая использования.
Вот [более подробное руководство] (/material-ui/guides/routing/#button).
Ограничения
Курсор не разрешен
Компонент ButtonBase устанавливает pointer-events: none;
для отключенных кнопок, что предотвращает появление отключенного курсора.
Если вы хотите использовать not-allowed
, у вас есть два варианта:
- Чистый CSS. Вы можете удалить стиль pointer-events на отключенном состоянии элемента
<button>
:
.MuiButtonBase-root:disabled {
cursor: not-allowed;
pointer-events: auto;
}
Однако:
- Вы должны добавить
pointer-events: none;
обратно, когда вам нужно отображать [всплывающие подсказки на отключенных элементах] (/material-ui/react-tooltip/#disabled-elements). - Курсор не будет меняться, если вы отображаете не элемент кнопки, а что-то другое, например, элемент ссылки
<a>
.
- Изменение DOM. Вы можете обернуть кнопку:
<span style={{ cursor: 'not-allowed' }}>
<Button component={Link} disabled>
disabled
</Button>
</span>
Преимуществом этого способа является поддержка любого элемента, например, элемента ссылки <a>
.
Unstyled
The component also comes with an unstyled version. It's ideal for doing heavy customizations and minimizing bundle size.