JGuang

排版

Typography · Arco Design

交互预览
npm install @arco-design/web-react@2.66.18

排版 Typography

用于展示标题、段落、文本内容。

安装

npm install @arco-design/web-react@2.66.18

在入口引入 @arco-design/web-react/dist/css/arco.css,用 ConfigProvider 设置语言。React 19 项目还需在入口最先引入 @arco-design/web-react/es/_util/react-19-adapter,否则 Message、Modal 等命令式 API 无法渲染。

示例

  • 组合使用:排版组件用于展示标题、段落、文本内容,这里展示了排版的组合使用。
  • 标题:展示不同级别的标题。
  • 文本:不同样式的文本以及超链接组件。
  • 段落:文本段落样式。
  • 可交互:提供复制、编辑文本等功能。
  • 文本省略(推荐):当文字内容超出容器后会自动显示省略号。 当 rows = 1 时为单行省略,此时操作按钮默认不会展示,可以设置 expandable = { single: true } 开启。
  • 文本省略 - 操控按钮(推荐):通过 expandRender 自定义操控按钮。
  • 省略(不推荐):不推荐使用 ellipsis 属性开启折叠,建议使用 Typography.Ellipsis 组件替代。 在空间不足时省略多行文本内容。 注意:父元素 flex 模式下, 省略的 Typography 的 ellipsis 场景会收到影响,可以添加 width: 100% 使 Typography 充满整个父元素。 <br/> 注意注意注意: 使用谷歌翻译页面导致页面白屏报错? 组件用了 React.Fragement 导致的问题。React 原生的问题 (Issue 链接)。可以设置 ellipsis.wrapper 解决。比如 ellipsis={{ wrapper: 'span' }}。
  • 省略受控(不推荐):不推荐使用 ellipsis 属性开启折叠,建议使用 Typography.Ellipsis 组件替代 省略操作及相关配置受控案例

示例来自 Arco Design 官方仓库(MIT),固定在 npm 2.66.18 对应的提交;部分示例使用在线图片或上传地址,预览中网络请求被禁用。

API

Typography

参数名描述类型默认值
className节点类名string | string[]-
style节点样式CSSProperties-

Typography.Title

参数名描述类型默认值版本
bold粗体boolean--
code代码块样式boolean--
delete删除线样式boolean--
disabled禁用状态boolean--
underline下划线样式boolean--
type文本类型'primary' | 'secondary' | 'success' | 'error' | 'warning'--
className节点类名string | string[]--
ellipsis自动溢出省略(只支持字符串),具体参数配置看 EllipsisConfig。不推荐使用,建议 Typography.Ellipsis 替代boolean | EllipsisConfig--
heading标题级别,相当于 h1 h2 h3 h4 h5 h61 | 2 | 3 | 4 | 5 | 61-
mark标记样式boolean | { color: string }--
style节点样式CSSProperties--
copyable开启复制功能| boolean| {text?: string;onCopy?: (text: string, e) => void;icon?: ReactNode;tooltips?: [ReactNode, ReactNode];tooltipProps?: TooltipProps;}-onCopy params e in 2.31.0
editable开启可编辑功能| boolean| {editing?: boolean;tooltipProps?: TooltipProps;onStart?: (text, e) => void;onChange?: (text) => void;onEnd?: (text) => void;}-onStart params e in 2.31.0

Typography.Paragraph

参数名描述类型默认值版本
blockquote长引用boolean--
bold粗体boolean--
code代码块样式boolean--
delete删除线样式boolean--
disabled禁用状态boolean--
underline下划线样式boolean--
spacing段落的的行高,长文本(大于5行)的时候推荐使用默认行高,短文本(小于等于3行)推荐使用 close 紧密的行高。'default' | 'close'default-
type文本类型'primary' | 'secondary' | 'success' | 'error' | 'warning'--
className节点类名string | string[]--
ellipsis自动溢出省略(只支持字符串),具体参数配置看 EllipsisConfig。不推荐使用,建议 Typography.Ellipsis 替代boolean | EllipsisConfig--
mark标记样式boolean | { color: string }--
style节点样式CSSProperties--
copyable开启复制功能| boolean| {text?: string;onCopy?: (text: string, e) => void;icon?: ReactNode;tooltips?: [ReactNode, ReactNode];tooltipProps?: TooltipProps;}-onCopy params e in 2.31.0
editable开启可编辑功能| boolean| {editing?: boolean;tooltipProps?: TooltipProps;onStart?: (text, e) => void;onChange?: (text) => void;onEnd?: (text) => void;}-onStart params e in 2.31.0

