布局
Divider
Divider component for separating content with horizontal or vertical lines
水平分割线
实线
虚线
带文本的分割线
默认居中
左对齐
右对齐
垂直分割线
左侧内容
中间内容
右侧内容
自定义颜色和粗细
品牌色粗线
错误色虚线
import { Divider } from "@/components/composed/divider/divider";
export function DividerDemo() {
return (
<div className="space-y-8 p-8">
{/* 水平分割线 */}
<div className="space-y-4">
<h3 className="text-sm font-medium text-[var(--Text-text-primary)]">
水平分割线
</h3>
<div className="space-y-4">
<p className="text-sm text-[var(--Text-text-secondary)]">实线</p>
<Divider />
<p className="text-sm text-[var(--Text-text-secondary)]">虚线</p>
<Divider variant="dashed" />
</div>
</div>
{/* 带文本的分割线 */}
<div className="space-y-4">
<h3 className="text-sm font-medium text-[var(--Text-text-primary)]">
带文本的分割线
</h3>
<div className="space-y-4">
<Divider>默认居中</Divider>
<Divider textAlign="left">左对齐</Divider>
<Divider textAlign="right">右对齐</Divider>
</div>
</div>
{/* 垂直分割线 */}
<div className="space-y-4">
<h3 className="text-sm font-medium text-[var(--Text-text-primary)]">
垂直分割线
</h3>
<div className="flex items-center" style={{ height: "100px" }}>
<span className="text-sm text-[var(--Text-text-secondary)]">
左侧内容
</span>
<Divider orientation="vertical" />
<span className="text-sm text-[var(--Text-text-secondary)]">
中间内容
</span>
<Divider orientation="vertical" variant="dashed" />
<span className="text-sm text-[var(--Text-text-secondary)]">
右侧内容
</span>
</div>
</div>
{/* 自定义样式 */}
<div className="space-y-4">
<h3 className="text-sm font-medium text-[var(--Text-text-primary)]">
自定义颜色和粗细
</h3>
<div className="space-y-4">
<Divider color="var(--Border-border-brand)" thickness="2px">
品牌色粗线
</Divider>
<Divider
color="var(--Border-border-error)"
thickness="3px"
variant="dashed"
>
错误色虚线
</Divider>
</div>
</div>
</div>
);
}
Divider 组件用于分隔内容区域,支持水平和垂直方向、实线和虚线样式、自定义颜色和粗细,以及在分割线中显示文本内容。
概述
- 双向支持:支持水平和垂直两种方向
- 多种样式:实线(solid)和虚线(dashed)两种样式
- 高度自定义:可自定义颜色、粗细、文本内容和位置
- 轻量级:纯原语组件构建,无额外依赖
- 类型安全:完整的 TypeScript 类型定义
快速开始
import { Divider } from "@/registry/wuhan/composed/divider";
export function Example() {
return (
<div className="space-y-4">
<p>内容上方</p>
<Divider />
<p>内容下方</p>
<Divider>带文本的分割线</Divider>
</div>
);
}特性
- 水平/垂直方向:根据场景选择合适的分割方向
- 实线/虚线样式:提供不同的视觉层次
- 文本支持:可在分割线中显示文本,支持左中右对齐
- 颜色定制:使用 CSS 变量或自定义颜色
- 粗细调整:支持自定义分割线粗细
- 合理间距:水平分割线上下边距 11px,垂直分割线左右边距 11px
安装
代码演示
基础用法
默认水平分割线。
默认水平分割线
内容下方
import { Divider } from "@/components/composed/divider/divider";
export function DividerDefault() {
return (
<div className="space-y-4 p-8">
<p className="text-[var(--Text-text-primary)]">默认水平分割线</p>
<Divider />
<p className="text-[var(--Text-text-primary)]">内容下方</p>
</div>
);
}
样式变体
实线和虚线样式。
实线(Solid)
带文本
虚线(Dashed)
带文本
import { Divider } from "@/components/composed/divider/divider";
export function DividerVariants() {
return (
<div className="space-y-8 p-8">
{/* 实线 */}
<div className="space-y-4">
<h3 className="text-sm font-medium text-[var(--Text-text-primary)]">
实线(Solid)
</h3>
<Divider variant="solid" />
<Divider variant="solid">带文本</Divider>
</div>
{/* 虚线 */}
<div className="space-y-4">
<h3 className="text-sm font-medium text-[var(--Text-text-primary)]">
虚线(Dashed)
</h3>
<Divider variant="dashed" />
<Divider variant="dashed">带文本</Divider>
</div>
</div>
);
}
带文本的分割线
在分割线中显示文本,支持左中右对齐。
文本居中
默认居中
明确居中
文本左对齐
左对齐文本
左对齐虚线
文本右对齐
右对齐文本
右对齐虚线
import { Divider } from "@/components/composed/divider/divider";
export function DividerWithText() {
return (
<div className="space-y-8 p-8">
{/* 文本居中 */}
<div className="space-y-4">
<h3 className="text-sm font-medium text-[var(--Text-text-primary)]">
文本居中
</h3>
<Divider>默认居中</Divider>
<Divider textAlign="center">明确居中</Divider>
</div>
{/* 文本左对齐 */}
<div className="space-y-4">
<h3 className="text-sm font-medium text-[var(--Text-text-primary)]">
文本左对齐
</h3>
<Divider textAlign="left">左对齐文本</Divider>
<Divider textAlign="left" variant="dashed">
左对齐虚线
</Divider>
</div>
{/* 文本右对齐 */}
<div className="space-y-4">
<h3 className="text-sm font-medium text-[var(--Text-text-primary)]">
文本右对齐
</h3>
<Divider textAlign="right">右对齐文本</Divider>
<Divider textAlign="right" variant="dashed">
右对齐虚线
</Divider>
</div>
</div>
);
}
垂直分割线
垂直方向的分割线,用于左右分隔内容。
第一部分
左侧内容区域
第二部分
中间内容区域
第三部分
右侧内容区域
import { Divider } from "@/components/composed/divider/divider";
export function DividerVertical() {
return (
<div className="p-8">
<div className="flex items-center gap-0" style={{ height: "120px" }}>
<div className="flex-1 text-center">
<p className="text-sm text-[var(--Text-text-primary)]">第一部分</p>
<p className="text-xs text-[var(--Text-text-secondary)] mt-2">
左侧内容区域
</p>
</div>
<Divider orientation="vertical" />
<div className="flex-1 text-center">
<p className="text-sm text-[var(--Text-text-primary)]">第二部分</p>
<p className="text-xs text-[var(--Text-text-secondary)] mt-2">
中间内容区域
</p>
</div>
<Divider orientation="vertical" variant="dashed" />
<div className="flex-1 text-center">
<p className="text-sm text-[var(--Text-text-primary)]">第三部分</p>
<p className="text-xs text-[var(--Text-text-secondary)] mt-2">
右侧内容区域
</p>
</div>
</div>
</div>
);
}
自定义样式
自定义颜色和粗细。
自定义颜色
品牌色
成功色
警告色
错误色
自定义粗细
1px 细线
2px 中等
3px 粗线
4px 更粗
组合自定义
品牌色粗实线
错误色粗虚线
import { Divider } from "@/components/composed/divider/divider";
export function DividerCustom() {
return (
<div className="space-y-8 p-8">
{/* 自定义颜色 */}
<div className="space-y-4">
<h3 className="text-sm font-medium text-[var(--Text-text-primary)]">
自定义颜色
</h3>
<Divider color="var(--Border-border-brand)">品牌色</Divider>
<Divider color="var(--Border-border-success)">成功色</Divider>
<Divider color="var(--Border-border-warning)">警告色</Divider>
<Divider color="var(--Border-border-error)">错误色</Divider>
</div>
{/* 自定义粗细 */}
<div className="space-y-4">
<h3 className="text-sm font-medium text-[var(--Text-text-primary)]">
自定义粗细
</h3>
<Divider thickness="1px">1px 细线</Divider>
<Divider thickness="2px">2px 中等</Divider>
<Divider thickness="3px">3px 粗线</Divider>
<Divider thickness="4px">4px 更粗</Divider>
</div>
{/* 组合自定义 */}
<div className="space-y-4">
<h3 className="text-sm font-medium text-[var(--Text-text-primary)]">
组合自定义
</h3>
<Divider
color="var(--Border-border-brand)"
thickness="2px"
variant="solid"
>
品牌色粗实线
</Divider>
<Divider
color="var(--Border-border-error)"
thickness="3px"
variant="dashed"
>
错误色粗虚线
</Divider>
</div>
</div>
);
}
API
Divider
分割线组件,支持多种方向、样式和自定义配置。
Props
| Prop | Type | Default | Description |
|---|---|---|---|
orientation | "horizontal" | "vertical" | "horizontal" | 分割线方向 |
variant | "solid" | "dashed" | "solid" | 分割线样式:实线或虚线 |
color | string | "var(--Border-divider-neutral-basic)" | 分割线颜色 |
thickness | string | "1px" | 分割线粗细 |
children | ReactNode | - | 文本内容 |
textAlign | "left" | "center" | "right" | "center" | 文本位置(仅在有文本时有效) |
className | string | - | 自定义类名 |
Example
import { Divider } from "@/registry/wuhan/composed/divider";
function DividerExamples() {
return (
<div className="space-y-8">
{/* 基础用法 */}
<Divider />
{/* 虚线 */}
<Divider variant="dashed" />
{/* 带文本 */}
<Divider>分割线文本</Divider>
{/* 文本左对齐 */}
<Divider textAlign="left">左对齐</Divider>
{/* 垂直分割线 */}
<div className="flex" style={{ height: "100px" }}>
<div>左侧内容</div>
<Divider orientation="vertical" />
<div>右侧内容</div>
</div>
{/* 自定义样式 */}
<Divider
color="var(--Border-border-brand)"
thickness="2px"
>
自定义分割线
</Divider>
</div>
);
}使用场景
内容分隔
使用水平分割线分隔不同的内容区域:
<div className="space-y-4">
<section>
<h2>第一部分</h2>
<p>第一部分的内容...</p>
</section>
<Divider />
<section>
<h2>第二部分</h2>
<p>第二部分的内容...</p>
</section>
</div>列表分组
使用带文本的分割线标识列表分组:
<div className="space-y-4">
<div>项目 1</div>
<div>项目 2</div>
<Divider textAlign="left">更多项目</Divider>
<div>项目 3</div>
<div>项目 4</div>
</div>垂直布局
使用垂直分割线分隔左右内容:
<div className="flex items-center" style={{ height: "200px" }}>
<div className="flex-1">
<h3>左侧面板</h3>
<p>左侧内容...</p>
</div>
<Divider orientation="vertical" />
<div className="flex-1">
<h3>右侧面板</h3>
<p>右侧内容...</p>
</div>
</div>强调重要信息
使用自定义颜色和粗细强调特定分隔:
<div className="space-y-4">
<p>普通内容</p>
<Divider
color="var(--Border-border-brand)"
thickness="2px"
>
重要分隔
</Divider>
<p>重要内容区域</p>
</div>设计指南
最佳实践
-
选择合适的方向:
- 水平分割线用于上下内容分隔
- 垂直分割线用于左右内容分隔
-
样式选择:
- 实线用于明确的内容分隔
- 虚线用于轻量级的视觉分组
-
文本使用:
- 文本应简短明确
- 使用文本对齐突出重点
- 避免过长的文本内容
-
颜色和粗细:
- 默认样式适用于大多数场景
- 使用品牌色强调重要分隔
- 粗线用于强调,细线用于轻量级分隔
-
间距控制:
- 默认间距(上下/左右 11px)适用于大多数场景
- 如需调整,使用 className 覆盖
可访问性
- 使用语义化的颜色变量
- 确保分割线颜色与背景有足够对比度
- 文本内容应具有可读性
- 垂直分割线确保有足够高度可见
常见问题
Q: 如何调整分割线的间距?
A: 通过 className 覆盖默认间距:
// 水平分割线自定义上下间距
<Divider className="my-4" />
// 垂直分割线自定义左右间距
<Divider orientation="vertical" className="mx-4" />Q: 如何在垂直分割线中添加文本?
A: 目前垂直分割线主要用于视觉分隔,带文本的垂直分割线较少使用。如需实现,可以自定义样式。
Q: 如何让分割线不占据整个宽度/高度?
A: 使用容器限制分割线的尺寸:
// 限制水平分割线宽度
<div className="w-1/2">
<Divider />
</div>
// 限制垂直分割线高度
<div style={{ height: "50px" }}>
<Divider orientation="vertical" />
</div>Q: 如何自定义文本样式?
A: 文本样式通过 DividerTextPrimitive 控制。如需更多自定义,可以直接使用原语组件。
原语组件
Divider 组件基于以下原语组件构建:
DividerContainerPrimitive: 容器组件,处理方向和布局DividerLinePrimitive: 线条组件,处理样式、颜色和粗细DividerTextPrimitive: 文本组件,处理文本内容显示