跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
HTML / CSS大前端

HTML/CSS 文本字体与字号设置实战指南

HTML/CSS 文本字体与字号设置实战指南。详解 font-family 字体族定义及回退机制,对比 pt、px、em、rem、% 等单位特性,解析绝对与相对关键字用法。重点指出嵌套元素使用相对单位时的尺寸累积问题,提供避免样式失控的实战建议。适合前端初学者快速掌握文本排版核心规范。

w795471发布于 2025/2/23更新于 2026/10/2495 浏览
HTML/CSS 文本字体与字号设置实战指南

一、设置字体名称

在网页设计中,选择合适的字体是提升可读性的关键。CSS 允许通过 font-family 属性指定字体,并支持多个备选方案。

当浏览器渲染文本时,它会按顺序检查列表中的字体。如果系统安装了首选字体(如 Courier New),则直接显示;若未安装,则尝试下一个;如果列表中的所有字体都不可用,最终会回退到最后一个通用字体族(如 monospace)。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>文本样式</title>
    <style type="text/css">
        #p1 { font-family: sans-serif; font-size: 3em; }
        #p2 { font-family: Verdana; font-size: 2em; }
        #p3 { font-family: monospace; font-size: 2em; }
        #p4 { font-family: cursive; font-size: 2em; }
        #p5 { font-family: fantasy; font-size: 2em; }
        #p6 { font-family: "Courier New", "Andale Mono", monospace; font-size: 2em; }
    </style>
</head>
<body>
<p id="p1">I love you. -- sans-serif</p>
<p id="p2">I love you. -- Verdana</p>
<p id="p3">I love you. -- monospace</p>
<p id="p4">I love you. -- cursive</p>
<p id="p5">I love you. -- fantasy</p>
<p id="p6">I love you. -- Courier New, Andale Mono, monospace</p>
</body>
</html>

二、设置字号

字号控制着文本的视觉大小,CSS 提供了多种度量方式,理解它们的区别至关重要。

1. 常用单位

绝对单位:pt 与 pc

点(point)和派卡(pica)主要用于打印设计。1pc = 12pt,1pt = 1/72 英寸。虽然它们在屏幕显示上也能工作,但不同设备的像素密度差异会导致显示效果不一致,因此不建议用于纯屏幕显示的文本样式。

像素:px

像素(pixel)是屏幕显示中最常用的单位。它能让文本在不同浏览器和平台上保持一致的外观。不过,固定像素值可能会忽略用户在浏览器中设置的默认缩放偏好,影响无障碍体验。

相对单位:em、ex、%
  • em: 基于父元素的字体大小。1em 通常等于当前上下文下的默认字号。使用 em 可以让用户通过浏览器设置调整整体文本大小,兼容性更好。
  • ex: 基于小写字母 x 的高度。理论上是相对单位,但在实际应用中不如 em 普及。
  • 百分比 (%): 与 em 类似,100% 等同于 1em。

此外,rem 是一个较新的单位,它相对于根元素(html)的字体大小,避免了 em 在嵌套结构中的累积效应。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8"/>
    <title>字号单位演示</title>
    <style type="text/css">
        #p0 { font-size: 1pc; }
        #p1 { font-size: 12pt; }
        #p2 { font-size: 16px; }
        #p3 { font-size: 1em; }
        #p4 { font-size: 1ex; }
        #p5 { font-size: 100%; }
        #p6 { font-size: 1rem; }
        .note { width: 50%; height: 200px; overflow-y: scroll; }
    </style>
</head>
<body>
<p id="p0">I love you. -- 1pc</p>
<p id="p1">I love you. -- 12pt</p>
<p id="p2">I love you. -- 16px</p>
<p id="p3">I love you. -- 1em</p>
<p id="p4">I love you. -- 1ex</p>
<p id="p5">I love you. -- 100%</p>
<p id="p6">I love you. -- 1rem</p>
<hr/>
<div class="note">
    <ol>
        <li>1pc = 1/6 inch, 1pt = 1/72 inch ==> 1pc=12pt</li>
        <li>1pc ≈ 12pt ≈ 16px ≈ 1em (视浏览器默认设置而定)</li>
        <li>pc、pt、px 属于绝对度量单位。</li>
        <li>em、ex、percentage 属于相对度量单位。</li>
        <li>em 相对于直接父元素,rem 相对于顶级根元素。</li>
    </ol>
</div>
</body>
</html>

2. 关键字设置

除了数值,CSS 还支持关键字来定义字号。

绝对关键字

