基础

版式

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

使用场景

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

代码演示

如何引入

import { Typography } from '@fibrous/semi-ui-react';

标题组件

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

h1. Semi Design

h2. Semi Design

h3. Semi Design

h4. Semi Design

h5. Semi Design
h6. Semi Design
代码
import { Typography } from '@fibrous/semi-ui-react';

export default function TypographyDemo() {
    const { Title } = Typography;
    return (
        <div>
            <Title style={{ margin: '8px 0' }}>h1. Semi Design</Title>
            <Title heading={2} style={{ margin: '8px 0' }}>
                h2. Semi Design
            </Title>
            <Title heading={3} style={{ margin: '8px 0' }}>
                h3. Semi Design
            </Title>
            <Title heading={4} style={{ margin: '8px 0' }}>
                h4. Semi Design
            </Title>
            <Title heading={5} style={{ margin: '8px 0' }}>
                h5. Semi Design
            </Title>
            <Title heading={6} style={{ margin: '8px 0' }}>
                h6. Semi Design
            </Title>
        </div>
    );
}

文本组件

内置不同样式的文本。

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

Text

Secondary

Tertiary v>=1.2.0

Quaternary v>=1.2.0

Warning

Danger

Success v>=1.7.0

Disabled

Default Mark

Example Code

Underline

Deleted

Strong
代码
import { Typography } from '@fibrous/semi-ui-react';

export default function TypographyDemo() {
    const { Text } = Typography;
    return (
        <div>
            <Text>Text</Text>
            <br />
            <br />
            <Text type="secondary">Secondary</Text>
            <br />
            <br />
            <Text type="tertiary">{`Tertiary v>=1.2.0`}</Text>
            <br />
            <br />
            <Text type="quaternary">{`Quaternary v>=1.2.0`}</Text>
            <br />
            <br />
            <Text type="warning">Warning</Text>
            <br />
            <br />
            <Text type="danger">Danger</Text>
            <br />
            <br />
            <Text type="success">{`Success v>=1.7.0`}</Text>
            <br />
            <br />
            <Text disabled>Disabled</Text>
            <br />
            <br />
            <Text mark>Default Mark</Text>
            <br />
            <br />
            <Text code>Example Code</Text>
            <br />
            <br />
            <Text underline>Underline</Text>
            <br />
            <br />
            <Text delete>Deleted</Text>
            <br />
            <br />
            <Text strong>Strong</Text>
        </div>
    );
}

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

段落组件

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

默认行距

Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的 Web 应用。


宽松行距

Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的 Web 应用。

代码
import { Typography } from '@fibrous/semi-ui-react';

export default function TypographyDemo() {
    const { Paragraph, Title } = Typography;
    return (
        <div>
            <Title heading={5}>默认行距</Title>
            <Paragraph>Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的 Web 应用。</Paragraph>
            <br />
            <Title heading={5}>宽松行距</Title>
            <Paragraph spacing="extended">Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的 Web 应用。</Paragraph>
        </div>
    );
}

数值组件

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

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 时,会将数字自动转换为科学计数法形式展示

Numeral 默认渲染 span,内容里包含 p 等块级元素时,用 component="div" 改为块级容器。

点赞量:16.1 K

播放量:244.4K

好评率: 91.50%

这场比赛我的胜率是60%,输的概率是40%

已使用: 1.00 KB

未使用: 1.02 MB

已使用: 1.00 KiB

未使用: 1.81 TiB

代码
import { Typography } from '@fibrous/semi-ui-react';

export default function TypographyDemo() {
    const { Numeral } = Typography;
    return (
        <div>
            <Numeral precision={1} component="div">
                <p>点赞量:1.6111e1 K</p>
            </Numeral>

            <p>
                播放量:
                <Numeral rule="numbers" precision={1}>
                    2.4444e2
                </Numeral>
                K
            </p>

            <Numeral rule="percentages" precision={2} component="div" style={{ marginBottom: 12 }}>
                <p>好评率: 0.915</p>
            </Numeral>

            <Numeral rule="percentages" style={{ marginBottom: 12 }}>
                这场比赛我的胜率是0.6,输的概率是0.4
            </Numeral>

            <Numeral rule="bytes-decimal" precision={2} truncate="floor" component="div">
                <p>已使用: 1000</p>
                <p>未使用: {1024 * 1000}</p>
            </Numeral>

            <Numeral rule="bytes-binary" precision={2} truncate="floor" component="div">
                <p>已使用: 1024</p>
                <p>未使用: {2e12}</p>
            </Numeral>
        </div>
    );
}

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

