跳到主要内容

Divider 组件

Divider 组件用于分隔内容区域,提供多种样式和布局选项,增强页面的层次感和可读性。

基本使用

水平分割线

<Divider />
<Divider type="dashed" />
<Divider type="dotted" />
<Divider type="double" />

垂直分割线

<Space>
<View>左侧内容</View>
<Divider orientation="vertical" />
<View>右侧内容</View>
<Divider orientation="vertical" type="dashed" />
<View>右侧内容</View>
</Space>

带文本的分割线

<Divider>文本分割线</Divider>
<Divider type="dashed">带样式的文本分割线</Divider>
<Divider position="left">左侧文本</Divider>
<Divider position="right">右侧文本</Divider>

带图标的分割线

<Divider icon={<Icon name="heart" />} />
<Divider type="dashed" icon={<Icon name="star" />}>带图标</Divider>
<Divider icon={<Icon name="arrow-right" />} iconPosition="start">左侧图标</Divider>
<Divider icon={<Icon name="arrow-left" />} iconPosition="end">右侧图标</Divider>

不同颜色的分割线

<Divider color="primary" />
<Divider color="success" />
<Divider color="warning" />
<Divider color="error" />
<Divider color="info" />

不同尺寸的分割线

<Divider size="xs" />
<Divider size="sm" />
<Divider size="md" />
<Divider size="lg" />
<Divider size="xl" />

渐变分割线

<Divider gradient={{ start: '#ff0000', end: '#00ff00' }} />
<Divider
gradient={{
start: '#ff0000',
end: '#0000ff',
direction: 'to right'
}}
type="dashed"
/>

动画分割线

<Divider animated />
<Divider animated type="dashed" />
<Divider animated gradient={{ start: '#ff0000', end: '#00ff00' }} />

属性说明

属性类型默认值描述
orientationDividerOrientationhorizontal分割线方向,可选值:horizontalvertical
typeDividerTypesolid分割线类型,可选值:soliddasheddotteddoublegrooveridgeinsetoutset
positionDividerPositioncenter分割线文本位置,可选值:leftcenterright
sizeDividerSizemd分割线尺寸,可选值:xssmmdlgxl
colorDividerColorborder分割线颜色,可选值:primarysecondarysuccesswarningerrorinfolightdarkborder 或自定义颜色值
variantDividerVariantdefault分割线变体,可选值:defaultinsetmiddletextwith-icon
childrenReactNode-分割线文本内容
insetbooleanfalse是否边距内缩
centeredbooleanfalse是否居中显示
classNamestring-自定义类名
styleReact.CSSProperties-自定义样式
widthnumber | string-分割线宽度
heightnumber | string-分割线高度
marginnumber | string-分割线边距
paddingnumber | string-分割线内边距
opacitynumber1分割线透明度
borderRadiusnumber | string0分割线圆角
gradient{ start: string; end: string; direction?: 'to right' | 'to left' | 'to bottom' | 'to top' }-分割线渐变配置
animatedbooleanfalse是否启用动画效果
animationDurationnumber300动画持续时间(毫秒)
shadowbooleanfalse是否显示阴影
clickablebooleanfalse是否可点击
onClickCommonEventFunction<any>-点击事件处理函数
accessiblebooleantrue是否启用无障碍访问
accessibilityLabelstring-无障碍标签
accessibilityRolestringseparator无障碍角色
spacingnumber | string-分割线间距
align'start' | 'center' | 'end' | 'stretch'center分割线对齐方式
verticalAlign'top' | 'middle' | 'bottom'middle垂直对齐方式
iconReactNode-分割线图标
iconPosition'start' | 'center' | 'end'center图标位置
textStyleReact.CSSProperties-文本样式
textSpacingnumber16文本间距
textBackgroundstring#ffffff文本背景色
textPaddingnumber | string0 16px文本内边距
textBorderRadiusnumber | string4文本圆角
responsivebooleanfalse是否响应式
breakpoint'xs' | 'sm' | 'md' | 'lg'md响应式断点

类型定义

// 分割线方向
export type DividerOrientation = 'horizontal' | 'vertical';

// 分割线类型
export type DividerType = 'solid' | 'dashed' | 'dotted' | 'double' | 'groove' | 'ridge' | 'inset' | 'outset';

// 分割线位置
export type DividerPosition = 'left' | 'center' | 'right';

// 分割线尺寸
export type DividerSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';

// 分割线颜色
export type DividerColor = 'primary' | 'secondary' | 'success' | 'warning' | 'error' | 'info' | 'light' | 'dark' | 'border' | string;

// 分割线变体
export type DividerVariant = 'default' | 'inset' | 'middle' | 'text' | 'with-icon';

