网站导航

设计基础

排版

选择完整文本样式或单个字体 token,并一次设置网站字体。

本页内容

#概览

使用 text-<token>,以单个 class 设置完整文本样式:字号、行高与字距。字重、字体与颜色则分别用其他 class 补上。

易读的文本层级

通过字号、间距与文本角色,以常规字重建立层级。所有预览宽度都能完整显示正文。
<p class="text-xs font-regular fg-text-muted">Field notes / 024</p><h2 class="text-2xl font-regular fg-text-strong">Make room for the details.</h2><p class="text-sm">A consistent type scale helps readers move from the main idea to the supporting detail.</p>
生成的 CSS
@layer theme {  :root,  :host {    --font-weight-regular: 400;    --font-size-2xl: 1.5rem;    --text-2xl: var(--font-size-2xl);    --text-2xl--line-height: 1.35;    --text-2xl--letter-spacing: -.015em  }}@layer utilities {  .text-2xl {    font-size: var(--text-2xl);    line-height: var(--text-2xl--line-height, normal);    letter-spacing: var(--text-2xl--letter-spacing, normal)  }  .font-regular {    font-weight: var(--font-weight-regular)  }}

此层级运用字号、间距与文本角色,同时保持常规字重。只在内容需要时加入强调;标题不必默认使用更粗的字重。文本样式列出所有设置与新增方式。


#文本样式与字号

font-<size> 只改变字号,保留继承的行高与字距。text-<token> 则同时设置三者。比较两种写法在相同字号下的差异:

相同字号,也能呈现不同节奏

以根字号 16px 呈现预设的实际排版。每一行标示一个行框;font-size 本身无法描述行与行之间的间距。

文字说明
  1. 只有字号. font-3xl 将字号设为 2rem。在此父元素中,会继承 line-height 1.6 与常规字距。
  2. 完整文本样式. text-3xl 设置相同的 2rem 字号,再加上 line-height 1.25 与 letter-spacing -0.02em。
  3. 比较行框. 根字号为 16px 时,示例文本为 32px,行高分别为 51.2px 与 40px。相同两行文本占用不同高度。

相同字号,两种文本设置

两个示例的字号与内容相同。font-3xl 继承父元素的行高与字距;text-3xl 则同时设置这三个属性。
<div class="leading-md tracking-normal">  <p class="font-3xl">Designing for a clearer reading experience.</p>  <p class="text-3xl">Designing for a clearer reading experience.</p></div>
生成的 CSS
@layer theme {  :root,  :host {    --font-size-3xl: 2rem;    --text-3xl: var(--font-size-3xl);    --text-3xl--line-height: 1.25;    --text-3xl--letter-spacing: -.02em  }}@layer utilities {  .text-3xl {    font-size: var(--text-3xl);    line-height: var(--text-3xl--line-height, normal);    letter-spacing: var(--text-3xl--letter-spacing, normal)  }  .font-3xl {    font-size: var(--font-size-3xl)  }}

正文、标题与大型展示文本使用 text-<token>。只有设计刻意偏离既有文本样式时,才使用 font-<size>、leading-<token> 或 tracking-<token>。

font- 前缀也接受字体与字重键名:font-sans 选择字体,font-bold 则请求指定字重。这些命名空间的自定义名称应保持区别;字体列出各自的值与解析规则。


#网站字体

在 @theme 中设置一次应用字体。预设的 base 层会将它应用到文档,因此标记无需字体 class。

globals.css
@import "@master/css";@theme {  --font-sans: "Geist", "Noto Sans TC";  --font-mono: "IBM Plex Mono";  --font-feature-sans: "ss02", "ss03", "ss04", "ss06", "ss07", "ss08";  --font-feature-mono: "cv01", "cv02", "cv29";}

base 层通过 --font-family-sans 解析 --font-sans,并应用到 body 与 Shadow Host;通过 --font-family-mono 解析 --font-mono,并应用到 code、kbd、samp 与 pre。--font-feature-* token 可以省略,默认回退到 normal;表单控件继承周围字体。使用 @font-face 或字体提供商的样式表加载字体文件。若只针对单个元素,改用 font-mono 这类 class。

指定字体族仍需有可用字体

示例呈现两种可用性情况,并非实测下载时间轴。指定字体以已加载的 Geist 文件示意,回退则使用浏览器的 serif 字体。

文字说明
  1. font-family 声明指定有顺序的偏好,本身不会下载字体。
  2. 若有匹配且可用的字体即可渲染文本,否则浏览器尝试后续字体族。字形覆盖范围也有影响,因此同一行不同字符可能使用不同字体。
  3. 通过 @font-face 或提供商样式表加载网页字体,并检查实际渲染字体,不要仅看计算后的 font-family 字符串。

#用实际文本验证

在实际内容宽度下,检查短标题、长标题与完整段落,再用窄屏幕与放大文本重复检查。除了计算后的字号,也要留意换行,以及重音符号或下伸部被裁切的情况。

文本栏宽改变,换行也随之改变

仅改变内容宽度。两段均使用 14px Geist、24px 行高,并按完整文本所需高度延展。

文字说明
  1. 较窄栏宽提早换行,使同一段落变高。较宽栏宽则让每行容纳更多单词。
  2. 两个示例均无固定高度,也未缩短文字。评估排版时,除字号外也要检查段落实际宽度。

固定文本列宽,让高度增长

为了比较而控制宽度,两个文本框都未固定高度;垂直范围由内容决定。

文字说明

两个等宽文本示例分别包含短文本与长文本。较长标题占用更多行,将后续内容往下推。

声明字体族只是提出请求,并不能证明字体文件已加载或包含所有字形。请检查实际渲染的字体,尤其是拉丁文本与中日韩文本混排时。让容器能随文本增长;不要只为维持某个英文示例的行数,就固定卡片高度。