Semi Design 重视我们的用户,加入并助力我们不断完善

Stars:7,100+

Fork:560+

Downloads:5,000,000+

Contributors:100+


现已服务 100,000+ 用户,前往官网 >>
代码
import { Typography } from '@fibrous/semi-ui-react';

export default function TypographyDemo() {
    const { Numeral } = Typography;

    function parserTCH(oldVal: string) {
        return oldVal
            .split(' ')
            .map((item) => (Number(item) ? `${item.replace(/(\d)(?=(?:\d{3})+(?:\.|$))/g, '$1,')}+` : item))
            .join(' ');
    }

    const infos = [
        { type: 'Stars', min: '7100' },
        { type: 'Fork', min: '560' },
        { type: 'Downloads', min: '5000000' },
        { type: 'Contributors', min: '100' },
    ].map((item) => (
        <p key={item.min}>
            {item.type}:<b style={{ color: 'var(--semi-violet-5)' }}>{item.min}</b>
        </p>
    ));

    return (
        <div>
            <Numeral parser={parserTCH} component="div">
                Semi Design 重视我们的用户,加入并助力我们不断完善
                {infos}
            </Numeral>
            <br />
            <Numeral link={{ href: 'https://semi.design', target: '_blank' }} parser={parserTCH}>
                现已服务 {1e5} 用户,前往官网 &gt;&gt;
            </Numeral>
        </div>
    );
}

文本大小

段落组件和文本组件支持两种尺寸 small(12px)和 normal(14px),另可设为 inherit 继承外层尺寸,默认为 normal。

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

正常文本

Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的 Web 应用。


小文本

Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的 Web 应用。


这是一段文本,样式为 small这是一段链接,设置 size 为 inherit 继承外部样式设置
代码
import { Typography } from '@fibrous/semi-ui-react';

export default function TypographyDemo() {
    const { Paragraph, Text } = Typography;
    return (
        <div>
            <Text>正常文本</Text>
            <Paragraph spacing="extended">Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的 Web 应用。</Paragraph>
            <br />
            <Text size="small">小文本</Text>
            <Paragraph size="small">Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的 Web 应用。</Paragraph>
            <br />
            <Text size="small">
                这是一段文本,样式为 small
                <Text link size="inherit">
                    这是一段链接,设置 size 为 inherit 继承外部样式设置
                </Text>
            </Text>
        </div>
    );
}

可复制文本

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

可以通过 copyable.render 属性,自定义复制按钮的渲染逻辑

点击右边的图标复制文本。

点击复制文本。

点击右边的图标复制文本。

时间戳: 1563849139s

自定义复制节点

自定义复制渲染



粘贴区域:
代码
import { IconSetting } from '@fibrous/semi-icons-react';
import { Typography, TextArea, Button, Toast } from '@fibrous/semi-ui-react';

