HTML 文档骨架

任何一份标准 HTML 页面,骨架几乎都是固定的几行。这一章逐行拆解每一部分的作用——看懂这十几行,你就掌握了一切 HTML 文档的"地基"。

1. 完整骨架长这样

把下面代码存为 index.html,浏览器打开就能看到一个最基础的页面:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>页面标题</title>
</head>
<body>
  <!-- 这里放所有可见内容 -->
  <h1>欢迎</h1>
</body>
</html>

2. DOCTYPE 声明

第一行 <!DOCTYPE html>文档类型声明,告诉浏览器这是 HTML5 文档,请用标准模式渲染。固定写法,字母大小写不敏感,但通常全大写以示郑重。

历史小知识:HTML 4 和 XHTML 1.0 时代的 DOCTYPE 写法极其冗长(常常 100 多字符),开发者根本记不住只能复制。HTML5 简化到这一行,大快人心。

千万别省略!省了 DOCTYPE,浏览器会进入"怪异模式"(quirks mode),很多盒模型、表格行为会变得不一致,调试时让你怀疑人生。

3. html 根标签

<html> 是整个文档的根标签,所有其他标签都必须包在它里面。一个 HTML 文档只有一个 html 元素。

它通常带一个 lang 属性,声明页面主要语言:

lang 看似不起眼,但作用很大:搜索引擎用它判断页面语言、浏览器用它决定是否翻译、读屏软件用它选语音引擎。所以必写

4. head 头部

<head> 里放看不见的元信息——浏览器不会把它渲染到页面上,但这些信息至关重要:

<head>
  <!-- 字符编码:必放第一行,防乱码 -->
  <meta charset="UTF-8">

  <!-- 视口:让移动端自适应屏幕 -->
  <meta name="viewport" content="width=device-width, initial-scale=1.0">

  <!-- 页面标题:浏览器标签上显示的字 -->
  <title>我的网站 - 首页</title>

  <!-- 描述:搜索引擎可能用作摘要 -->
  <meta name="description" content="这是一个示例网站">

  <!-- 引入外部 CSS -->
  <link rel="stylesheet" href="style.css">

  <!-- 页面内的小图标(浏览器标签上的图标) -->
  <link rel="icon" href="favicon.ico">

  <!-- 引入 JS(defer 表示解析完 HTML 再执行) -->
  <script src="app.js" defer></script>
</head>

关键元素:

5. body 主体

<body> 里放看得见的内容——所有要显示在页面上的东西都写在这里。一个文档只有一个 body

<body>
  <!-- 页面顶部 -->
  <header>
    <h1>我的博客</h1>
    <nav>导航菜单</nav>
  </header>

  <!-- 主体内容 -->
  <main>
    <article>
      <h2>第一篇文章</h2>
      <p>正文段落……</p>
    </article>
  </main>

  <!-- 页脚 -->
  <footer>© 2026 我的博客</footer>

  <!-- 脚本放 body 末尾,不阻塞渲染 -->
  <script src="app.js"></script>
</body>

注意最后一行:script 标签通常放在 body 末尾。因为浏览器从上到下解析 HTML,遇到 script 会停下来先下载执行,如果在 head 里放大量 JS,页面会"白屏"很久。放末尾可以让 HTML 先渲染出来,体验更好。

6. 属性 — 标签的"配置项"

属性写在开始标签里,格式是 名="值",用来给元素附加额外信息。一个元素可以有多个属性,顺序无所谓,用空格分隔:

<!-- 属性写在开始标签里,格式: 名="值" -->
<a href="https://example.com" target="_blank">链接</a>
<!-- href 和 target 都是属性 -->

<!-- 一个元素可以有多个属性,顺序无所谓,用空格分隔 -->
<img src="cat.jpg" alt="一只猫" width="200" height="150">

<!-- 布尔属性:只写名字就生效,不需要赋值 -->
<input type="text" disabled>
<option selected>默认选中</option>

<!-- 自定义数据属性 data-* -->
<div id="user" data-user-id="42" data-role="admin">张三</div>

常用全局属性(任何标签都能用):

7. 自闭合标签

大多数标签成对出现(如 divp),但少数标签没有内容也没有结束标签,称为"自闭合标签"或"空元素":

HTML5 中可以写 <br><br />,两者等价。XHTML 时代强制要求后者,现在不再强制。

8. 字符编码

页面"乱码"几乎都是字符编码没声明或声明错。在 head 第一行加 <meta charset="UTF-8"> 就能解决 99% 的问题:

同时,你的 HTML 文件保存时也要选 UTF-8 编码(VS Code 默认就是)。

9. 字符实体

如果想在页面上直接显示 <>、空格等字符,会和 HTML 标签语法冲突。这时用"字符实体":以 & 开头、; 结尾。

<p>HTML 中用 &lt; 表示小于号,因为 &lt; 会被当成标签</p>
<p>大于号 &gt;  和号 &amp;  引号 &quot;</p>
<p>不换行空格 &nbsp;&nbsp;&nbsp; 连续多个也能保留</p>
<p>版权符号 &copy; 2026  人民币 &yen;99  注册商标 &reg;</p>

最常用的几个:&amp;(显示 &)、&lt;(显示 &lt;)、&gt;(显示 &gt;)、&nbsp;(不换行空格,连续多个也能保留)。写技术博客展示代码时这几个一定要会用。

10. 一个完整的最小页面

把所有概念串起来,这是一个语义完整、能直接上线的小页面骨架:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>页面标题</title>
</head>
<body>
  <!-- 这里放所有可见内容 -->
  <h1>欢迎</h1>
</body>
</html>

记住这个结构——你接下来无论写多复杂的页面,根上都是这一套。

小结

这一章你了解了 HTML 文档的整体骨架:DOCTYPE → html → head/body;知道了 head 里放看不见的元信息、body 里放看得见的内容;记住了属性、自闭合标签、字符编码、字符实体的用法。下一篇我们进入 body 内部,学最基础的内容标签——标题、段落与文本

← 上一篇 编辑器与浏览器

下一篇 标题、段落与文本

✈️💬