跳到内容
+

按钮

按钮让用户通过单击执行操作和做出选择。

简介

按钮用于传达用户可以执行的操作。Joy UI 按钮组件取代了原生的 HTML <button> 元素,并为样式和可访问性提供了扩展选项。

<Button onClick={()=>{}} />

游乐场


基础

import Button from '@mui/joy/Button';

Joy UI 按钮的行为类似于原生的 HTML <button>,因此它会包裹显示在其表面的文本。

下面的演示展示了按钮可用的三种基本状态:默认、禁用和加载中。

Enter 开始编辑

禁用

使用 disabled 属性来禁用交互和焦点

Enter 开始编辑

加载中

添加 loading 属性以显示按钮的加载状态。只要按钮处于加载状态,它就会被禁用。有关自定义选项,请参阅加载指示器加载位置

Enter 开始编辑

自定义

变体

按钮组件支持 Joy UI 的四种全局变体solid(默认)、softoutlinedplain

Enter 开始编辑

尺寸

按钮组件提供三种尺寸:smmd(默认)和 lg

Enter 开始编辑

颜色

主题中包含的每个调色板都可以通过 color 属性使用。尝试将不同的颜色与不同的变体结合使用。

变体

装饰器

使用 startDecoratorendDecorator 属性将操作和图标附加到按钮的任一侧

Enter 开始编辑

加载指示器

默认加载指示器使用圆形进度条组件。使用 loadingIndicator 属性将其替换为自定义指示器,如下所示

Enter 开始编辑

加载位置

loadingPosition 属性设置按钮加载指示器的位置。它支持三个值

  • center(默认):加载指示器嵌套在 loadingIndicatorCenter 插槽内,并在加载状态下替换按钮的内容。
  • start:当按钮处于加载状态时,加载指示器替换起始装饰器
  • end:当按钮处于加载状态时,加载指示器替换结束装饰器
Enter 开始编辑

按钮让用户执行操作,但如果该操作是导航到新页面,那么通常锚标签比按钮标签更可取。

如果您需要按钮的样式和链接的功能,那么您可以使用 component 属性将默认的 <button> 替换为 <a>,如下所示

Enter 开始编辑

文件上传

要创建文件上传按钮,请使用 component="label" 将按钮转换为标签,然后创建一个视觉上隐藏的 file 类型的 input。

图标按钮

import IconButton from '@mui/joy/IconButton';

使用图标按钮组件创建一个正方形按钮,用于容纳没有文本内容的图标。

CSS 变量游乐场

试用按钮和图标按钮组件可用的 CSS 变量,看看设计如何变化。您可以使用这些通过 sx 属性和主题自定义组件。

按钮

<Button
  startDecorator={<FavoriteBorder />}
>

CSS 变量


px
<IconButton
>
  <FavoriteBorder />
</IconButton>

CSS 变量


px

无障碍

所有按钮都必须具有有意义的 aria-label,以便需要辅助技术的用户可以理解其用途。

对于图标按钮来说,这一点尤其重要,因为它们不包含任何文本。例如,显示 <FavoriteBorder /> 图标的图标按钮可能具有如下标签

<IconButton aria-label="Add to favorites">
  <FavoriteBorder />
</IconButton>

解剖结构

按钮组件由单个根 <button> 元素组成,该元素包裹其内容

<button class="MuiButton-root" type="button">
  <!-- Button contents -->
</button>

API

请参阅下面的文档,以获取此处提及的组件的所有可用属性和类的完整参考。