export default function TypographyDemo() {
    const { Paragraph, Text, Numeral } = Typography;
    const timestamp = 1563849138.25;

    return (
        <div>
            <Paragraph copyable>点击右边的图标复制文本。</Paragraph>
            <Paragraph copyable={{ content: 'Hello, Semi Design!' }}>点击复制文本。</Paragraph>
            <Paragraph copyable={{ onCopy: () => Toast.success({ content: '复制文本成功' }) }}>点击右边的图标复制文本。</Paragraph>
            时间戳:{' '}
            <Numeral truncate="ceil" copyable underline>
                {timestamp}s
            </Numeral>
            <Paragraph copyable={{ icon: <IconSetting style={{ color: 'var(--semi-color-link)' }} /> }}>自定义复制节点</Paragraph>
            <Paragraph
                copyable={{
                    content: 'Custom render!',
                    render: (copied, doCopy, config) => {
                        return (
                            <Button size="small" onClick={doCopy}>
                                <span>{copied ? '复制成功' : `点击复制:${config.content}`}</span>
                            </Button>
                        );
                    },
                }}
            >
                自定义复制渲染
            </Paragraph>
            <br />
            <br />
            <Text id="typography-copyable-paste" type="secondary">
                粘贴区域:
            </Text>
            <br />
            <TextArea aria-labelledby="typography-copyable-paste" autosize style={{ width: 320, marginTop: 4 }} rows={3} />
        </div>
    );
}

省略文本

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

是一个很长很长很长很长5号标题

可以自定义浮层里的展示内容试试看吧
是一个很长很长很长很长的链接

有后缀的情况:Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统。小尾巴


这是一个多行截断的例子:Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的 Web 应用。


多行截断,展示 Popover:Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的 Web 应用。


支持展开和折叠:Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的 Web 应用。


sssssssssssssssssssssssss

这是一个自定义弹出层组件的省略文本,背景色是蓝色
代码
import { useCallback, type ReactNode } from 'react';
import { Typography, Tooltip, type TooltipProps } from '@fibrous/semi-ui-react';

export default function TypographyDemo() {
    const { Paragraph, Title, Text } = Typography;
    const customRenderTooltip = useCallback((content: TooltipProps['content'], children: ReactNode) => {
        return (
            <Tooltip content={content} style={{ backgroundColor: 'var(--semi-color-primary)' }}>
                {children}
            </Tooltip>
        );
    }, []);

    return (
        <div>
            <Title heading={5} ellipsis={{ showTooltip: true }} style={{ width: 250 }}>
                是一个很长很长很长很长5号标题
            </Title>
            <br />
            <Text
                ellipsis={{
                    showTooltip: {
                        opts: { content: '这是自定义要展示的内容' },
                    },
                }}
                style={{ width: 150 }}
            >
                可以自定义浮层里的展示内容试试看吧
            </Text>
            <br />
            {/* link 也可以传对象,例如 link={{ href: 'https://semi.design/zh-CN/basic/typography', target: '_blank' }} */}
            <Text link ellipsis={{ showTooltip: true, pos: 'middle' }} style={{ width: 150 }}>
                是一个很长很长很长很长的链接
            </Text>
            <br />
            <Paragraph ellipsis={{ suffix: '小尾巴' }} style={{ width: 300 }}>
                有后缀的情况:Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统。
            </Paragraph>
            <br />
            <Paragraph ellipsis={{ rows: 3 }} style={{ width: 300 }}>
                这是一个多行截断的例子:Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的 Web 应用。
            </Paragraph>
            <br />
            <Paragraph ellipsis={{ rows: 3, showTooltip: { type: 'popover', opts: { style: { width: 300 } } } }} style={{ width: 300 }}>
                多行截断,展示 Popover:Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的 Web 应用。
            </Paragraph>
            <br />
            <Paragraph
                ellipsis={{
                    rows: 3,
                    expandable: true,
                    collapsible: true,
                    collapseText: '折叠我吧',
                    onExpand: (bool, e) => console.log(bool, e),
                }}
                style={{ width: 300 }}
            >
                支持展开和折叠:Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的 Web 应用。
            </Paragraph>
            <br />
            <Text
                ellipsis={{
                    showTooltip: {
                        opts: { content: '全英文设置了word-break' },
                    },
                    pos: 'middle',
                }}
                style={{ width: 150, wordBreak: 'break-word' }}
            >
                sssssssssssssssssssssssss
            </Text>
            <br />
            <br />
            <Title
                heading={5}
                ellipsis={{
                    showTooltip: {
                        renderTooltip: customRenderTooltip,
                    },
                }}
                style={{ width: 250 }}
            >
                这是一个自定义弹出层组件的省略文本,背景色是蓝色
            </Title>
        </div>
    );
}
有问题的超长文本发生截断时可按需进行自定义配置
覆盖类名超长文本发生截断时可使用类名覆盖进行自定义配置
覆盖style超长文本发生截断时可使用style进行自定义配置
代码
import { Typography } from '@fibrous/semi-ui-react';

