Typography 版式 ​

文字,图片,段落,数值的基本格式。

使用场景 ​

  • 对文章、博客、日志等的文本内容进行展示时。
  • 对文本进行复制和省略等基础操作时。

代码演示 ​

如何引入 ​

jsx
import { Typography } from '@kousum/semi-ui-vue';

标题组件 ​

通过设置 heading 可以展示不同级别的标题。

文本组件 ​

内置不同样式的文本。可以通过 icon 属性传入图标,这种方式传入的图标默认与文本有间距,同时在链接文本的情况不会出现下划线符合设计规范。

链接文本支持传入 object,将对应的属性挂在 <a> 标签上。
v>=1.0 后默认不再有下划线,可以配合 underline 属性在 hover,active 态增加下划线的样式。

段落组件 ​

段落组件拥有两种行距,可以通过设置 spacing='extended' 使用更宽松的行距。

数值组件 ​

Numeral 组件在Text组件的基础上,添加了属性: rule, precision, truncate, parser, 以提供需要单独处理文本中数值的能力。

注意
Numeral 组件会递归遍历 Children 检测其中所有的数字文本进行转换展示,请注意控制渲染结构层级;
对于 rule 为 percentage 的 Numeral 组件,数据处理规则有变化。在 v2.22.0-v2.29.0 中,对于绝对值大于等于 1 的 num,结果为 num%; 对于绝对值小于等于 1 的 num,结果为 (num*100)%。在 v2.30.0 版本及之后统一为 (num*100)%。

precision 可以设置小数点后保留位数, 用于设置精度
truncate 小数点后保留位截段取整方式,可选 ceil, floor, round,作用与 Math.ceil、Math.floor、Math.round 对齐
rule 用于设置解析规则

  • 设为 percentages 会将数字自动转换为百分比形式展示
  • 设为 bytes-decimal 会将数字自动换算为字节对应的单位展示, 1 KB 定义为等于 1000 字节,(B, KB, MB, GB, TB, PB, EB, ZB, YB)
  • 设为 bytes-binary 会将数字自动换算为字节对应的单位展示,1 KiB 定义为等于 1024字节,(B, KiB, MiB, GiB, TiB, PiB, EiB, ZiB, YiB)
  • 设为 text时,仅自动对数字进行取整,根据 precision 和 truncate 属性
  • 设为 numbers时,会将非数字字符进行过滤,仅展示数字
  • 设为 exponential 时,会将数字自动转换为科学计数法形式展示

可以通过 parser 自定义解析规则

文本大小 ​

段落组件和文本组件支持两种尺寸,small(12px) 和 normal(14px) 和 inherit,默认为normal。

当段落组件或者文本组件嵌套使用时候,设置内层组件的 size 属性为 inherit,内层组件的 size 将继承外层组件的尺寸设置。

可复制文本 ​

可通过配置 copyable 属性支持文本的复制。
当 copyable 配置为 true时,默认复制内容为 children 本身,注意,此时 children 只支持 string类型传入
当 copyable 配置为 object 时,可通过 copyable.content 指定复制至粘贴板的内容,与 children 不再强关联, 此时 children 将不再限定类型,但 copyable.content 仍需要为 string

省略文本 ​

支持文本的省略,可以通过 ellipsis 配置相关参数,具体参考 Ellipsis Config。

注意事项
1. ellipsis 仅支持纯文本的截断,不支持 reactNode 等复杂类型,请确保 children 传入内容类型为 string
2. ellipsis 要实现缩略,需要有明确的 width或 maxWidth 宽度限制做对比判断。若自身未设置宽度(例如纯依靠 flex 属性撑开),或 width为 100% 等不定数值,那么父级需要有明确的 width或 maxWidth
3. ellipsis 需要获取 DOM 的宽高度等信息用以做基本判断,若自身或父级存在 display:none 样式会导致取值不正确,此时缩略会失效
4. 省略文本的计算,分为CSS 截断和 JS 截断,强依赖 DOM 元素的相关状态获取。在结构复杂的页面,大量使用 Typography 可能会导致过多的 reflow 重排,建议选择合适的省略方式避免造成性能负担。更多信息见 FAQ