包括 xx-small 到 xx-large,共七个级别。大多数浏览器将 medium 视为默认未样式化的文本大小,其他关键字在此基础上按比例调整。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>字号绝对关键字</title>
    <style type="text/css">
        #p0 { font-size: xx-small; }
        #p1 { font-size: x-small; }
        #p2 { font-size: small; }
        #p3 { font-size: medium; }
        #p4 { font-size: large; }
        #p5 { font-size: x-large; }
        #p6 { font-size: xx-large; }
    </style>
</head>
<body>
<p id="p0">I love you. -- xx-small</p>
<p id="p1">I love you. -- x-small</p>
<p id="p2">I love you. -- small</p>
<p id="p3">I love you. -- medium</p>
<p id="p4">I love you. -- large</p>
<p id="p5">I love you. -- x-large</p>
<p id="p6">I love you. -- xx-large</p>
</body>
</html>
相对关键字

larger 和 smaller 分别表示比父元素大一级或小一级。这类似于 em 和 % 的逻辑,依赖于上下文。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>字号相对关键字</title>
    <style type="text/css">
        p{
            font-size: 2em;
            font-family: "Times New Roman";
        }
        weak {
            font-size: smaller;
            color: #f0ad4e;
        }
        em {
            font-size: larger;
            color: red;
        }
    </style>
</head>
<body>
<p>
    Last year, when he was searching for people to invest in his company,
    he wanted <weak>someone</weak> who knew the <em>Chinese</em> market.
</p>
</body>
</html>

3. 嵌套元素的陷阱

在使用相对单位(如 %、em)时,需要注意嵌套层级带来的尺寸累积效应。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>相对字号度量遇到的问题</title>
    <style type="text/css">
        div, p, em, a, code {
            font-size: 130%;
        }
        .note {
            width: 100%;
            height: 300px;
            overflow-y: scroll;
            border: 1px solid lightgrey;
            border-radius: 5px;
        }
    </style>
</head>
<body>
<div>
    <p>
        You'll <em>probably</em> be surprised when using
        <a href="#">a relative <code>font-size</code></a>
        and nested elements.
    </p>
</div>
<div class="note">
    <pre>
         div, p, em, a, code {
            font-size: 130%;
        }
    </pre>
    <hr/>
    <pre>
        <p>You'll <em>probably</em> be surprised when using
        <a href="#">a relative <code>font-size</code></a>
        and nested elements. </p>
    </pre>
    <p>说明:div 字号是默认字号的 130%,其子元素 p 的字号是 div 字号的 130%,即默认字号的 169%;然后 em、a、code 三个元素又是 p 元素的子元素,其字号是 p 元素字号的 130%,那就是默认字号的 219.7%。</p>
</div>
</body>
</html>

在实际开发中,这种指数级增长可能导致文本过大或布局错乱。建议在设计组件时,尽量统一根节点的字号基准,或使用 rem 配合 JS 动态计算,以避免此类连锁反应。

目录

  1. 一、设置字体名称
  2. 二、设置字号
  3. 1. 常用单位
  4. 绝对单位:pt 与 pc
  5. 像素:px
  6. 相对单位:em、ex、%
  7. 2. 关键字设置
  8. 绝对关键字
  9. 相对关键字
  10. 3. 嵌套元素的陷阱

更多推荐文章

查看全部
  • Stable Diffusion WebUI Docker 部署指南
  • Python 字节码逆向工具:pycdc 使用指南与原理分析
  • OpenClaw iOS/Android 端部署实战:语音唤醒与离线 AI 助手
  • 大模型定义、发展历程及应用场景全解析
  • AIGC 产品经理转行指南:核心技能体系与实战路径
  • 基于 DeepFace 与 OpenCV 的实时情绪分析器
  • Webman 框架:基于异步非阻塞架构的 PHP 高性能开发指南
  • 大模型量化技术可视化指南
  • 如何两个月内提升漏洞挖掘能力成为独立渗透人员
  • 力扣 Hot100 普通数组经典题目 Python 实现
  • GraphRAG 论文解读:从局部到全局的查询聚焦摘要方法
  • Git 本地项目上传 GitHub 指南:SSH 与 Token 认证方式
  • Whisper 语音识别技术突破:大型模型高速优化版解析
  • Linux 进程间通信:命名管道(FIFO)实战与面向对象封装
  • Docker + Nginx 实现 Java 服务零停机发布,解决 502 问题
  • OpenClaw macOS 本地部署及飞书机器人配置指南
  • 金融风控文本分析:基于 Llama-Factory 训练反欺诈模型
  • AI 时代技术民主化:文科生为何成最大受益者?
  • Token 分析平台系统架构设计:从前端到核心逻辑
  • NLP 与计算机视觉融合实战:从原理到图像字幕生成

相关免费在线工具

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

  • JSON美化和格式化

    将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online