export default function TypographyDemo() {
    const { Text } = Typography;

    return (
        <div>
            <Text
                ellipsis={{
                    showTooltip: {
                        opts: { content: '架构|Semi-inf|graph.cheet.relation' },
                    },
                }}
                style={{ width: 150 }}
            >
                有问题的超长文本发生截断时可按需进行自定义配置
            </Text>
            <br />
            <Text
                ellipsis={{
                    showTooltip: {
                        opts: {
                            content: '架构|Semi-inf|graph.cheet.relation',
                            className: 'components-typography-demo',
                        },
                    },
                }}
                style={{ width: 150 }}
            >
                覆盖类名超长文本发生截断时可使用类名覆盖进行自定义配置
            </Text>
            <br />
            <Text
                ellipsis={{
                    showTooltip: {
                        opts: { content: '架构|Semi-inf|graph.cheet.relation', style: { wordBreak: 'break-all' } },
                    },
                }}
                style={{ width: 150 }}
            >
                覆盖style超长文本发生截断时可使用style进行自定义配置
            </Text>
        </div>
    );
}
// 按需配置 word-break

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

API参考

Typography.Text

Props

属性说明类型默认值
children文本内容;copyable 为 true 时复制的就是它,ellipsis 只能截断纯文本。React.ReactNode-
code是否被 code 元素包裹。boolean-
component根元素渲染的标签名或组件,默认 span。React.ElementType-
copyable是否可复制;传对象时可配置 Copyable Config。CopyableConfig | boolean-
delete添加删除线样式。boolean-
disabled禁用文本;链接渲染为 span,只保留样式。boolean-
ellipsis设置自动溢出省略;传对象时可配置 Ellipsis Config。Ellipsis | boolean-
icon前缀图标,可传节点;Semi 图标会按文字大小设置尺寸。React.ReactNode | string-
link是否为链接;传对象时,其中的属性(href、target、className、style、onClick 等)挂在内层 a 元素上。禁用时只保留 className 与 style。LinkType-
mark添加标记样式。boolean-
ref根元素的引用。TypeReact.Ref<HTMLSpanElement>-
size文本大小,可选 normal、small 或 inherit;inherit 继承外层 Typography 组件的尺寸,默认 normal。TypographyBaseSize-
strong是否加粗。boolean-
type文本类型,可选 primary、secondary、danger、warning、success、tertiary 或 quaternary,默认 primary。TypographyBaseType-
underline添加下划线样式;链接文本只在 hover 与 active 时显示下划线。boolean-
weight字重,数字。number-

className、style 与其他原生属性(如 id、aria-*、onClick)落在根元素上;link 为对象时,其中的属性落在内层 a 元素上。

Typography.Title

Props

属性说明类型默认值
component根元素渲染的标签名或组件,默认与 heading 对应的 h1 到 h6。React.ElementType-
copyable是否可复制;传对象时可配置 Copyable Config。CopyableConfig | boolean-
delete添加删除线样式。boolean-
disabled禁用文本;链接渲染为 span,只保留样式。boolean-
ellipsis设置自动溢出省略;传对象时可配置 Ellipsis Config。Ellipsis | boolean-
heading标题级别,对应 h1 到 h6。1 | 2 | 3 | 4 | 5 | 61
link是否为链接;传对象时,其中的属性(href、target、className、style、onClick 等)挂在内层 a 元素上。禁用时只保留 className 与 style。LinkType-
mark添加标记样式。boolean-
ref根元素的引用。TypeReact.Ref<HTMLHeadingElement>-
strong是否加粗。boolean-
type文本类型,可选 primary、secondary、danger、warning、success、tertiary 或 quaternary,默认 primary。TypographyBaseType-
underline添加下划线样式;链接文本只在 hover 与 active 时显示下划线。boolean-
weight字重,可选 light、regular、medium、semibold、bold、default,或数字。Type'light' | 'regular' | 'medium' | 'semibold' | 'bold' | 'default' | number-

