网站

CSS 字体

CSS 文本

CSS Fonts | MDN

CSS Text | MDN

引入

网页中的文字不只是显示内容,还会影响阅读体验。

CSS 字体排印主要用来控制文字的字体、大小、粗细、行距、对齐、间距和装饰效果

正文

定义

定义

CSS 字体排印用于控制网页文字的显示效果,让文字更清晰、更有层次,也更适合阅读。

字体排印可以分成两类:

  • 字体相关:控制文字本身长什么样
  • 文本排版相关:控制文字怎么排列

例如 font-size 控制文字大小,line-height 控制行高,text-align 控制文本对齐方式。

基础语法

选择器 {
  字体属性: 属性值;
  文本属性: 属性值;
}

例如:

p {
  font-size: 16px;
  line-height: 1.6;
  color: #333333;
}

这里的 font-size 控制文字大小,line-height 控制行高,color 控制文字颜色。

常见字体属性

属性作用
font-family设置字体类型
font-size设置文字大小
font-weight设置文字粗细
font-style设置文字样式,例如斜体
line-height设置行高
font字体相关属性的简写

常见文本属性

属性作用
color设置文字颜色
text-align设置文本水平对齐方式
text-decoration设置文本装饰线
text-indent设置首行缩进
letter-spacing设置字符间距
word-spacing设置单词间距
text-transform控制英文大小写转换
white-space控制空白和换行的处理方式

font-family

font-family 用于设置字体。

body {
  font-family: Arial, "Microsoft YaHei", sans-serif;
}

浏览器会从左到右查找字体。

如果用户电脑里没有 Arial,就尝试使用 Microsoft YaHei

如果前面的字体都没有,就使用最后的通用字体 sans-serif

常见通用字体族:

  • serif:衬线字体,笔画末端有装饰
  • sans-serif:无衬线字体,常用于网页正文
  • monospace:等宽字体,常用于代码
  • cursive:手写风格字体
  • fantasy:装饰风格字体

font-size

font-size 用于设置文字大小。

p {
  font-size: 16px;
}

常见单位:

  • px:固定像素,比较直观
  • em:相对于当前元素的字体大小
  • rem:相对于根元素 <html> 的字体大小
  • %:相对于父元素字体大小

网页正文常见大小是 14px18px

初学时可以先用 px 理解大小,后面做响应式页面时再更多使用 rem

font-weight

font-weight 用于设置文字粗细。

h1 {
  font-weight: bold;
}
 
.desc {
  font-weight: 400;
}

常见值:

说明
normal正常粗细,通常等于 400
bold加粗,通常等于 700
100900数值越大越粗

不是所有字体都支持完整的 100900

如果字体本身没有对应粗细,浏览器可能会用相近效果模拟。

font-style

font-style 常用于设置斜体。

em {
  font-style: italic;
}

常见值:

  • normal:正常样式
  • italic:斜体
  • oblique:倾斜显示

<em> 默认通常就是斜体,但可以通过 CSS 改掉。

line-height

line-height 用于设置行高,也就是一行文字占据的高度。

p {
  line-height: 1.6;
}

line-height 对阅读体验很重要。

行高太小,文字会显得拥挤;行高太大,段落会显得松散。

常见写法:

body {
  font-size: 16px;
  line-height: 1.6;
}

line-height: 1.6; 表示行高是当前字体大小的 1.6 倍。

这种不带单位的写法比较常见,也更适合继承。

text-align

text-align 用于设置文本的水平对齐方式。

.title {
  text-align: center;
}

常见值:

说明
left左对齐
right右对齐
center居中对齐
justify两端对齐

text-align 不只影响普通文字,也会影响元素内部的内联内容。

例如 <img> 如果是内联表现,也可能受到父元素 text-align: center; 的影响。

text-decoration

text-decoration 用于设置文字装饰线。

a {
  text-decoration: none;
}

常见值:

说明
none没有装饰线
underline下划线
line-through删除线
overline上划线

链接 <a> 默认通常有下划线。

如果去掉下划线,要注意链接是否还能被用户明显看出来。

text-indent

text-indent 用于设置段落首行缩进。

p {
  text-indent: 2em;
}

2em 可以理解为缩进两个当前文字大小的宽度。

