狼と香辛料
電撃文庫,2006 年 2 月 10 日刊行。
第一卷 启航
第一章 港口的清晨
import { Heading, Stack, Text } from '@hina-ui/react'
export default function Demo() {
return (
<Stack className="max-w-lg">
<Heading level={1}>狼と香辛料</Heading>
<Text tone="muted">電撃文庫,2006 年 2 月 10 日刊行。</Text>
<Heading level={2}>第一卷 启航</Heading>
<Heading level={3}>第一章 港口的清晨</Heading>
</Stack>
)
}
tsx
用法
import { Heading } from '@hina-ui/react'
ts
level 决定渲染成 h1 到 h6 中的哪一个,默认为 2。字号默认跟随层级,因此通常只需要设置 level。
章节标题
import { Heading } from '@hina-ui/react'
export default function Demo() {
return <Heading level={2}>章节标题</Heading>
}
tsx
示例
层级
六个层级对应六档字号,从 30 像素递减到 14 像素。xl 及以上的字号会收紧字距。
一级标题
二级标题
三级标题
四级标题
五级标题
六级标题
import { Heading, Stack } from '@hina-ui/react'
export default function Demo() {
return (
<Stack className="max-w-lg">
<Heading level={1}>一级标题</Heading>
<Heading level={2}>二级标题</Heading>
<Heading level={3}>三级标题</Heading>
<Heading level={4}>四级标题</Heading>
<Heading level={5}>五级标题</Heading>
<Heading level={6}>六级标题</Heading>
</Stack>
)
}
tsx
语义与视觉分开
size 单独指定字号,不改变标签。页面的标题结构由内容决定,视觉大小由版面决定,两者不必一致。
三级标题,一级字号
一级标题,正文字号
import { Heading, Stack } from '@hina-ui/react'
export default function Demo() {
return (
<Stack className="max-w-lg">
<Heading level={3} size="2xl">
三级标题,一级字号
</Heading>
<Heading level={1} size="base">
一级标题,正文字号
</Heading>
</Stack>
)
}
tsx
字重
默认为 semibold。版面需要更轻的标题时可以改为 medium 或 normal。
半粗,默认字重
中等字重
常规字重
import { Heading, Stack } from '@hina-ui/react'
export default function Demo() {
return (
<Stack className="max-w-lg">
<Heading level={3} weight="semibold">
半粗,默认字重
</Heading>
<Heading level={3} weight="medium">
中等字重
</Heading>
<Heading level={3} weight="normal">
常规字重
</Heading>
</Stack>
)
}
tsx
截断
设置 truncate 后,超出容器宽度的标题在末尾显示省略号,标题不换行。
很长很长的章节标题会在容器边界处截断并显示省略号
import { Heading } from '@hina-ui/react'
export default function Demo() {
return (
<Heading level={3} truncate className="max-w-xs">
很长很长的章节标题会在容器边界处截断并显示省略号
</Heading>
)
}
tsx
正文中的标题
Prose 会为其中的原生 h1 到 h6 应用同一套字号。渲染 Markdown 或富文本时不需要替换标签。
正文中的标题
渲染 Markdown 时不需要替换标签。
下一层标题
层级与字号的对应关系与组件一致。
import { Prose } from '@hina-ui/react'
export default function Demo() {
return (
<Prose className="max-w-lg">
<h2>正文中的标题</h2>
<p>渲染 Markdown 时不需要替换标签。</p>
<h3>下一层标题</h3>
<p>层级与字号的对应关系与组件一致。</p>
</Prose>
)
}
tsx
无障碍
- 一个页面只应有一个
h1,其余标题按内容层级依次递进,不要为了字号跳级。需要更大或者更小的字时改size。 - 屏幕阅读器可以按标题跳转浏览,层级正确才能形成可用的大纲。
API
Props
| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
level | 1 | 2 | 3 | 4 | 5 | 6 | 2 | 渲染的标题标签 |
size | 'xs' | 'sm' | 'base' | 'md' | 'lg' | 'xl' | '2xl' | 跟随 level | 字号 |
weight | 'normal' | 'medium' | 'semibold' | 'semibold' | 字重 |
truncate | boolean | false | 是否单行截断并显示省略号 |
className | string | — | 追加至根元素的类名 |
内容属性
| 属性 | 说明 |
|---|---|
children | 标题文字 |