A01 认识网页与 HTML

2026-10-31 15:082 阅读累计 不足 1 分钟约 13 分钟HTML

摘要:浏览器里看到的每一个网页,本质都是一份纯文本文件。本文从「输入网址到看见画面」的全过程出发,说明 HTML 在这条链路中的位置,并给出一份可直接运行、可自行修改的 HTML 文件。读完本文能够看懂任意网页的基础结构,并独立创建一个可运行的页面。
关键词:HTML,标签,元素,属性,DOM

所属:frontend/html / A-入门 | 上一篇:A00-总结 | 下一篇:A02-搭建编写环境

1 引言

在浏览器输入一个网址,屏幕出现排版整齐的图文。这个画面由三层文件共同决定:描述结构的 HTML、描述样式的 CSS、描述行为的 JavaScript。三者之中只有 HTML 不可省略——没有 HTML,另外两层没有作用对象,浏览器会拿到一张空白页。

常见的学习路径是从「标签清单」开始:先背 <div>、<span> 的写法,再逐条记忆属性。这条路径的缺口在于,学习者不知道标签在浏览器里经历了什么,于是遇到页面空白、中文乱码、修改不生效时,只能逐项试错。本文先补齐这条链路,再落到代码。

表 1-1 界定本文的覆盖范围。

项 本文覆盖 本文不覆盖
内容 HTML 文件结构、标签与元素的对应关系 CSS 样式规则、JavaScript 交互逻辑
浏览器行为 从请求到解析出页面的完整顺序 渲染引擎内部的布局与绘制算法
工具 系统自带记事本即可完成全部操作 编辑器插件、构建工具、框架脚手架
产出 一个可双击打开、可自行修改的 HTML 文件 可上线的站点(涉及服务器与域名)

2 预备知识

本文不需要安装任何开发工具,全部操作在一台能上网的电脑上完成。环境要求见表 2-1。

项 要求 核对方式
操作系统 Windows 10+ / macOS 12+ / 主流 Linux 发行版 任意
文本编辑器 Windows 记事本、macOS 文本编辑,或 VS Code 能新建 .html 后缀的纯文本文件
浏览器 Chrome 130+ / Edge 130+ / Firefox 132+ 地址栏输入 about:version 查看
前置篇目 无 —

本篇涉及的核心术语(HTML、标签、元素、属性、DOM)只在 Z01 术语表 定义一次,正文不再重复解释;遇到不认识的词先查该表。

3 原理与实现

3.1 从地址到画面

输入网址到看到画面,浏览器依次完成六件事,如图 3-1 所示。

flowchart TD
    A["地址栏输入网址"] --> B["DNS 解析:域名 → IP"]
    B --> C["建立连接并请求资源"]
    C --> D["服务器返回 HTML 文本"]
    D --> E["解析 HTML 生成 DOM 树"]
    E --> F["计算样式并布局"]
    F --> G["绘制到屏幕"]

图 3-1 从地址栏到画面的六步流程

图上可见:服务器交给浏览器的只是文本,画面是浏览器解析文本后的产物;同一份 HTML 在任何浏览器中解析出的结构一致,视觉呈现可能略有差异。

这一步的结论决定了后续所有排错思路:页面显示异常,先判断问题出在「文本内容」还是「浏览器解释」。文本内容可以直接打开文件核对,解释行为则要看浏览器的开发者工具。举例来说,中文显示成方块属于前者(文件编码与声明不匹配),元素位置错乱属于后者(样式与布局问题)。

3.2 写一个最小 HTML 文件

一个结构完整的 HTML 文件由文档类型声明、根元素、头部与主体四部分组成。完整代码见下,可直接复制使用。

<!-- 运行环境:任意文本编辑器 + Chrome 130+ -->
<!DOCTYPE html>
<html lang="zh-CN">
  <head>
    <meta charset="UTF-8" />
    <title>我的第一个网页</title>
  </head>
  <body>
    <h1>你好,网页</h1>
    <p>这是一段用 HTML 写出来的文字。</p>
  </body>
</html>

这份代码的层级关系如图 3-2 所示。

flowchart TD
    D["!DOCTYPE html<br/>声明文档类型"] --> H["html lang=zh-CN<br/>根元素"]
    H --> HEAD["head<br/>不给用户看的信息"]
    H --> BODY["body<br/>给用户看的内容"]
    HEAD --> M["meta charset=UTF-8<br/>声明编码"]
    HEAD --> T["title<br/>标签页标题"]
    BODY --> H1["h1<br/>一级标题"]
    BODY --> P["p<br/>段落"]

图 3-2 最小 HTML 文件的元素层级

图上可见:head 与 body 是根元素下的两个平级分支,页面上能看见的内容全部位于 body 之内。

各标签的作用与必须性见表 3-1。

