Typography 文字铸排
使用文字铸排可以尽可能清晰、高效地展示您的设计和内容。
大量字阶和样式会影响任何布局的美观性。 一个带有限量字阶的 文字铸排比例(typographic scale) 能够和排版网格搭配工作。
概述
Material-UI 不会自动加载 Roboto 字体。 开发人员需要自行加载应用在中使用的所有字体。 有这样几个简单的方法来加载 Roboto 字体。 若想查询更高级的配置,请参阅主题定制部分。
Roboto 字体 CDN
以下是一个简单 link markup,可以用于从 CDN 加载 Roboto字体:
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700&display=swap" />
通过 npm 安装
通过在终端键入以下命令,你可以这样 安装字体:
npm install @fontsource/roboto
然后,你可以在开始文件中导入:
import 'fontsource-roboto';
有关更多信息请查看 Fontsource。
⚠️使用这种方法时要格外小心。 确保您的包不会一次性加载所有字体的变体 (100/300/400/500/700/900,italic/regular,SVG/woff)。 您可以将 Fontsource 配置为加载特定的子集(subsets)、字体粗细(weights)和样式(styles)。 当内联所有字体文件的时候,捆绑包的大小会显著增加。 Material-UI 默认的排版配置仅依赖于 300,400,500 和 700 的字体权重。
组件
h1. Heading
h2. Heading
h3. Heading
h4. Heading
h5. Heading
h6. Heading
subtitle1. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quos blanditiis tenetur
subtitle2. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quos blanditiis tenetur
body1. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quos blanditiis tenetur unde suscipit, quam beatae rerum inventore consectetur, neque doloribus, cupiditate numquam dignissimos laborum fugiat deleniti? Eum quasi quidem quibusdam.
body2. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quos blanditiis tenetur unde suscipit, quam beatae rerum inventore consectetur, neque doloribus, cupiditate numquam dignissimos laborum fugiat deleniti? Eum quasi quidem quibusdam.
overline text主题
某些情况下,您可能无法使用 Typography
组件。 希望您可以利用 theme 里 typography
的一些值。
<div className={classes.root}>{"This div's text looks like that of a button."}</div>
改变语义元素
文字铸排组件通过 variantMapping
属性关联了一种 UI 变体和某一种语义元素。 请注意,文字的样式是和最底层的语义元素分开的。
- 使用
component
属性,您可以一次性改变底层元素的样式:
{/* 在此页面中已经有一个 h1 标签,我们不会再重复。 */}
<Typography variant="h1" component="h2">
h1. 标题
</Typography>
- 您也可以 使用 theme 来修改全局字体映射。
const theme = createTheme({
props: {
MuiTypography: {
variantMapping: {
h1: 'h2',
h2: 'h2',
h3: 'h2',
h4: 'h2',
h5: 'h2',
h6: 'h2',
subtitle1: 'h2',
subtitle2: 'h2',
body1: 'span',
body2: 'span',
},
},
},
});
无障碍设计
考虑到文字铸排的无障碍设计,需要遵循以下几个关键点:
- 字体颜色。 在文本颜色和背景颜色间提供足够的对比性,请参考 WCAG 2.0 颜色对比度 的最低标准(4.5:1)。
- 字体大小(字阶)。 请使用 相对单位(rem) 来适应用户的设置。
- 标题等级。 请不要跳过标题的等级 。 你需要将 style 从语义元素中分离开来,这样能够解决这个问题。