排印 typography
布局组件。三层同源:无头内核给出解剖与状态机,Vue 组件与自定义元素只是它的两层外壳,行为完全一致。
示例
基础用法
root 管段间距与最大行宽,标题与段落各自拿字号、字重、行高
版式约定
字号、字重与行高都收进令牌,不再逐处手写。段与段之间的间距由 root 统一给。
最大行宽也由 root 管,整块正文不会拉成一行行难读的长句。
标题档位
level 只换字号档位,标签仍由 as 决定;不传 level 即默认档
第 1 档标题
第 2 档标题
第 3 档标题
第 4 档标题
第 5 档标题
第 6 档标题
行内文字
variant 换形态:muted 弱化、strong 加重、code 等宽
不写 variant 就是一段普通正文,这一段弱化, 这一段加重, 档位写在 data-level 上。
链接自带下划线,不只靠颜色区分。
语气
tone 决定这一段行内文字用哪族颜色,与 variant 是两个轴,可以一起写
brand 语气的一段文字
neutral 语气的一段文字
success 语气的一段文字
warning 语气的一段文字
danger 语气的一段文字
info 语气的一段文字
此操作不可撤销
尺寸
size 换的是整块正文的字号与段间距,不传 size 即默认档
小档
正文字号与段间距跟着档位走,标题档位另由 level 决定。
默认档
正文字号与段间距跟着档位走,标题档位另由 level 决定。
大档
正文字号与段间距跟着档位走,标题档位另由 level 决定。
产物
| 层 | 值 |
|---|---|
| 自定义元素 | <xh-typography> |
| Vue 组件 | XhTypographyHeading XhTypographyLink XhTypographyParagraph XhTypographyRoot XhTypographyText |
| 状态机 | 无,connect 直接由 props 算属性 |
| 皮肤 | @xihan-ui/styles/typography.css |
解剖
部件名即 data-part 属性值,也是皮肤的选择器。加粗的是必备部件,不渲染它组件不工作(Web Components 适配器会在诊断通道上报 wc.missing-part)。
data-scope="typography":root · heading · paragraph · text · link
Props
| 属性 | 类型 | 必填 | 说明 |
|---|---|---|---|
size | Size | 尺寸:sm / md / lg,整块正文的字号与段间距跟着换档。 |
connect API
connect 产出的对象。getXxxProps() 铺到对应部件的宿主元素上,其余是可读状态与操作入口。
| 成员 | 类型 | 说明 |
|---|---|---|
getRootProps | () => T['element'] | |
getHeadingProps | (props?: TypographyHeadingProps) => T['element'] | |
getParagraphProps | () => T['element'] | |
getTextProps | (props?: TypographyTextProps) => T['element'] | |
getLinkProps | () => T['element'] |
键盘
规格出处:W3C APG
无键盘交互(不接收焦点,或焦点行为完全由原生元素提供)。