注意事项
当发生超长文本在弹出的 tooltip 没有换行时,可通过手动设置一下 word-break 或者 word-wrap 等换行相关属性进行调整, 更多细节可查看 Tooltip 的 FAQ 部分
scss
// 按需配置 word-break

.components-typography-demo {
    word-break: break-word;
    // 或
    word-break: break-all;
}

API参考 ​

Typography.Text ​

属性说明类型默认值版本
component自定义渲染元素html elementspan
code是否被 code 元素包裹boolean-
copyable是否可拷贝boolean | object:Copyable Configfalse0.27.0
delete添加删除线样式booleanfalse0.27.0
disabled禁用文本booleanfalse0.27.0
ellipsis设置自动溢出省略boolean|object:Ellipsis Configfalse0.34.0
icon前缀图标ReactNode-0.27.0
link是否为链接,传object时,属性将透传给a标签boolean|objectfalse0.27.0
mark添加标记样式booleanfalse0.27.0
size文本大小,可选normal,small,inheritstringnormal0.27.0
strong是否加粗booleanfalse0.27.0
type文本类型,可选 primary, secondary, warning, danger, tertiary(v>=1.2.0), quaternary(v>=1.2.0), success(v>=1.7.0)stringprimary0.27.0
underline添加下划线样式booleanfalse0.27.0
weight设置字重number2.34.0

Typography.Title ​

属性说明类型默认值版本
component自定义渲染元素,默认由 heading 决定html elementh1~h6
copyable是否可拷贝boolean | object:Copyable Configfalse0.27.0
delete添加删除线样式booleanfalse0.27.0
disabled禁用文本booleanfalse0.27.0
ellipsis设置自动溢出省略boolean|object:Ellipsis Configfalse0.34.0
heading标题级别,可选1, 2, 3,4,5,6,对应相应的标题number10.27.0
link是否为链接,传object时,属性将透传给a标签boolean|objectfalse0.27.0
mark添加标记样式booleanfalse0.27.0
type文本类型,可选 primary, secondary, warning, danger, tertiary(v>=1.2.0), quaternary(v>=1.2.0), success(v>=1.7.0)stringprimary0.27.0
underline添加下划线样式booleanfalse0.27.0
weight设置字重, 可选 light, regular, medium, semibold, bold, defaultstring, number2.34.0

Typography.Paragraph ​

属性说明类型默认值版本
component自定义渲染元素html elementp
copyable是否可拷贝boolean | object:Copyable Configfalse0.27.0
delete添加删除线样式booleanfalse0.27.0
disabled禁用文本booleanfalse0.27.0
ellipsis设置自动溢出省略boolean|object:Ellipsis Configfalse0.34.0
link是否为链接,传object时,属性将透传给a标签boolean|objectfalse0.27.0
mark添加标记样式booleanfalse0.27.0
size文本大小,可选normal,smallstringnormal0.27.0
spacing行距大小,可选normal,extendedstringnormal0.27.0
strong是否加粗booleanfalse0.27.0
type文本类型,可选 primary, secondary, warning, danger, tertiary(v>=1.2.0), quaternary(v>=1.2.0), success(v>=1.7.0)stringprimary0.27.0
underline添加下划线样式booleanfalse0.27.0

Typography.Numeral ​

