组件
返回目录
组件详情入口
布局
@vean/ui
SSeparator

Separator

Separator 属于 布局 分类。建议先看演示与用法,再对照 API 表格完成接入和样式调整。

先用快捷跳转面板找到概述、用法、演示和 API,再往下细读完整文档内容。

快速跳转

同分类组件

如果你在同一类交互里做组合,这些组件通常会一起出现。

分隔线

概述

SSeparator 组件用于在视觉和语义上分隔内容区块。它渲染一条水平或垂直线,可选择在线上居中(或对齐)显示标签。适用于分隔相关内容块、分组菜单项或构建表单分区。

若仅需区块间距,优先使用 SCard 或 UnoCSS 间距工具;当需要可见的分割线辅助理解时使用 SSeparator。

用法

功能

  • 📏 方向 — 在 horizontal(水平)与 vertical(垂直)布局间切换。
  • 🏷️ 标签支持 — 通过 label prop 或默认插槽在线上渲染文本或自定义内容。
  • ↔️ 对齐方式 — 标签可位于 start(起始)、center(居中)或 end(末尾)。
  • 〰️ 边框样式 — 支持 solid(实线)、dashed(虚线)、dotted(点线)三种线型。
  • 📐 尺寸缩放 — 六档尺寸(xs–2xl)控制标签字号与间距。
  • ♿ 无障碍 — role="separator" 配合 aria-orientation;decorative prop 可将元素从无障碍树中移除,适用于纯视觉分隔。
  • 🎨 按插槽覆盖 — ui prop 与 class 支持 root、label 两个插槽的精细样式控制。
  • 🌐 RTL 适配 — 标签定位与位移自动适配从右到左布局。

演示

基础

Radix Primitives

An open-source UI component library.

Blog
Docs
Source

API

Aria 层

4

Separator

9 属性
属性
属性名类型默认值描述
class
ClassValue
—
应用于根元素的额外类名。
size
ThemeSize
—
组件的视觉尺寸。
ui
Partial<SeparatorUi>
—
该组件的按槽类重写。
align
Align
—
对齐。
border
SeparatorBorder
—
边框。
label
string
—
翻译组件渲染的标签文本。
labelProps
SeparatorLabelProps
—
传递给 label 元素的属性。
orientation
DataOrientation
—
组件的排列方向。 可选值为 `vertical` 或 `horizontal`。默认值为 `horizontal`。
decorative
boolean
—
该组件是否纯属装饰性。<br>当值为 `true` 时,将更新与无障碍相关的属性, 从而将渲染后的元素从无障碍树中移除。

SeparatorCompact

4 属性1 插槽
属性
属性名类型默认值描述
label
string
—
翻译组件渲染的标签文本。
labelProps
SeparatorLabelProps
—
传递给 label 元素的属性。
orientation
DataOrientation
—
组件的排列方向。 可选值为 `vertical` 或 `horizontal`。默认值为 `horizontal`。
decorative
boolean
—
该组件是否纯属装饰性。<br>当值为 `true` 时,将更新与无障碍相关的属性, 从而将渲染后的元素从无障碍树中移除。
插槽
插槽名参数描述
label
—
标签槽位的自定义内容。

SeparatorLabel

SeparatorRoot

2 属性
属性
属性名类型默认值描述
orientation
DataOrientation
—
组件的排列方向。 可选值为 `vertical` 或 `horizontal`。默认值为 `horizontal`。
decorative
boolean
—
该组件是否纯属装饰性。<br>当值为 `true` 时,将更新与无障碍相关的属性, 从而将渲染后的元素从无障碍树中移除。

注意事项

架构与对标差异

VeanUI 将 Separator 拆分为 Aria 层(@vean/aria/separator,负责 SeparatorRoot(role/aria/方向)、SeparatorLabel、SeparatorCompact(组合 + 标签可见性逻辑))与 styled 层(@vean/ui,负责 scv() 变体配方(size/orientation/align/border)与类注入 provideSeparatorUi)。这与 shadcn/ui 的 headless/styled 分离一致。

维度VeanUIAnt Design DividerElement Plus ElDividerMUI DividerMantine Dividershadcn/ui Separator
架构Aria + styled 分离,SeparatorUiSlot(root/label)+ Compact 聚合单组件单组件单组件单组件Aria + styled
标签label prop + 默认插槽;align(start/center/end)orientation propcontent-position—labelPosition—
边框样式border(solid/dashed/dotted)dashed propborder-style prop—variant—
尺寸缩放size(xs–2xl)控制标签字号 + 间距———size—
装饰模式decorative → role="none"————decorative
RTLrtl:translate-x + 逻辑 start-* 定位—————

运行时注意事项

  • 垂直分隔线:当 orientation="vertical" 时标签会被有意隐藏,因为标签无法在垂直线上有意义地定位。若需在垂直分隔线旁显示标签,请将标签置于组件外部。
  • 装饰模式:当 decorative 为 true 时,元素获得 role="none" 并省略 aria-orientation,从而从无障碍树中移除。适用于屏幕阅读器应跳过的纯视觉分隔。
  • 满宽 / 满高:水平分隔线默认 w-full,垂直分隔线默认 h-full。使用垂直分隔线时,请确保父容器有固定高度。

常见问题

何时应使用 decorative? 当分隔线纯属视觉装饰、不表示语义内容边界时设置 decorative。这会将 role 设为 none,对屏幕阅读器隐藏。对于传达内容分区含义的分隔线,请保持 decorative 未设置(默认 role="separator")。

为什么垂直分隔线的标签不显示? 垂直方向有意抑制标签显示。如需带标签的分隔线,请使用水平方向,或将标签文本置于组件外部。

如何自定义标签元素的属性? 传入 labelProps — 它会直接转发到 SeparatorLabel 元素。如需覆盖类名,请使用 ui.label 插槽。

如何让分隔线占满宽度? 水平分隔线默认 w-full。垂直分隔线请确保父容器有定义的高度;分隔线使用 h-full。

更新日志

版本记录按发布版本分组,便于快速查看这个组件在不同版本里的实际变更。

v0.19.0

2026-05-11

对比版本

新功能

实施 SeparatorCompact

范围: separator作者: soybeanjs, CopilotKit查看提交8ff3d

修复

增强插槽处理和导入一致性

范围: separator作者: soybeanfe查看提交2518f

v0.0.2

2025-11-18

对比版本

新功能

新增 Separator 组件,支持自定义方向和装饰选项

范围: separator作者: soybeanjs查看提交753e3

重构

将 divider 组件替换为 separator 组件,并更新相关导入语句

范围: separator作者: soybeanjs查看提交0f034

新功能

新增 Separator 组件,支持自定义方向和装饰选项

范围: separator作者: soybeanjs查看提交753e3

重构

将 divider 组件替换为 separator 组件,并更新相关导入语句

范围: separator作者: soybeanjs查看提交0f034