Typography.Text

参数名描述类型默认值版本
bold粗体boolean--
code代码块样式boolean--
delete删除线样式boolean--
disabled禁用状态boolean--
underline下划线样式boolean--
type文本类型'primary' | 'secondary' | 'success' | 'error' | 'warning'--
className节点类名string | string[]--
ellipsis自动溢出省略(只支持字符串),具体参数配置看 EllipsisConfig。不推荐使用,建议 Typography.Ellipsis 替代boolean | EllipsisConfig--
mark标记样式boolean | { color: string }--
style节点样式CSSProperties--
copyable开启复制功能| boolean| {text?: string;onCopy?: (text: string, e) => void;icon?: ReactNode;tooltips?: [ReactNode, ReactNode];tooltipProps?: TooltipProps;}-onCopy params e in 2.31.0
editable开启可编辑功能| boolean| {editing?: boolean;tooltipProps?: TooltipProps;onStart?: (text, e) => void;onChange?: (text) => void;onEnd?: (text) => void;}-onStart params e in 2.31.0

EllipsisConfig

参数名描述类型默认值版本
cssEllipsis自动溢出省略(只支持字符串),在大量使用情况下建议开启提高性能。boolean-2.36.0 将默认值改为 false 并支持多行CSS省略。
defaultExpanded默认展开boolean-2.33.0
expandable显示展开/折叠按钮boolean--
expanded是否展开boolean-2.33.0
rows显示省略的行数number1-
ellipsisStr省略号string...-
suffix后缀string--
showTooltip配置省略时的弹出框boolean | { type?: 'tooltip' | 'popover'; props?: Record<string, any> }--
expandNodes配置 折叠 / 展开 的元素ReactNode[]--
onEllipsis在省略发生改变的时候触发,通常是窗口resize情况会触发。(isEllipsis: boolean) => void--
onExpand在折叠/展开状态发生改变的时候触发,通常是点击折叠/展开按钮触发。(isExpand: boolean, e) => void-e in 2.27.0

Typography.Ellipsis

参数名描述类型默认值
defaultExpanded默认展开boolean-
disabled是否禁用省略功能boolean-
expanded是否展开boolean-
rows显示省略的行数number1
className节点类名string | string[]-
expandable是否显示操控按钮。2.61.0 版本支持 single 属性boolean | { single?: boolean }true
showTooltip是否显示弹出提示boolean | TooltipProps-
style节点样式CSSProperties-
expandRender自定义渲染操控按钮(expanded: boolean) => ReactNode-
onEllipsis当省略状态发生改变时触发,首次省略时也会触发(isEllipsis: boolean) => void-
onExpand点击展开、折叠时触发(isExpand: boolean, ev: Event) => void-

关于超出省略

超出省略目前通过两种方式实现分别是 js二分法计算截断值 和 CSS超出省略 两种优缺点如下:

指标js二分法CSS省略
性能差(二分法多次操作dom计算)好
功能好差(只支持字符串)
  • 默认使用 js二分法 不断进行截断计算从而得到省略临界值,同时 resize 时还会多次触发重新计算。所以在大量使用对性能影响较大,但此方法不会在排版组件下插入额外样式dom。

  • 开启 ellipsis.cssEllipsis 将通过 CSS样式 进行省略展示,对于大量使用场景下会有显著性能提高。但因为需要添加 text-overflow 样式,.arco-typography 节点下将会新增两个 <span/> dom.

注意 2.36.0 版本对超出省略进行重构优化,造成Breaking Change 主要如下:

  • 开启 ellipsis.cssEllipsis 时,为了添加 text-overflow 在排版组件下插入了额外样式 dom,造成 dom 结构变化。
  • ellipsis.cssEllipsis 支持多行省略场景,并且默认值由 true 变为 false (规避升级后 dom 结构变化)。