CSS: CSS 文本与字体

网页中最主要的内容就是文本。CSS 提供了丰富的属性来控制文本的字体、大小、颜色、间距和对齐方式。

1. 字体属性

(1) 字体属性速查表

属性 常用值 作用
font-family "Microsoft YaHei", Arial, sans-serif 设置字体(可写多个备选)
font-size 16px, 1.2em, 1rem, 100% 字体大小
font-weight normal(400), bold(700), 100~900 字体粗细
font-style normal, italic, oblique 字体样式(斜体/正常)
line-height 1.5(无单位), 24px, 150% 行高(推荐正文1.5~1.8)
font italic bold 16px/1.8 sans-serif 简写属性,可同时设置多个

(2) 字体属性详解

(3) font-family(字体)

设置文本的字体。可以指定多个字体作为备选:

▶ 示例

HTML
<style>
p {
  font-family: "Microsoft YaHei", "PingFang SC", Arial, sans-serif;
}
</style>
<p>这是一个段落示例。</p>
<p style="font-family: Arial, sans-serif;">Arial 字体演示</p>
▶ 试一试

浏览器会从左到右依次尝试使用字体,如果第一个字体不存在,则尝试下一个,以此类推。

(4) font-size(字体大小)

▶ 示例

HTML
<style>
h1 {
  font-size: 32px;
}
p {
  font-size: 16px;
}
.small {
  font-size: 0.875em; /* 相对于父元素字体的0.875倍 */
}
</style>
<h1>一级标题</h1>
<p>这是一个段落示例。</p>
<div class="small">小号字体文本</div>
▶ 试一试

常用单位:px(像素)、em(相对自身字体)、rem(相对根元素字体)、%(百分比)

(5) font-weight(字体粗细)

▶ 示例

HTML
<style>
.bold {
  font-weight: bold;     /* 粗体,等同于700 */
}
.normal {
  font-weight: normal;   /* 正常,等同于400 */
}
.light {
  font-weight: 300;      /* 细体 */
}
.heavy {
  font-weight: 900;      /* 更粗 */
}
</style>
<div class="bold">加粗字体文本</div>
<div class="normal">正常字重文本</div>
<div class="light">细体字重文本</div>
<div class="heavy">特粗字重文本</div>
▶ 试一试

(6) font-style(字体样式)

▶ 示例

HTML
<style>
.italic {
  font-style: italic;    /* 斜体 */
}
.normal {
  font-style: normal;    /* 正常 */
}
</style>
<div class="italic">斜体文字样式</div>
<div class="normal">正常字重文本</div>
▶ 试一试

(7) line-height(行高)

控制行与行之间的间距,对阅读体验影响很大:

▶ 示例

HTML
<style>
p {
  line-height: 1.8;      /* 数字,相对于字体大小 */
}
.article {
  line-height: 1.6;      /* 正文推荐行高 */
}
.tight {
  line-height: 1.2;      /* 紧凑 */
}
</style>
<p>这是一个段落示例。</p>
<div class="article">这是一段文章内容,展示了文本排列效果</div>
<div class="tight">字间距紧凑的文本</div>
▶ 试一试

一般正文的 line-height 建议在 1.5 到 1.8 之间,阅读最舒适。

(8) font 简写属性

font 可以同时设置多个字体属性:

▶ 示例

HTML
<style>
p {
  font: italic bold 16px/1.8 "Microsoft YaHei", sans-serif;
}
</style>
<p>这是一个段落示例。</p>
<span class="demo-italic">斜体文字</span>
<span class="demo-bold">粗体文字</span>
▶ 试一试

顺序font-style font-weight font-size/line-height font-family

注意font-sizefont-family 是必需的,缺少它们整个声明会无效。

(9) @font-face 自定义字体

可以使用 @font-face 加载网页中的自定义字体(非系统自带):

▶ 示例

HTML
<style>
@font-face {
  font-family: "myfont";
  src: url("/assets/fonts/myfont.woff2") format("woff2"),
       url("/assets/fonts/myfont.woff") format("woff");
  font-weight: normal;
  font-style: normal;
}

h1 {
  font-family: "myfont", sans-serif;
}
</style>
<p>@font-face 用于加载自定义字体,需要配合实际字体文件才能看到效果。</p>
▶ 试一试

字体文件路径说明

注意字体版权:使用自定义字体时请确保拥有合法授权,优先选择开源字体。


2. 文本外观属性

(1) 文本属性速查表

