Splitter 分割面板
可调整面板尺寸的分割组件,支持鼠标拖拽、键盘方向键、双击复位、折叠、延迟渲染、多面板与自定义手柄。
基础用法
默认 50/50
自定义初始比例
30% / 70%
限制范围
min / max 百分比
像素 min/max
min / max 支持像素值:200px 后缀按像素夹取(相对容器宽度换算),纯数字仍按百分比。
min="200px" max="500px"
吸附档位(snap)
snap 指定吸附档位(逗号分隔的百分比,如 25,50,75;也支持 200px 像素值按容器换算):拖拽到档位 ±8px 阈值内自动吸附;键盘方向键改为在档位间落档(该方向已无档可落时回落 ±1% 微调)。档位超出 min / max 范围时不可达(min/max 优先)。
snap 拖拽吸附
垂直方向
vertical 属性让面板上下堆叠、分隔条横向,键盘用 ↑ / ↓ 调整。
vertical 上下堆叠
折叠
collapsible 属性在分隔条上显示折叠按钮,点击收起/展开前一侧面板;折叠状态写回 collapsed 属性并派发 oas-collapse 事件。
collapsible 折叠 / 展开
collapsed 初始折叠态
双击复位
双击分隔条回到初始比例(拖拽后想恢复时直接双击即可),复位同样会派发 oas-resize。
双击分隔条复位
延迟渲染
lazy 属性下拖拽时只移动分隔条的视觉位置、不实时重渲面板内容,松手才写回比例并派发一次 oas-resize,适合内容渲染较重的面板。
lazy 拖拽延迟落盘
禁用(disabled)
disabled 禁用调整:分隔条不可拖、双击复位与方向键微调同步失效,光标恢复常态并标记 aria-disabled="true"(宿主镜像 data-disabled 供样式消费,config-provider 全局禁用注入同样生效)——布局比例需要锁定的展示场景。
disabled 禁用调整
手柄定制
slot="handle" 可在分隔条内放自定义手柄内容(图标/圆点等),拖拽与键盘操作不受影响。
slot="handle" 自定义手柄
多面板
直接子元素即面板,分隔条自动插在相邻面板间;sizes 用逗号分隔的百分比指定各面板比例,数量不匹配时回落均分。每个分隔条独立支持拖拽/键盘/折叠。
multiple 三面板 sizes
调整事件
oas-resize 事件
API
oas-splitter
属性
| 属性 | 说明 | 类型 | 默认值 |
|---|---|---|---|
collapsed | 受控折叠:存在即收起分隔条前一侧面板(组件折叠时自动写回;外部设置/移除即时生效) | boolean | — |
collapsible | 分隔条上显示折叠按钮,点击收起/展开前一侧面板 | boolean | — |
disabled | 禁用拖拽/键盘/双击调整:光标常态 + aria-disabled,面板尺寸冻结 | boolean | — |
lazy | 延迟渲染:拖拽中只动分隔条视觉位置,松手才写回比例并重渲面板(适合重内容面板) | boolean | — |
max | 上一面板最大占比:数字按百分比,200px 后缀按像素夹取;非法回落默认 90 | string | 90 |
min | 上一面板最小占比:数字按百分比,200px 后缀按像素夹取;非法回落默认 10 | string | 10 |
percent | 上一面板占比(%) | string | 50 |
sizes | 多面板模式各面板占比(逗号分隔百分比,如 30,40,30);数量与面板数不匹配回落均分 | string | — |
snap | 拖拽吸附档位:逗号分隔百分比或像素值;拖到档位 ±8px 内吸附,键盘方向键在档位间落档 | string | — |
vertical | 垂直方向:面板上下堆叠,分隔条横向,键盘用 ArrowUp/Down | boolean | — |
事件
| 事件 | 说明 |
|---|---|
oas-collapse | 折叠按钮切换,detail: { collapsed, side }(side=left 指分隔条前一侧) |
oas-resize | 调整后触发。两面板 detail: { percent };多面板 detail: { percent, index, sizes } |
插槽
| 名称 | 说明 |
|---|---|
handle | 分隔条内自定义手柄内容(图标/圆点等),不设时回退默认 grip |
left | 左面板内容(两面板模式) |
right | 右面板内容(两面板模式) |
分隔条 role="separator" + tabindex="0",聚焦后 ← / → 每次调整 1%。