className、style 与其他原生属性(如 id、aria-*、onClick)落在根元素上;link 为对象时,其中的属性落在内层 a 元素上。

Typography.Paragraph

Props

属性说明类型默认值
component根元素渲染的标签名或组件,默认 p。React.ElementType-
copyable是否可复制;传对象时可配置 Copyable Config。CopyableConfig | boolean-
delete添加删除线样式。boolean-
disabled禁用文本;链接渲染为 span,只保留样式。boolean-
ellipsis设置自动溢出省略;传对象时可配置 Ellipsis Config。Ellipsis | boolean-
link是否为链接;传对象时,其中的属性(href、target、className、style、onClick 等)挂在内层 a 元素上。禁用时只保留 className 与 style。LinkType-
mark添加标记样式。boolean-
ref根元素的引用。TypeReact.Ref<HTMLParagraphElement>-
size文本大小,可选 normal、small 或 inherit;inherit 继承外层 Typography 组件的尺寸,默认 normal。TypographyBaseSize-
spacing行距,extended 为更宽松的行距,默认 normal。TypographyBaseSpacing-
strong是否加粗。boolean-
type文本类型,可选 primary、secondary、danger、warning、success、tertiary 或 quaternary,默认 primary。TypographyBaseType-
underline添加下划线样式;链接文本只在 hover 与 active 时显示下划线。boolean-

className、style 与其他原生属性(如 id、aria-*、onClick)落在根元素上;link 为对象时,其中的属性落在内层 a 元素上。

Typography.Numeral

Props

属性说明类型默认值
children需要格式化的内容,递归遍历其中的文本,包括子元素内的数字。React.ReactNode-
code是否被 code 元素包裹。boolean-
component根元素渲染的标签名或组件,默认 span;内容含 p 等块级元素时使用 div。React.ElementType-
copyable是否可复制;传对象时可配置 Copyable Config。CopyableConfig | boolean-
delete添加删除线样式。boolean-
disabled禁用文本;链接渲染为 span,只保留样式。boolean-
icon前缀图标,可传节点;Semi 图标会按文字大小设置尺寸。React.ReactNode | string-
link是否为链接;传对象时,其中的属性(href、target、className、style、onClick 等)挂在内层 a 元素上。禁用时只保留 className 与 style。LinkType-
mark添加标记样式。boolean-
parser自定义数值解析函数,接收文本并返回要显示的字符串;设置后 rule 不再生效。Type(value: string) => string-
precision小数点后保留的位数。number0
ref根元素的引用。TypeReact.Ref<HTMLSpanElement>-
rule解析规则:text 仅取整,numbers 过滤非数字字符,bytes-decimal 与 bytes-binary 换算字节单位(前者 1 KB 为 1000 字节,后者 1 KiB 为 1024 字节),percentages 转为百分比,exponential 转为科学计数法。TypographyBaseRule"text"
size文本大小,可选 normal、small 或 inherit;inherit 继承外层 Typography 组件的尺寸,默认 normal。TypographyBaseSize-
strong是否加粗。boolean-
truncate小数点后保留位的取整方式,对应 Math.ceil、Math.floor 与 Math.round。TypographyBaseTruncate"round"
type文本类型,可选 primary、secondary、danger、warning、success、tertiary 或 quaternary,默认 primary。TypographyBaseType-
underline添加下划线样式;链接文本只在 hover 与 active 时显示下划线。boolean-

className、style 与其他原生属性(如 id、aria-*、onClick)落在根元素上;link 为对象时,其中的属性落在内层 a 元素上。

Ellipsis Config