中文文章中,段落首行缩进常用 2em

letter-spacingword-spacing

letter-spacing 用于设置字符间距。

word-spacing 用于设置单词间距。

.logo {
  letter-spacing: 4px;
}
 
.english-text {
  word-spacing: 8px;
}

letter-spacing 常用于标题、按钮、品牌文字等场景。

中文里更常用 letter-spacing,英文段落里 word-spacing 更容易看出效果。

text-transform

text-transform 用于控制英文大小写显示。

.nav {
  text-transform: uppercase;
}

常见值:

作用
uppercase全部大写
lowercase全部小写
capitalize每个单词首字母大写
none不转换

这个属性只改变显示效果,不会改变 HTML 中原本的文字内容。

white-space

white-space 用于控制空格和换行怎么显示。

.code-text {
  white-space: pre-wrap;
}

常见值:

说明
normal默认值,多个空格会合并,自动换行
nowrap不自动换行
pre保留空格和换行,不自动换行
pre-wrap保留空格和换行,也允许自动换行

如果想让一行文字不换行,可以使用 white-space: nowrap;

如果想显示用户输入的换行内容,可以考虑 white-space: pre-wrap;

font 简写属性

font 可以一次设置多个字体相关属性。

p {
  font: italic 700 16px/1.6 Arial, sans-serif;
}

这个写法包含:

  • italic:对应 font-style
  • 700:对应 font-weight
  • 16px:对应 font-size
  • 1.6:对应 line-height
  • Arial, sans-serif:对应 font-family

使用 font 简写时,font-sizefont-family 通常必须写。

初学时建议先分开写,更清楚。

例子

设置正文排版

<article class="post">
  <h1>文章标题</h1>
  <p>这是一段正文内容,用来展示文章的阅读效果。</p>
</article>
.post {
  font-family: Arial, "Microsoft YaHei", sans-serif;
  color: #333333;
}
 
.post h1 {
  font-size: 28px;
  line-height: 1.3;
}
 
.post p {
  font-size: 16px;
  line-height: 1.8;
}

这个例子中,标题更大,正文行高更宽,阅读起来会更清楚。

设置链接文字

<a class="read-more" href="#">阅读更多</a>
.read-more {
  color: #2563eb;
  font-weight: 700;
  text-decoration: none;
}
 
.read-more:hover {
  text-decoration: underline;
}

这里去掉了链接默认下划线,但在鼠标移上去时通过 :hover 显示下划线。

这样既能让页面更简洁,也能保留链接的提示效果。

设置按钮文字

<button class="btn">提交</button>
.btn {
  font-size: 16px;
  font-weight: 700;
  letter-spacing: 2px;
}

按钮文字适当加粗、增加字符间距,可以让按钮更醒目。

特点

  • font-family 控制字体类型
  • font-size 控制文字大小
  • font-weight 控制文字粗细
  • line-height 控制行高,影响阅读舒适度
  • text-align 控制文本对齐方式
  • text-decoration 常用于链接下划线、删除线等效果
  • text-indent 常用于中文段落首行缩进
  • letter-spacing 可以让标题或按钮文字更有设计感
  • 字体排印不只是装饰,也会影响可读性可访问性

注意事项

  • 正文文字不要太小,否则阅读困难
  • 行高不要太挤,正文常见可以设置为 1.51.8
  • 字体名称中有空格时,需要用引号包起来,例如 "Microsoft YaHei"
  • font-family 最后建议写一个通用字体族,例如 sans-serif
  • 不要随便去掉链接下划线,除非还有其他明显样式能表示它是链接
  • 大段文字不适合使用过大的 letter-spacing
  • text-align: justify; 在中文或窄屏中可能出现奇怪间距
  • 使用特殊字体时,要注意用户电脑上是否安装了这个字体

理解

可以把 CSS 字体排印理解为给文字做“阅读优化”。

font-size 决定字有多大,font-weight 决定字有多粗,line-height 决定行与行之间有多松。

text-aligntext-indentletter-spacing 这些属性则是在控制文字的排列方式。

好的字体排印不是让文字变复杂,而是让用户更容易看清楚、更愿意读下去。

引出

理解字体排印之后,可以继续结合 CSS 颜色CSS 背景CSS 盒模型,做出更完整的网页视觉效果。