Skip to content

Splitter 分割面板 ​

可调整面板尺寸的分割组件,支持鼠标拖拽、键盘方向键、双击复位、折叠、延迟渲染、多面板与自定义手柄。

基础用法 ​

默认 50/50

左面板

自定义初始比例 ​

30% / 70%

左面板 30%

限制范围 ​

min / max 百分比

左面板 20% ~ 80%

像素 min/max ​

min / max 支持像素值:200px 后缀按像素夹取(相对容器宽度换算),纯数字仍按百分比。

min="200px" max="500px"

左面板 200px ~ 500px

吸附档位(snap) ​

snap 指定吸附档位(逗号分隔的百分比,如 25,50,75;也支持 200px 像素值按容器换算):拖拽到档位 ±8px 阈值内自动吸附;键盘方向键改为在档位间落档(该方向已无档可落时回落 ±1% 微调)。档位超出 min / max 范围时不可达(min/max 优先)。

snap 拖拽吸附

左侧占比:50%
左面板
拖到 25% / 50% / 75% 附近松手自动吸附;聚焦分隔条后 ← / → 在档位间跳动

垂直方向 ​

vertical 属性让面板上下堆叠、分隔条横向,键盘用 ↑ / ↓ 调整。

vertical 上下堆叠

上面板 40%

折叠 ​

collapsible 属性在分隔条上显示折叠按钮,点击收起/展开前一侧面板;折叠状态写回 collapsed 属性并派发 oas-collapse 事件。

collapsible 折叠 / 展开

左面板:展开
左面板

collapsed 初始折叠态

左面板(初始折叠)

双击复位 ​

双击分隔条回到初始比例(拖拽后想恢复时直接双击即可),复位同样会派发 oas-resize。

双击分隔条复位

先拖拽分隔条,再双击分隔条复位回 30%
左面板(初始 30%)

延迟渲染 ​

lazy 属性下拖拽时只移动分隔条的视觉位置、不实时重渲面板内容,松手才写回比例并派发一次 oas-resize,适合内容渲染较重的面板。

lazy 拖拽延迟落盘

左面板

禁用(disabled) ​

disabled 禁用调整:分隔条不可拖、双击复位与方向键微调同步失效,光标恢复常态并标记 aria-disabled="true"(宿主镜像 data-disabled 供样式消费,config-provider 全局禁用注入同样生效)——布局比例需要锁定的展示场景。

disabled 禁用调整

左面板 40%(已锁定)

手柄定制 ​

slot="handle" 可在分隔条内放自定义手柄内容(图标/圆点等),拖拽与键盘操作不受影响。

slot="handle" 自定义手柄

左面板

多面板 ​

直接子元素即面板,分隔条自动插在相邻面板间;sizes 用逗号分隔的百分比指定各面板比例,数量不匹配时回落均分。每个分隔条独立支持拖拽/键盘/折叠。

multiple 三面板 sizes

面板一 30%
面板二 40%
面板三 30%

调整事件 ​

oas-resize 事件

左侧占比:50%
左面板
拖拽分隔条,或聚焦分隔条后使用 ← / → 方向键调整

API ​

oas-splitter ​

属性 ​

属性说明类型默认值
collapsed受控折叠:存在即收起分隔条前一侧面板(组件折叠时自动写回;外部设置/移除即时生效)boolean—
collapsible分隔条上显示折叠按钮,点击收起/展开前一侧面板boolean—
disabled禁用拖拽/键盘/双击调整:光标常态 + aria-disabled,面板尺寸冻结boolean—
lazy延迟渲染:拖拽中只动分隔条视觉位置,松手才写回比例并重渲面板(适合重内容面板)boolean—
max上一面板最大占比:数字按百分比,200px 后缀按像素夹取;非法回落默认 90string90
min上一面板最小占比:数字按百分比,200px 后缀按像素夹取;非法回落默认 10string10
percent上一面板占比(%)string50
sizes多面板模式各面板占比(逗号分隔百分比,如 30,40,30);数量与面板数不匹配回落均分string—
snap拖拽吸附档位:逗号分隔百分比或像素值;拖到档位 ±8px 内吸附,键盘方向键在档位间落档string—
vertical垂直方向:面板上下堆叠,分隔条横向,键盘用 ArrowUp/Downboolean—

事件 ​

事件说明
oas-collapse折叠按钮切换,detail: { collapsed, side }(side=left 指分隔条前一侧)
oas-resize调整后触发。两面板 detail: { percent };多面板 detail: { percent, index, sizes }

插槽 ​

名称说明
handle分隔条内自定义手柄内容(图标/圆点等),不设时回退默认 grip
left左面板内容(两面板模式)
right右面板内容(两面板模式)

分隔条 role="separator" + tabindex="0",聚焦后 ← / → 每次调整 1%。

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