属性 常用值 作用
color #333, red, rgb(255,0,0), rgba(0,0,0,0.5) 文本颜色
text-align left, center, right, justify 文本水平对齐方式
text-decoration none, underline, overline, line-through 文本装饰线
text-indent 2em, 32px 首行缩进
text-transform none, uppercase, lowercase, capitalize 文本大小写转换
text-shadow 2px 2px 4px rgba(0,0,0,0.5) 文本阴影(偏移+模糊+颜色)
letter-spacing 2px, -1px, 0.1em 字符间距
word-spacing 4px, 0.5em 单词间距
white-space normal, nowrap, pre, pre-wrap 空白字符和换行处理
text-overflow clip, ellipsis 文本溢出显示方式(需配合 overflow: hidden

(2) color(文本颜色)

设置文本的颜色:

▶ 示例

HTML
<style>
p {
  color: #333;       /* 深灰色,正文常用 */
}
h1 {
  color: #e74c3c;   /* 红色标题 */
}
</style>
<p>这是一个段落示例。</p>
<h1>一级标题</h1>
▶ 试一试

(3) text-align(文本对齐)

▶ 示例

HTML
<style>
.left {
  text-align: left;      /* 左对齐(默认) */
}
.center {
  text-align: center;    /* 居中对齐 */
}
.right {
  text-align: right;     /* 右对齐 */
}
.justify {
  text-align: justify;   /* 两端对齐 */
}
</style>
<div class="left">左对齐文本内容</div>
<div class="center">水平居中的内容</div>
<div class="right">右对齐文本内容</div>
<div class="justify">两端对齐文本内容,自动调整词间距</div>
▶ 试一试

(4) text-decoration(文本装饰)

▶ 示例

HTML
<style>
.underline {
  text-decoration: underline;        /* 下划线 */
}
.overline {
  text-decoration: overline;         /* 上划线 */
}
.line-through {
  text-decoration: line-through;     /* 删除线 */
}
.none {
  text-decoration: none;             /* 无装饰,常用于去掉链接下划线 */
}

/* 也可以组合更多样式 */
.fancy {
  text-decoration: underline wavy red 2px;  /* 红色波浪下划线 */
}
</style>
<div class="underline">带有下划线的文字</div>
<div class="overline">带有上划线的文字</div>
<div class="line-through">带有删除线的文字</div>
<div class="none">无</div>
<div class="fancy">艺术装饰文字</div>
<span class="demo-underline">下划线文字</span>
<span class="demo-wavy">波浪线装饰</span>
<span class="demo-red">红色文本</span>
▶ 试一试

(5) text-indent(文本缩进)

段落首行缩进常用:

▶ 示例

HTML
<style>
p {
  text-indent: 2em;  /* 首行缩进2个字符 */
}
</style>
<p>这是一个段落示例。</p>
▶ 试一试

(6) letter-spacing(字符间距)

▶ 示例

HTML
<style>
.spread {
  letter-spacing: 2px;    /* 加大间距 */
}
.tight {
  letter-spacing: -1px;   /* 缩小间距 */
}
</style>
<div class="spread">字间距较大的文本</div>
<div class="tight">字间距紧凑的文本</div>
▶ 试一试

(7) text-shadow(文本阴影)

⚠️ 可读性提醒: 文字阴影(text-shadow)虽然好看,但过度使用会降低可读性。深色背景配深色阴影完全看不清——确保文字和背景有足够对比度才是首要任务。

▶ 示例

HTML
<style>
h1 {
  text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.5);
    /* 文字阴影 */
  /* 水平偏移 垂直偏移 模糊半径 颜色 */
}

/* 多层阴影 */
h1 {
  text-shadow: 1px 1px 2px red, 0 0 5px blue;
}
</style>
<h1>一级标题</h1>
<span class="demo-red">红色文本</span>
▶ 试一试

(8) white-space(空白处理)

▶ 示例

HTML
<style>
.nowrap {
  white-space: nowrap;      /* 不换行 */
}
.pre {
  white-space: pre;         /* 保留空白和换行(类似<pre>标签) */
}
</style>
<div class="nowrap">不换行的长文本内容</div>
<div class="pre">保留格式
  的文本</div>
▶ 试一试

(9) text-overflow(文本溢出)

配合 overflowwhite-space 使用,处理文本溢出容器的场景:

▶ 示例

HTML
<style>
.ellipsis {
  white-space: nowrap;       /* 不换行 */
  overflow: hidden;          /* 超出隐藏 */
  text-overflow: ellipsis;   /* 用省略号表示被截断的文本 */
}
</style>
<div class="ellipsis">这是一段超长文本,超出部分将被省略号截断</div>
▶ 试一试

3. 综合示例

▶ 示例

HTML
<style>
.article-card {
  font-family: "宋体", "Times New Roman", serif;
  font-size: 16px;
  line-height: 1.8;
  color: #333;
  text-indent: 2em;
}

.article-card h2 {
  font: bold 24px/1.4 "Microsoft YaHei", sans-serif;
  color: #2c3e50;
  text-align: center;
  text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.1);
}

.article-card .read-more {
  color: #3498db;
  text-decoration: none;
}

.article-card .read-more:hover {
  text-decoration: underline;
}
</style>
<div class="article-card">Article card</div>
<span class="demo-New">字体名称</span>
<div class="article-card">Article card</div>
<h2>二级标题</h2>
<span class="demo-bold">粗体文字</span>
<div class="article-card">Article card</div>
<div class="read-more">点击此处展开阅读完整内容</div>
<div class="article-card">Article card</div>
<div class="read-more">点击此处展开阅读完整内容</div>
▶ 试一试

❓ 常见问题

Q 中文字体怎么设置字体栈?
A 推荐顺序:font-family: "PingFang SC", "Microsoft YaHei", "Noto Sans SC", sans-serif;。Mac 用苹方(PingFang SC),Windows 用微软雅黑,然后回退到 Noto Sans 或系统无衬线字体。
Q 加载 Google Fonts 会影响速度吗?
A 会。Google Fonts 需要额外发起网络请求。建议只加载需要的字重(不要一次性加载 300/400/500/700 全部),并且加上 display=swap 参数让浏览器先用后备字体渲染,等自定义字体加载完成后再替换。
Q text-overflow: ellipsis 为什么有时候不生效?
A ellipsis 需要三个条件同时满足:white-space: nowrap(禁止换行)、overflow: hidden(溢出隐藏)、widthmax-width(有限宽)。三个缺一个都不行。

📖 小节

📝 作业

  1. 创建一个文章阅读页面,包含标题、副标题、正文段落。使用不同的字体、字号和颜色区分层级。
  2. 在页面中演示 text-decoration 的至少 4 种效果(下划线、上划线、删除线、波浪线)。
  3. 实现"单行文本溢出显示省略号"的效果——在固定宽度的容器中显示一段长文本,超出部分用 ... 表示。
  4. 使用 text-shadow 给标题添加一个发光效果。
Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