组件
- 手风琴 (Accordion)
- 警示框 (Alert)
- 对话框 (Alert Dialog)
- 宽高比 (Aspect Ratio)
- 头像 (Avatar)
- 徽章 (Badge)
- 面包屑 (Breadcrumb)
- 按钮 (Button)
- 按钮组 (Button Group)
- 日历 (Calendar)
- 卡片 (Card)
- 轮播 (Carousel)
- 图表 (Chart)
- 复选框 (Checkbox)
- 折叠面板 (Collapsible)
- 组合框 (Combobox)
- 命令栏 (Command)
- 上下文菜单 (Context Menu)
- 数据表格 (Data Table)
- 日期选择器 (Date Picker)
- 对话框 (Dialog)
- 方向 (Direction)
- 抽屉 (Drawer)
- 下拉菜单 (Dropdown Menu)
- 空状态 (Empty)
- 字段 (Field)
- 悬浮卡片 (Hover Card)
- 输入框 (Input)
- 输入框组 (Input Group)
- OTP 输入框 (Input OTP)
- 项目 (Item)
- 快捷键 (Kbd)
- 标签 (Label)
- 菜单栏 (Menubar)
- 原生选择框 (Native Select)
- 导航菜单 (Navigation Menu)
- 分页 (Pagination)
- 气泡卡片 (Popover)
- 进度条 (Progress)
- 单选组 (Radio Group)
- 可调节大小 (Resizable)
- 滚动区域 (Scroll Area)
- 选择框 (Select)
- 分隔线 (Separator)
- 侧边栏 (Sheet)
- 导航侧边栏 (Sidebar)
- 骨架屏 (Skeleton)
- 滑块 (Slider)
- Sonner (吐司通知)
- 加载器 (Spinner)
- 开关 (Switch)
- 表格 (Table)
- 标签页 (Tabs)
- 文本域 (Textarea)
- 吐司 (Toast)
- 切换按钮 (Toggle)
- 切换组 (Toggle Group)
- 文字提示 (Tooltip)
- 排版 (Typography)
"use client"
import * as React from "react"安装
pnpm dlx shadcn@latest add button-group
用法
import {
ButtonGroup,
ButtonGroupSeparator,
ButtonGroupText,
} from "@/components/ui/button-group"<ButtonGroup>
<Button>Button 1</Button>
<Button>Button 2</Button>
</ButtonGroup>可访问性
ButtonGroup组件已设置role属性为group。- 使用 Tab 在组内的按钮之间进行导航。
- 使用
aria-label或aria-labelledby来标记按钮组。
<ButtonGroup aria-label="Button group">
<Button>Button 1</Button>
<Button>Button 2</Button>
</ButtonGroup>ButtonGroup 与 ToggleGroup 的区别
- 当需要组合用于执行操作的按钮时,请使用
ButtonGroup组件。 - 当需要组合用于切换状态的按钮时,请使用
ToggleGroup组件。
示例
排列方向 (Orientation)
设置 orientation 属性以改变按钮组的布局。
import { Button } from "@/components/ui/button"
import { ButtonGroup } from "@/components/ui/button-group"
import { MinusIcon, PlusIcon } from "lucide-react"尺寸 (Size)
通过单个按钮上的 size 属性来控制按钮大小。
import { Button } from "@/components/ui/button"
import { ButtonGroup } from "@/components/ui/button-group"
import { PlusIcon } from "lucide-react"嵌套 (Nested)
嵌套 <ButtonGroup> 组件以创建带有间距的按钮组。
import { Button } from "@/components/ui/button"
import { ButtonGroup } from "@/components/ui/button-group"
import { Input } from "@/components/ui/input"分隔符
ButtonGroupSeparator 组件可在视觉上分割组内的按钮。
使用 outline 变体的按钮由于自带边框,因此不需要分隔符。对于其他变体,建议使用分隔符以增强视觉层次感。
import { Button } from "@/components/ui/button"
import {
ButtonGroup,分割
通过添加由 ButtonGroupSeparator 分隔的两个按钮,来创建一个分割按钮组。
import { Button } from "@/components/ui/button"
import {
ButtonGroup,输入框
使用按钮包裹 Input 组件。
import { Button } from "@/components/ui/button"
import { ButtonGroup } from "@/components/ui/button-group"
import { Input } from "@/components/ui/input"输入框组
包裹 InputGroup 组件以创建复杂的输入布局。
"use client"
import * as React from "react"下拉菜单
创建一个带有 DropdownMenu 组件的分割按钮组。
"use client"
import { Button } from "@/components/ui/button"选择器
与 Select 组件配合使用。
"use client"
import * as React from "react"气泡卡片
与 Popover 组件配合使用。
import { Button } from "@/components/ui/button"
import { ButtonGroup } from "@/components/ui/button-group"
import { Field, FieldDescription, FieldLabel } from "@/components/ui/field"RTL (从右至左)
要在 shadcn/ui 中启用 RTL 支持,请参阅 RTL 配置指南。
"use client"
import * as React from "react"API 参考
ButtonGroup
ButtonGroup 组件是一个将相关按钮进行组合并保持样式一致的容器。
| 属性 | 类型 | 默认 |
|---|---|---|
orientation (方向) | "horizontal" (水平) | "vertical" (垂直) | "horizontal" |
<ButtonGroup>
<Button>Button 1</Button>
<Button>Button 2</Button>
</ButtonGroup>嵌套多个按钮组以创建带有间距的复杂布局。详情请参阅 嵌套 示例。
<ButtonGroup>
<ButtonGroup />
<ButtonGroup />
</ButtonGroup>ButtonGroupSeparator
ButtonGroupSeparator 组件可在视觉上分割组内的按钮。
| 属性 | 类型 | 默认 |
|---|---|---|
orientation (方向) | "horizontal" (水平) | "vertical" (垂直) | "vertical" (垂直) |
<ButtonGroup>
<Button>Button 1</Button>
<ButtonGroupSeparator />
<Button>Button 2</Button>
</ButtonGroup>ButtonGroupText
使用此组件在按钮组内显示文本。
| 属性 | 类型 | 默认 |
|---|---|---|
asChild (作为子元素) | 布尔值 | false |
<ButtonGroup>
<ButtonGroupText>Text</ButtonGroupText>
<Button>Button</Button>
</ButtonGroup>使用 asChild 属性将自定义组件渲染为文本,例如标签。
import { ButtonGroupText } from "@/components/ui/button-group"
import { Label } from "@/components/ui/label"
export function ButtonGroupTextDemo() {
return (
<ButtonGroup>
<ButtonGroupText asChild>
<Label htmlFor="name">Text</Label>
</ButtonGroupText>
<Input placeholder="Type something here..." id="name" />
</ButtonGroup>
)
}