// 分割线组件属性接口
export interface DividerProps extends Omit<HTMLAttributes<HTMLDivElement>, 'orientation'> {
orientation?: DividerOrientation;
type?: DividerType;
position?: DividerPosition;
size?: DividerSize;
color?: DividerColor;
variant?: DividerVariant;
children?: ReactNode;
inset?: boolean;
centered?: boolean;
className?: string;
style?: React.CSSProperties;
width?: number | string;
height?: number | string;
margin?: number | string;
padding?: number | string;
animated?: boolean;
animationDuration?: number;
accessible?: boolean;
accessibilityLabel?: string;
accessibilityRole?: string;
opacity?: number;
shadow?: boolean;
borderRadius?: number | string;
gradient?: {
start: string;
end: string;
direction?: 'to right' | 'to left' | 'to bottom' | 'to top';
};
icon?: ReactNode;
iconPosition?: 'start' | 'center' | 'end';
clickable?: boolean;
onClick?: CommonEventFunction<any>;
responsive?: boolean;
breakpoint?: 'xs' | 'sm' | 'md' | 'lg';
spacing?: number | string;
align?: 'start' | 'center' | 'end' | 'stretch';
verticalAlign?: 'top' | 'middle' | 'bottom';
textStyle?: React.CSSProperties;
textSpacing?: number;
textBackground?: string;
textPadding?: number | string;
textBorderRadius?: number | string;
}

事件说明

事件描述参数
onClick点击分割线时触发e: CommonEvent

示例代码

完整示例

import { Divider, Icon, Space, View, Text } from 'taro-uno-ui';

const DividerExample = () => {
return (
<View>
<Text style={{ fontSize: '20px', fontWeight: 'bold', marginBottom: '12px', display: 'block' }}>基本分割线</Text>
<Divider />
<Divider type="dashed" />
<Divider type="dotted" />
<Divider type="double" />

<Text style={{ fontSize: '20px', fontWeight: 'bold', marginBottom: '12px', display: 'block', marginTop: '20px' }}>带文本的分割线</Text>
<Divider>居中文本</Divider>
<Divider position="left">左侧文本</Divider>
<Divider position="right">右侧文本</Divider>

<Text style={{ fontSize: '20px', fontWeight: 'bold', marginBottom: '12px', display: 'block', marginTop: '20px' }}>带图标的分割线</Text>
<Divider icon={<Icon name="heart" />} />
<Divider icon={<Icon name="star" />}>带图标和文本</Divider>

<Text style={{ fontSize: '20px', fontWeight: 'bold', marginBottom: '12px', display: 'block', marginTop: '20px' }}>不同颜色</Text>
<Divider color="primary" />
<Divider color="success" />
<Divider color="warning" />
<Divider color="error" />

<Text style={{ fontSize: '20px', fontWeight: 'bold', marginBottom: '12px', display: 'block', marginTop: '20px' }}>渐变分割线</Text>
<Divider
gradient={{
start: '#ff6b6b',
end: '#4ecdc4',
direction: 'to right'
}}
/>

<Text style={{ fontSize: '20px', fontWeight: 'bold', marginBottom: '12px', display: 'block', marginTop: '20px' }}>垂直分割线</Text>
<Space style={{ margin: '20px 0' }}>
<View>Item 1</View>
<Divider orientation="vertical" />
<View>Item 2</View>
<Divider orientation="vertical" type="dashed" />
<View>Item 3</View>
</Space>

<Text style={{ fontSize: '20px', fontWeight: 'bold', marginBottom: '12px', display: 'block', marginTop: '20px' }}>动画分割线</Text>
<Divider animated />
<Divider animated type="dashed" />
</View>
);
};

export default DividerExample;

平台支持

平台支持状态注意事项
微信小程序✅ 完全支持-
H5✅ 完全支持-
React Native✅ 部分支持部分样式可能存在差异
支付宝小程序✅ 部分支持部分样式可能存在差异
百度小程序✅ 部分支持部分样式可能存在差异
字节跳动小程序✅ 部分支持部分样式可能存在差异

注意事项

  1. 垂直分割线:垂直分割线需要在父容器中使用 display: flex 或类似布局,否则可能无法正确显示。
  2. 渐变分割线:渐变效果在某些小程序平台可能不支持或显示不一致。
  3. 动画效果:动画效果在某些低端设备上可能会影响性能,建议根据实际情况使用。
  4. 图标支持:图标可以是内置图标组件或自定义 React 节点。
  5. 响应式设计:设置 responsivetrue 时,分割线会根据屏幕尺寸自动调整样式。
  6. 无障碍访问:默认启用无障碍访问,可通过 accessible 属性关闭。

相关组件