跳转到内容

Badge 徽章

徽章组件会在其子项(们)的右上角生成一个小徽章。

简单的徽章

这个示例是个包含了文本的徽章,同时使用了主色和副色。 徽章会对其子元素生效。

4
<Badge badgeContent={4} color="primary">
  <MailIcon color="action" />
</Badge>

自定义徽章

Use color prop to apply theme palette to component.

44
<Badge badgeContent={4} color="secondary">
  <MailIcon color="action" />
</Badge>
<Badge badgeContent={4} color="success">
  <MailIcon color="action" />
</Badge>

徽章组件的可见性

以下是自定义组件的一个示例。 您可以在 重写文档页面 中了解更多有关此内容的信息。

<IconButton aria-label="cart">
  <StyledBadge badgeContent={4} color="secondary">
    <ShoppingCartIcon />
  </StyledBadge>
</IconButton>

徽章组件的可见性

徽章组件的隐显可以通过 invisible 属性来设置。

1

当 badgeContent 为零时,徽章组件将会自动隐藏。 您可以使用 showZero 属性覆盖它。

0
<Badge color="secondary" badgeContent={0}>
  <MailIcon />
</Badge>
<Badge color="secondary" badgeContent={0} showZero>
  <MailIcon />
</Badge>

最大值

您可以使用 max 属性来限制徽章组件内容的最大值。

9999+999+
<Badge color="secondary" badgeContent={99}>
  <MailIcon />
</Badge>
<Badge color="secondary" badgeContent={100}>
  <MailIcon />
</Badge>
<Badge color="secondary" badgeContent={1000} max={999}>
  <MailIcon />
</Badge>

圆点徽章

dot 属性会使得徽章渲染为一个小点。 这样的话,可以在不给出具体计数的情况下,组件能够提示一下变化。

<Badge color="secondary" variant="dot">
  <MailIcon />
</Badge>

徽章组件的 overlap 属性

你可以使用 anchorOrigin 属性移把徽章组件移动到封装的元素的任何角落。

<Badge color="secondary" badgeContent=" ">
  {rectangle}
</Badge>
<Badge color="secondary" badgeContent=" " variant="dot">
  {rectangle}
</Badge>
<Badge color="secondary" overlap="circular" badgeContent=" ">
  {circle}
</Badge>
<Badge color="secondary" overlap="circular" badgeContent=" " variant="dot">
  {circle}
</Badge>

徽章组件的校准

你可以使用 anchorOrigin 属性移把徽章组件移动到封装的元素的任何角落。

Vertical
Horizontal
11299+999+
<Badge
  anchorOrigin={{
    vertical: 'top',
    horizontal: 'right',
  }}
>

Unstyled

Badge组件还有一个无样式的版本。 It's ideal for doing heavy customizations and minimizing bundle size.

import BadgeUnstyled from '@mui/base/BadgeUnstyled';
5
<StyledBadge badgeContent={5}>
  <BadgeContent />
</StyledBadge>
<StyledBadge badgeContent={5} variant="dot">
  <BadgeContent />
</StyledBadge>

Accessibility

You can't rely on the content of the badge to be announced correctly. You should provide a full description, for instance, with aria-label: 那您应该提供一个完整的描述,例如, 使用 aria-label

<IconButton aria-label={notificationsLabel(100)}>
  <Badge badgeContent={100} color="secondary">
    <MailIcon />
  </Badge>
</IconButton>