属性说明类型默认值
collapseText折叠的展示文本string收起
collapsible是否支持折叠booleanfalse
expandText展开的展示文本string展开
expandable是否支持展开booleanfalse
pos省略截断的位置,支持末尾和中间截断:end, middlestringend
rows省略溢出行数number1
showTooltip是否展示 tooltip 及相关配置: type,浮层内容承载的组件,支持 Tooltip| Popover;opts,其他需要透传给浮层组件的属性; renderTooltip,自定义渲染弹出层组件。Tooltip 可显示时文字可用 Tab 聚焦;文字位于 option、treeitem、menuitem、gridcell、row 等组合控件条目内时不加入 Tab 顺序。expandable 为 true 或设置了 expandText 时,showTooltip 不生效,二者互斥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-
className复制操作外层 span 的类名string-
copyTip复制图标的 tooltip 展示内容React.node-
duration已复制状态持续的秒数number3
icon复制按钮的内容,任意节点原样渲染;按钮的可访问名称取图标元素的 aria-label,没有时用语言包的「复制」React.node-
onCopy复制回调,在写入剪贴板(navigator.clipboard.writeText)完成后异步调用;res 为 true 表示写入成功,false 表示写入被拒绝,此时不进入已复制状态Function(e:Event, content:string, res:boolean)-
render自定义渲染复制节点function(copied, doCopy, configs)(copied: boolean, doCopy: (e: React.MouseEvent) => void, configs: CopyableConfig) => React.ReactNode-
style复制操作外层 span 的样式CSSProperties-
successTip复制成功的展示内容React.node-

文案规范

  • 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

设计变量