属性说明类型默认值版本
rule解析规则,可选 text, numbers, bytes-decimal, bytes-binary, percentages, exponentialstringtext2.22.0
precision可以设置小数点后保留位数, 用于设置精度number02.22.0
truncate小数点后保留位截段取整方式,可选 ceil, floor, round,作用与 Math.ceil、Math.floor、Math.round 对齐stringround2.22.0
parser自定义数值解析函数(str: string) => string-2.22.0
component自定义渲染元素html elementspan2.22.0
code是否被 code 元素包裹boolean-2.22.0
copyable是否可拷贝boolean | object:Copyable Configfalse2.22.0
delete添加删除线样式booleanfalse2.22.0
disabled禁用文本booleanfalse2.22.0
ellipsis设置自动溢出省略boolean| object:Ellipsis Configfalse2.22.0
icon前缀图标ReactNode-2.22.0
link是否为链接,传object时,属性将透传给a标签boolean|objectfalse2.22.0
mark添加标记样式booleanfalse2.22.0
size文本大小,可选normal,smallstringnormal2.22.0
strong是否加粗booleanfalse2.22.0
type文本类型,可选 primary, secondary, warning, danger, tertiary, quaternary, successstringprimary2.22.0
underline添加下划线样式booleanfalse2.22.0

Ellipsis Config ​

属性说明类型默认值
collapseText折叠的展示文本string收起
collapsible是否支持折叠booleanfalse
expandText展开的展示文本string展开
expandable是否支持展开booleanfalse
pos省略截断的位置,支持末尾和中间截断:end, middlestringend
rows省略溢出行数number1
showTooltip是否展示 tooltip 及相关配置: type,浮层内容承载的组件,支持 Tooltip| Popover;opts,其他需要透传给浮层组件的属性; renderTooltip,自定义渲染弹出层组件boolean | {type: 'tooltip'|'popover', opts: object, renderTooltip: (content: ReactNode, children: ReactNode) => ReactNode}false
suffix始终展示的后缀string-
onExpand展开/收起的回调function(expanded: bool, Event: e)-

Copyable Config ​

属性说明类型默认值版本
content复制出的文本string-0.27.0
copyTip复制图标的 tooltip 展示内容React.node-1.0.0
icon自定义渲染复制节点React.node-2.31.0
onCopy复制回调Function(e:Event, content:string, res:boolean)-0.27.0
successTip复制成功的展示内容React.node-0.33.0

文案规范 ​

  • Link
    • 文字链接需要清晰且可预测,用户应该能够预测他们点击链接时会发生什么
    • 切勿通过错误标记链接来误导用户
    • 避免使用“Click here”或“Here”作为独立链接
✅ 推荐用法❌ 不推荐用法
No spaces yet? Create space No spaces yet? Click here
  • 避免将整个句子作为可点击的文字链接,而是将描述具体去向的文字作为链接内容
✅ 推荐用法❌ 不推荐用法
Views user documentation for detailsView user documentation for details
  • 使用短术语或词作为链接文本会更有利于国际化,以避免由于不同的语言的语法和语序不同,而出现链接文字被拆分的问题
✅ 推荐用法❌ 不推荐用法
Manage notifications toManage notifications to
  • 以文字链接结尾时,不需要跟随标点符号,除了问号“?”
✅ 推荐用法❌ 不推荐用法
No spaces yet? Create space No spaces yet? Click here
Forgot password ?Forgot password
  • 链接文字不要包含冠词“the, a, an”
✅ 推荐用法❌ 不推荐用法
View user documentation for detailsView the user documentation for details

设计变量 ​

FAQ ​

  • Typography 省略具体机制及注意事项?

    Semi 截断有两种策略, CSS 截断和 JS 截断。当设置中间截断(pos='middle')、可展开(expandable)、有后缀(suffix 非空)、可复制(copyable),启用 JS 截断策略;非以上场景,启用 CSS 截断策略。

    通常来说,CSS 截断性能优于 JS 截断。在 children、 容器尺寸不变的情况下,CSS 截断只涉及 1~2 次计算,js 截断可能涉及多次计算。

    同时使用大量带有截断功能的 Typography 需注意性能消耗,如在 Table 中,可通过设置合理的页容量进行分页减少性能损耗。