标签 / 声明 作用 是否可省略 省略后果
<!DOCTYPE html> 声明本文件按 HTML5 标准解析 不建议 可能进入怪异模式,布局异常
<html lang="zh-CN"> 根元素;lang 声明页面主要语言 不建议 朗读与翻译工具可能用错语言
<head> 容纳元信息 否 编码、标题等信息无处安放
<meta charset="UTF-8"> 声明文件编码 否 中文大概率显示为乱码
<title> 浏览器标签页与收藏夹显示的文字 是 标签页显示文件路径
<body> 容纳页面可见内容 否 内容被浏览器自动归入 body
<h1> 一级标题,一个页面只用一个 是 页面缺少主标题
<p> 段落 是 文本仍显示,但失去段落语义

书写时有四条硬性习惯,与浏览器兼容性无关,只影响后续维护成本:标签成对出现、标签名统一小写、缩进两级空格、属性值用双引号包裹。

4 验证与讨论

按以下四步操作,逐步确认结果与表 4-1 一致。

  1. 新建一个纯文本文件,输入 3.2 节的代码,保存为 index.html,保存编码选择 UTF-8。注意后缀必须是 .html,不能是 .txt。
  2. 双击该文件,浏览器自动打开,地址栏显示 file:/// 开头的本地路径。
  3. 对照表 4-1 检查画面内容。
  4. 把 <h1> 中的文字改成任意内容,保存后回到浏览器按 F5 刷新,观察文字同步变化。

表 4-1 记录关键代码与画面表现的对应关系。

代码片段 画面表现 解释
<title>我的第一个网页</title> 标签页显示「我的第一个网页」 title 不进页面正文,只进浏览器外壳
<h1>你好,网页</h1> 页面显示一行加粗放大的「你好,网页」 h1 默认字号最大,且有上下留白
<p>…</p> 页面显示一行正常大小的文字 p 默认独占一行,段间距由浏览器默认样式给
<meta charset="UTF-8"> 中文正常显示,无乱码 声明的编码必须与实际保存编码一致

表 4-2 用于自检,四项全部通过即达成本篇目标。

检查项 预期结果 不通过时先看
地址栏协议 以 file:/// 开头 3.1 节流程第二步
页面主标题 显示「你好,网页」,字号最大 3.2 节代码块
中文显示 全部为正常汉字 表 5-1 第一行
修改后刷新 画面随文字变化 表 5-1 第三行

讨论与局限。 本篇只打开了 HTML 的结构层,因此有三处现象属于正常,不必排查:其一,页面没有任何排版设计,因为尚未引入 CSS;其二,点击文字没有反应,因为尚未引入 JavaScript;其三,以 file:/// 打开时,部分需要请求数据的脚本能力会被浏览器限制,这也是后续篇目改用本地服务器预览的原因。另外,h1 的默认字号在 Chrome 与 Firefox 中略有不同,这属于浏览器默认样式的差异,不属于代码错误。

5 常见问题

表 5-1 覆盖本篇操作中最常见的五种失败现象。

现象 原因 处理
中文显示成方块或乱码 文件实际保存编码不是 UTF-8,或缺少 charset 声明 用编辑器另存为 UTF-8,并确认 meta charset 为 UTF-8
浏览器直接显示一堆代码 文件后缀为 .txt,浏览器按纯文本打开 重命名为 .html(先在资源管理器打开「显示扩展名」)
改完内容刷新无变化 未保存文件,或浏览器缓存了旧文件 保存后在浏览器按 Ctrl + F5 强制刷新
页面完全空白 内容写在了 head 里,或 body 标签未闭合 检查可见内容是否位于 body 之内,检查成对标签是否遗漏
地址栏是 file:/// 但图片不显示 图片路径写法错误(本篇未涉及,A05 详细展开) 直接看 A05 的路径规则

6 结论

本篇的结论可以压缩为四条,见表 6-1。

序号 结论 依据
1 网页是一份纯文本文件,画面是浏览器解析后的结果 图 3-1
2 HTML 负责结构,CSS 负责样式,JavaScript 负责行为 表 1-1
3 标签成对、编码声明、内容置于 body,是三个必查项 表 3-1、表 5-1
4 排错先分清「文本内容问题」与「浏览器解释问题」 表 4-1

在工具选择上,记事本与专业编辑器写出的 HTML 语法等价,前者省去安装成本,后者提供语法高亮与错误提示。入门阶段两者均可,长期写作使用编辑器更省排查时间,差异在下一篇具体说明。

参考文献

[1] MDN Web Docs · HTML:超文本标记语言,Mozilla,https://developer.mozilla.org/zh-CN/docs/Web/HTML(访问于 2026-10-29)
[2] HTML Living Standard,WHATWG,https://html.spec.whatwg.org/(访问于 2026-10-29)
[3] 字符编码(Character encoding),MDN Web Docs,https://developer.mozilla.org/zh-CN/docs/Glossary/Character_encoding(访问于 2026-10-29)

返回文章列表

评论 0

0/2000

还没有评论,快来抢沙发吧~