ICEN UI 分栏拖拽
Docs ⌘K
Core · 稳定

分栏拖拽

可拖拽分栏容器:水平 / 垂直两向,双击复位,键盘可微调。

Preview
基础 split-pane

水平分栏(拖拽中间分隔条)

左侧面板 · 文件树 / 列表 / 导航
右侧面板 · 主内容 / 详情区

垂直分栏(上下)

上侧面板
下侧面板
html
<p class="chart-cap">水平分栏(拖拽中间分隔条)</p><div class="icen-split-pane" data-icen-split-pane style="height:200px;margin-top:6px">  <div class="icen-split-pane-first" style="padding:14px;font-size:var(--icen-density-font-size-sm);color:var(--icen-token-text-muted)">左侧面板 · 文件树 / 列表 / 导航</div>  <div class="icen-split-pane-divider" role="separator" aria-label="拖拽调整"></div>  <div class="icen-split-pane-second" style="padding:14px;font-size:var(--icen-density-font-size-sm);color:var(--icen-token-text-muted)">右侧面板 · 主内容 / 详情区</div></div><p class="chart-cap" style="margin-top:20px">垂直分栏(上下)</p><div class="icen-split-pane icen-split-pane--vertical" data-icen-split-pane style="height:240px;margin-top:6px">  <div class="icen-split-pane-first" style="padding:14px;font-size:var(--icen-density-font-size-sm);color:var(--icen-token-text-muted)">上侧面板</div>  <div class="icen-split-pane-divider" role="separator" aria-label="拖拽调整"></div>  <div class="icen-split-pane-second" style="padding:14px;font-size:var(--icen-density-font-size-sm);color:var(--icen-token-text-muted)">下侧面板</div></div>

特性

接口

初始化
initSplitPane()(kit 一行入口可直接命名导入)
导出
initSplitPane
事件
icen:split-change detail 契约见 IcenEventMap
类型
dist/behaviors/split-pane.d.mts(随 npm 包发布,含全部 JSDoc 约束)

安装

bun add @icen.ai/ui

一行引入该组件(CSS 与 behavior 自动带上,无需关心内部 CSS 文件名):

js
import { initSplitPane } from '@icen.ai/ui/kit/split-pane';initSplitPane();

也可以用脚手架直接打印引入行:

bash
bunx --bun @icen.ai/ui add split-pane

Astro 项目注意:kit 入口里的 CSS import 在页面 <script> 里会被 Astro 的 client bundle 摇掉——请改在布局 frontmatter 里引 CSS(import '@icen.ai/ui/components/split-pane.css';),JS 行为仍可走 kit。Vite SPA / webpack 项目无此问题。

用法

js
import { initSplitPane } from '@icen.ai/ui/behaviors/split-pane';initSplitPane();<!-- DOM 契约 --><div class="icen-split-pane [--vertical]" data-icen-split-pane style="--split:50%; height:400px">  <div class="icen-split-pane-first">左侧</div>  <div class="icen-split-pane-divider" role="separator"></div>  <div class="icen-split-pane-second">右侧</div></div><!-- data-icen-split-min/max(默认 10/90)、data-icen-split-step(键盘步长,默认 2) -->