MDC-Web Typography:字体定制

MDC-Web Typography: Font Customization

MDC typography 是 Roboto 字体特有的吗,或者我们可以用其他 Google 字体来实现吗?如果可以,推荐的方法是简单地应用 font-family CSS 到 body?

最后,似乎 all header elements are tied to the <h1> element 似乎打破了 HTML5 的语义性质,即 h1 通常比 h5 具有更高的重要性。

MDC-Web 是一个可自定义的库,鉴于 Google doesn't prohibit using your brand styles along with Material Design framework,您可以自由使用任何字体,而不仅仅是 "Roboto"。

如果您使用仅 CSS 方法,将 font-family 添加到 body 是不够的:MDC-Web 应用默认排版样式(包括 font-family)到不同的组件(例如,mdc-buttonmdc-listmdc-card)和排版 类,它们仍然会应用“Roboto”字体。因此,如果您要使用这样的 MDC-Web 组件和 类,您需要为每个组件手动指定 font-family

.mdc-button {
  font-family: "Open Sans", sans-serif;
}

.mdc-list {
  font-family: "Open Sans", sans-serif;
}

.mdc-card__supporting-text {
  font-family: “Open Sans”, sans-serif;
}

但这可能很乏味,因此生成 MDC-Web 样式的推荐方法是使用 Sass。具体来说,您需要在导入组件之前覆盖 .scss 文件中的 MDC-Web’s typography variable

$mdc-typography-font-family: "Open Sans", sans-serif;

@import "@material/typography/mdc-typography";

如果您不想使用 SASS,您可以通过在 css 中设置变量来进行一些基本的自定义。例如:

<link href="https://fonts.googleapis.com/css?family=Nunito+Sans:200,300,400,600,700" rel="stylesheet">
<link rel="stylesheet" href="https://unpkg.com/material-components-web@latest/dist/material-components-web.min.css">
<link rel="stylesheet" href="/assets/css/site.css" />

site.css

:root {
    --mdc-typography-font-family: 'Nunito Sans', sans-serif;
}

body {
    font-family: var(--mdc-typography-font-family);
}

您还可以使用如下变量覆盖默认主题颜色:

--mdc-theme-primary: #0d46a0;

可在此处找到更多信息:https://material.io/develop/web/docs/theming