下表是组件内部的 Sass 变量,不能覆写。定制样式请覆写 --semi-* CSS 变量(见 Design Token 页),或写不分层的 CSS 规则。
Sass 变量值用法
$color-typography_default-text-defaultvar(--semi-color-text-0)默认文本颜色
$color-typography_secondary-text-defaultvar(--semi-color-text-1)稍次要文本颜色
$color-typography_tertiary-text-defaultvar(--semi-color-text-2)次要文本颜色
$color-typography_quaternary-text-defaultvar(--semi-color-text-3)最次要文本颜色
$color-typography_warning-text-defaultvar(--semi-color-warning)警告文本颜色
$color-typography_danger-text-defaultvar(--semi-color-danger)错误文本颜色
$color-typography_success-text-defaultvar(--semi-color-success)成功文本颜色
$color-typography_disabled-text-defaultvar(--semi-color-disabled-text)禁用文本颜色
$color-typography_mark-bg-defaultvar(--semi-color-primary-light-default)标记文本颜色
$color-typography_mark-text-defaultvar(--semi-color-text-0)标记文本文字颜色
$font-typography_code-fontFamilyui-monospace, sfmono-regular, menlo, consolas, monospace代码文本字体
$font-typography_code-fontSize1em代码文本字号
$color-typography_code-bg-defaultvar(--semi-color-fill-1)代码文本背景颜色
$color-typography_code-text-defaultvar(--semi-color-text-2)代码文本颜色
$color-typography_link-text-defaultvar(--semi-color-link)链接文本颜色 - 默认
$color-typography_link-text-visitedvar(--semi-color-link-visited)链接文本颜色 - 已访问
$color-typography_link-text-hovervar(--semi-color-link-hover)链接文本颜色 - 悬浮
$color-typography_link-text-activevar(--semi-color-link-active)链接文本颜色 - 激活
$color-typography_link-text-disabledvar(--semi-color-link)链接文本颜色 - 禁用
$color-typography_copied-text-successvar(--semi-color-text-2)可复制文本颜色
$color-typography_copied-icon-successvar(--semi-color-success)可复制文本复制成功图标颜色
$color-typography_code-border-defaultvar(--semi-color-border)代码文本描边颜色
$font-typography_title-fontWeight$font-weight-bold标题文本字重
$font-typography_link-fontWeight$font-weight-bold链接文本字重
$font-typography_strong-fontWeight$font-weight-bold强调文本字重
$font-typography_paragraph_extended-lineHeight24px宽松行距段落文本行高
$font-typography_smallText-regular-fontWeight$font-weight-regularsmall text 字重 - 正常
$font-typography_normalParagraph-regular-fontWeight$font-weight-regularnormal paragraph 字重 - 正常
$font-typography_smallParagraph-regular-fontWeight$font-weight-regularsmall paragraph 字重 - 正常
$font-typography_title1-fontWeight$font-typography_title-fontWeight一级标题文本字重
$font-typography_title2-fontWeight$font-typography_title-fontWeight二级标题文本字重
$font-typography_title3-fontWeight$font-typography_title-fontWeight三级标题文本字重
$font-typography_title4-fontWeight$font-typography_title-fontWeight四级标题文本字重
$font-typography_title5-fontWeight$font-typography_title-fontWeight五级标题文本字重
$font-typography_title6-fontWeight$font-typography_title-fontWeight六级标题文本字重
$font-typography_title1-light-fontWeight200一级标题文本字重 - 细
$font-typography_title2-light-fontWeight200二级标题文本字重 - 细
$font-typography_title3-light-fontWeight200三级标题文本字重 - 细
$font-typography_title4-light-fontWeight200四级标题文本字重 - 细
$font-typography_title5-light-fontWeight200五级标题文本字重 - 细
$font-typography_title6-light-fontWeight200六级标题文本字重 - 细
$font-typography_title1-regular-fontWeight400一级标题文本字重 - 正常
$font-typography_title2-regular-fontWeight400二级标题文本字重 - 正常
$font-typography_title3-regular-fontWeight400三级标题文本字重 - 正常
$font-typography_title4-regular-fontWeight400四级标题文本字重 - 正常
$font-typography_title5-regular-fontWeight400五级标题文本字重 - 正常
$font-typography_title6-regular-fontWeight400六级标题文本字重 - 正常
$font-typography_title1-medium-fontWeight500一级标题文本字重 - 中等
$font-typography_title2-medium-fontWeight500二级标题文本字重 - 中等
$font-typography_title3-medium-fontWeight500三级标题文本字重 - 中等
$font-typography_title4-medium-fontWeight500四级标题文本字重 - 中等
$font-typography_title5-medium-fontWeight500五级标题文本字重 - 中等
$font-typography_title6-medium-fontWeight500六级标题文本字重 - 中等
$font-typography_title1-semibold-fontWeight600一级标题文本字重 - 半粗
$font-typography_title2-semibold-fontWeight600二级标题文本字重 - 半粗
$font-typography_title3-semibold-fontWeight600三级标题文本字重 - 半粗
$font-typography_title4-semibold-fontWeight600三级标题文本字重 - 半粗
$font-typography_title5-semibold-fontWeight600三级标题文本字重 - 半粗
$font-typography_title6-semibold-fontWeight600三级标题文本字重 - 半粗
$font-typography_title1-bold-fontWeight700一级标题文本字重 - 粗
$font-typography_title2-bold-fontWeight700二级标题文本字重 - 粗
$font-typography_title3-bold-fontWeight700三级标题文本字重 - 粗
$font-typography_title4-bold-fontWeight700三级标题文本字重 - 粗
$font-typography_title5-bold-fontWeight700三级标题文本字重 - 粗
$font-typography_title6-bold-fontWeight700三级标题文本字重 - 粗
$spacing-typography_iconPrefix-marginRight4px带前缀文本图标右侧外边距
$spacing-typography_expandText-marginLeft8px支持展开文本展开按钮左侧外边距
$spacing-typography_copyIcon-marginLeft4px可复制文本复制图标左侧外边距
$spacing-typography_copyIcon-padding0可复制文本复制图标内边距
$spacing-typography_title_h1-margin0一级标题外边距
$spacing-typography_title_h2-margin0二级标题外边距
$spacing-typography_title_h3-margin0三级标题外边距
$spacing-typography_title_h4-margin0四级标题外边距
$spacing-typography_title_h5-margin0五级标题外边距
$spacing-typography_title_h6-margin0六级标题外边距
$spacing-typography_title_paragraph-margin0段落外边距
$width-typography_code-border1px代码文本描边宽度
$width-typography_link-border1px链接文本下划线宽度
$radius-typography_code2px代码文本圆角

FAQ

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

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

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

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