返回笔记列表
01 · NOTES / WebGIS 开发

第 01 节 · HTML 文档结构

2026 年 9 月 1 日

第 01 节 · HTML 文档结构

📌 版本信息:基于 HTML Living Standard(WHATWG 标准,HTML 无版本号概念、持续演化;2026-08-29 核对) 📚 来源:MDN HTML 基础MDN HTML 元素参考

一、这一节的目标

  1. 说出 HTML 在网页里的角色(它管"结构",CSS 管样子,JS 管行为)
  2. 逐行读懂一个完整 HTML 文档的每个部分
  3. 掌握标签语法:元素、属性、嵌套、自闭合、注释
  4. 知道 headbody 各放什么
  5. 写出你的第一个页面:个人简历骨架

二、HTML 是什么

一句话:HTML 描述"页面上有什么"——它是网页的骨架。

类比盖房子:

技术 角色 类比
HTML 结构:这里有个标题、那里有一段文字、一个按钮 毛坯房的墙和门洞
CSS(第 04 节起) 外观:什么颜色、多大、怎么排 装修
JavaScript(第 09 节起) 行为:点了怎么办、数据怎么变 水电与智能设备

三者关系:HTML 是地基。结构乱了,样式和行为都是空中楼阁——这就是为什么本模块用 8 节先把它打牢。

HTML 的全称是 HyperText Markup Language(超文本标记语言)。"标记"的意思是:你往普通文字上打标签,声明"这一块是什么"

<h1>我是标题</h1>
<p>我是段落</p>

浏览器读到 <h1> 就知道:这块内容是"一级标题",于是给它默认的大字号加粗(这个默认样式以后会被 CSS 覆盖)。


三、解剖一个完整的 HTML 文档

每个 HTML 文件都长下面这样(每一行都标了人话,这就是你所有页面的起点模板):

<!DOCTYPE html>
<!-- ↑ 文档类型声明:必须是第一行。
     告诉浏览器"请用现代标准模式解析我"。
     没有它浏览器会进入"混杂模式",用 2000 年前的兼容行为渲染,各种诡异。 -->

<html lang="zh-CN">
<!-- ↑ 整个页面的根元素,所有内容都在它里面。
     lang="zh-CN" 声明页面语言:屏幕阅读器会用它选发音,搜索引擎用它判断语言。 -->

  <head>
    <!-- ↑ head 区:给浏览器/搜索引擎看的"后台信息",页面里不直接显示 -->

    <meta charset="UTF-8" />
    <!-- ↑ 字符编码:声明"我的文字用 UTF-8 编码"。
         不写它,中文可能变成"鏂囦欢鍚"这样的乱码(mojibake)。永远放在 head 第一个。 -->

    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <!-- ↑ 视口设置:手机上页面宽度 = 设备宽度,不默认缩小。
         没有它,手机会把页面当 980px 宽的桌面页缩小显示(响应式的前提)。 -->

    <title>我的第一个页面</title>
    <!-- ↑ 标题:显示在浏览器标签页上,也是搜索引擎结果里的蓝色大标题。 -->

    <!-- CSS 以后从这引入:<link rel="stylesheet" href="style.css" /> -->
  </head>

  <body>
    <!-- ↑ body 区:用户真正看到的所有内容 -->

    <h1>你好,WebGIS</h1>
    <p>这是我写的第一个页面。</p>

    <!-- JS 以后从这引入:<script src="app.js"></script>(一般放 body 末尾) -->
  </body>
</html>

结构口诀:DOCTYPE 声明 → html 包一切 → head 管配置 → body 管内容。


四、标签语法五条规则

<h1 class="main-title">标题文字</h1>
 └┬┘  └────┬─────┘ └──┬──┘ └─┬─┘
 标签名    属性名      属性值   内容    ← 合起来叫一个"元素(element)"
   └──────────┬──────────┘
         结束标签带斜杠
  1. 元素 = 开始标签 + 内容 + 结束标签<p>文字</p> 是一个元素;<p> 单独一个叫标签。
  2. 属性写在开始标签里,格式 名="值"。比如 <a href="https://...">href 就是属性。
  3. 自闭合元素没有内容、不写结束标签<img /><br /><hr /><meta /><link /><input />——它们要么本身就是个"物件"(图片),要么是"一个动作"(换行)。
  4. 嵌套不许交叉<p><b>加粗</b></p> ✅ 正确(像洋葱圈);<p><b>加粗</p></b> ❌ 交叉(像项链打结)。
  5. 注释<!-- 被注释的内容 -->,浏览器忽略,给人看的。HTML 注释不能嵌套

💡 大小写:HTML 标签名不区分大小写,但行业规范统一小写。属性值里的引号单双皆可,统一用双引号。


五、浏览器会"原谅"你的错误——但别原谅自己

浏览器解析 HTML 有强大的容错:你忘了写 </p>,它会猜着补上;结构错了,它也尽量渲染出来。

这是好事也是陷阱:页面"看起来正常"不代表代码正确。错误的嵌套会让 CSS 选择器失效、JS 找不到元素,而且这种 bug 排查极痛苦。从第一行就写规范代码,是给自己省未来的命。

验证工具:W3C Markup 验证器——把 HTML 贴进去,它告诉你哪不规范。


六、head 里常见成员速览(后面章节逐个展开)

标签 作用 什么时候细学
<meta charset> 编码声明 本节
<meta name="viewport"> 移动端视口 第 08 节 响应式
<title> 标签页标题 本节
<link rel="stylesheet"> 引入 CSS 第 04 节
<script> 引入 JS 第 14 节(本模块)
<meta name="description"> SEO 摘要 第 28 节 语义化

七、动手跟练:01 · 个人简历骨架

配套文件:02-web-basics/examples/01-简历骨架.html(我已写好,带逐行中文注释)

步骤:

  1. 用 VS Code 打开该文件,通读一遍,对照第三、四节的内容确认每行的作用
  2. 右键 → Open with Live Server 在浏览器里看效果(此时还没有 CSS,很丑——正常,骨架本来就这样)
  3. 改造成你自己的:姓名、籍贯、教育经历(GIS 专业正好写上)、技能清单
  4. <!-- TODO --> 注释标记的 3 处补全

通关标准:

  • 页面在浏览器正常显示你的信息
  • 能口头说出:为什么 <meta charset> 必须放 head 最前面
  • 修改 <title> 后,浏览器标签页文字跟着变了
  • 把文件提交进 Git:git add . && git commit -m "02-01 简历骨架"

八、自测题

  1. HTML / CSS / JS 分别管网页的什么?用什么比喻向不懂技术的人解释?
  2. <!DOCTYPE html> 删掉会怎样?为什么第一行必须是它?
  3. <meta charset="UTF-8"> 不写,最可能出什么问题?
  4. 下面三个元素哪些是自闭合的:<p> <img> <br> <div> <input>
  5. <p><b>文字</p></b> 错在哪?

参考答案

  1. 结构/外观/行为;房子类比:毛坯/装修/水电智能。
  2. 浏览器进入混杂模式按老标准渲染,样式行为不可预期;它必须在最前面,后面的解析才走标准模式。
  3. 中文乱码(浏览器按错误编码解码字节)。
  4. <img> <br> <input> 自闭合;<p> <div> 需要结束标签。
  5. 嵌套交叉了。必须是 <p><b>文字</b></p>——结束顺序要像洋葱一样后进先出。

九、下一步

会搭骨架了,但页面里还没有"材料" → 第 02 节:常用标签与超链接,把文字、列表、图片、表格、链接这些砖头认全。

TAGSweb