Skip to content

Toolbar 工具栏

工具按钮组容器:role="toolbar" + aria-labelTab 进入后方向键在控件间移动(roving tabindex,只聚焦当前项)。配套切换组、分隔符、输入框三个部件,支持纵向布局、循环开关、整栏禁用、尺寸档位、溢出收纳与贴边形态。

基础用法(原生按钮)

基础用法(原生按钮)

切换组(编辑器场景)

oas-toolbar-toggle 是工具栏的 toggle 组部件:单选(缺省,radio 语义——组内互斥,点已选中项不变更)与多选(multiple,每项独立切换);value 受控(单选字符串 / 多选 JSON 数组),点击派发 oas-change。加粗/斜体/下划线用多选组,对齐方式用单选组——编辑器工具栏核心形态。

切换组(加粗/斜体 + 对齐方式)

样式: bold, underline | 对齐: left

分隔符部件

oas-toolbar-separator 取代旧的 oas-divider + data-toolbar-ignore 组合:自动 role="separator"、自动排除出 roving 导航,线段方向随工具栏横纵自动切换(横向工具栏内是竖线、纵向工具栏内是横线)。

oas-button + 分隔符

剪切复制粘贴撤销重做

纵向工具栏

orientation="vertical"aria-orientation="vertical" + 纵向布局,/ 随向导航(/ 兼容),分隔符自动变横线。

纵向工具栏

循环导航开关

loop 缺省开启(方向键在首尾循环),loop="false" 时在首尾停止(radio 组在边界停住更符合表单直觉)。

loop=false 不循环

尺寸档位

sizesmall / medium(默认)/ large。作用于工具栏间距、native 按钮与内置部件(切换组/输入框自动跟随)。

size 三档

整栏禁用

disabled 整栏禁用(aria-disabled + inert,子项不参与 roving);叠加 focusable-when-disabled 时子项保持可聚焦(aria-disabled,点击被拦截——适合挂 tooltip 解释禁用原因)。

整栏禁用

禁用项

disabled / aria-disabled 的按钮不参与方向键导航(roving 跳过)。

禁用项

链接项

a[href] 自动参与 roving 并打上 part="link"(统一链接样式与焦点环)。

链接项

帮助中心

分组右对齐(far)

子项加 data-toolbar-far:从该项起推到远端(横向工具栏右对齐、纵向工具栏贴底),常用于「主操作靠左、设置/帮助靠右」的布局。

far 右对齐分组

工具栏内输入框

oas-toolbar-input:参与 roving 的单 Tab 停靠(复合组件特例——焦点在输入框内时方向键由文本编辑消费,Tab 离开继续工具栏导航)。oas-input 输入中、oas-change Enter/失焦提交。

工具栏内输入框

input: -

溢出收纳(窄容器)

容器宽度不足时,超出项自动收进末尾「···」弹层(ResizeObserver 监听宽度,点击「···」展开镜像项,镜像项点击派发到原控件;被收纳的选中项会让「···」高亮)。收窄下方容器宽度试试。

溢出收纳

贴边形态(is-attached)

is-attached:容器化工具栏外观(边框 + 底色 + 内边距),适合直接贴在其他工具栏/面板边上。

is-attached

API

oas-toolbar

属性说明类型默认值
disabled整栏禁用(aria-disabled + inert,子项不参与 roving)boolean
focusable-when-disabled禁用时子项保持可聚焦(aria-disabled + 点击拦截,适合挂 tooltip 解释禁用原因)boolean
loop方向键循环导航开关:缺省开启;false 时在首尾停止string
orientation布局方向:horizontal(默认)/ vertical(纵向,方向键随向导航、分隔符自动变横线)stringhorizontal
size尺寸档位:small / medium(默认)/ largestring
名称说明
默认工具栏控件:按钮 / oas-button / 切换组 / 输入框 / 链接 / 分隔符等

oas-toolbar-toggle

属性说明类型默认值
disabled整组禁用boolean
items选项 JSON(property 赋值单向反射 attribute)ToolbarToggleItem[] | string[]
multiple多选模式(每项独立切换)boolean
size尺寸档位(small/medium/large),缺省跟随最近 oas-toolbarstring
value当前值:单选为字符串;多选为 JSON 数组字符串string
事件说明
oas-change切换,detail: { value: string | string[] }

oas-toolbar-input

属性说明类型默认值
disabled禁用boolean
placeholder占位提示string
size尺寸档位(small/medium/large),缺省跟随最近 oas-toolbarstring
value预设值(受控入口;事件不带写回,宿主可监听更新)string
事件说明
oas-changeEnter 或失焦提交,detail: { value }
oas-input输入中,detail: { value }
  • 宿主 role="toolbar" + aria-orientationaria-label 走 locale key(toolbar.label,默认「工具栏」)
  • 参与 roving 的子元素:native 控件(button/input/select/textarea/a[href])、交互 role、自定义元素(tag 含 -);oas-toolbar-separatordata-toolbar-ignorearia-hidden 排除,disabled/aria-disabled 自动跳过(focusable-when-disabled 模式下 aria-disabled 项保持可聚焦)
  • 键盘:Tab 进入(仅当前项可 Tab 到达),/(或 /)在控件间移动,Home/End 跳转首末;焦点在切换组/输入框内部时方向键由部件接管(Tab 离开继续工具栏导航)
  • 溢出收纳:ResizeObserver 监听宽度,超出项收进「···」弹层(仅横向)

基于 MIT OR Apache-2.0 双许可发布