For AI agents: the complete documentation index is available at https://a3s-lab.github.io/UI/v0.4.1/llms.txt, the full documentation bundle is available at https://a3s-lab.github.io/UI/v0.4.1/llms-full.txt, and this page is available as Markdown at https://a3s-lab.github.io/UI/v0.4.1/components/button-group.md.

按钮组

按钮组把作用于同一对象、层级相同的相邻操作连接起来,同时保留每个操作独立的名称、焦点和原生行为。

消息操作
季度规划来自发布团队的消息今天 09:42
尚未选择消息操作。

用法

导入 Tailwind、按钮组结构、按钮结构和一个视觉样式包。完整的 a3s.css 已经包含这些组件文件。

@import "tailwindcss";
@import "@a3s-lab/ui/base.css";
@import "@a3s-lab/ui/components/button-group.css";
@import "@a3s-lab/ui/components/button.css";
@import "@a3s-lab/ui/styles/a3s.css";

只有当控件作用于同一对象、处于同一层级,并且确实需要连续边界时才进行分组。根元素必须提供能说明共同任务的可访问名称。

<div role="group" aria-label="消息操作" class="button-group">
  <button type="button" class="btn" data-variant="outline">归档</button>
  <button type="button" class="btn" data-variant="outline">稍后提醒</button>
  <button type="button" class="btn" data-variant="outline">标记未读</button>
</div>

参数

API取值用途
根元素<div role="group">声明一组相关操作,不改变子控件行为
class="button-group"必填连接直接子控件的边界
aria-label 或 aria-labelledby没有可见组标题时必填说明共同对象或任务
data-orientationhorizontal、vertical默认为水平;只有任务或可用空间确实要求时才使用垂直方向
直接子 hr[role="separator"]可选,并设置 aria-hidden="true"在主操作和菜单触发器之间添加视觉分隔

按钮组没有 JavaScript 控制器、方法、自定义事件、React Hook 或 Vue Composable。每个子控件负责自己的原生激活,宿主负责操作状态和结果。React 与 Vue 适配器输出同一个 div、role="group" 和 button-group 类,不增加包装层。

状态与变体

方向

短小的同级操作默认水平排列。只有命令描述空间顺序,或所属区域有意保持狭窄时才使用垂直组。同一组中不能混用不同按钮高度。

水平与垂直操作
修订历史
对象顺序

拆分操作

拆分操作由一个可立即执行的命令和一个独立命名的菜单触发器组成。按钮组只负责连接两者的几何边界;下拉菜单负责弹层焦点、键盘导航、碰撞处理和焦点恢复。

发布拆分操作
可以发布。

长标签与可用性

不可用的子操作仍应清晰显示名称,并使用原生禁用状态。原因必须持续显示在附近;不要禁用根元素,也不要只依赖 Tooltip。窄屏下,文字操作可以同步收缩和换行,不能制造页面级横向滚动。

受限的发布操作

安全审阅通过后才能部署到生产环境。

RTL

按钮组通过逻辑起始边和结束边遵循 DOM 顺序。无论书写方向如何,第一个操作都出现在行内起始位置。只翻转表达空间方向的图标;对象、状态、品牌、加号和删除图标保持原方向。

可访问性与职责边界

每个子控件保留独立的可访问名称、焦点指示、禁用状态和原生 Tab 停靠点。按钮组不会加入方向键漫游,也不会把多个操作转换成一个控件。互斥视图使用 Tabs 或分段选择组件,独立格式状态使用 Toggle Group,带前后缀操作的值使用输入组,页码导航使用 Pagination,多组命令共享一行时使用 Toolbar。

在 200% 缩放和 320px 宽度下,按钮组必须保持在所属区域内,不能出现双重边框、标签裁切或页面横向滚动。粗指针设备上的每个子控件仍需满足按钮的触控目标约束。整组不可用时,应逐个禁用子控件,让辅助技术获得每条命令的真实可用性。