在构建网页的奇妙世界里,HTML(超文本标记语言)是我们与浏览器沟通的桥梁。作为一个有经验的开发者,我经常看到初学者在使用标签时感到困惑,尤其是搞不清楚为什么有些标签是“单身狗”,而有些标签必须“成双成对”。
今天,我们将深入探讨一个核心问题:在 HTML 中,哪些标签既包含开始标签又包含结束标签? 我们不仅要列举它们,还要理解它们背后的逻辑,以及在实际开发中如何正确地使用它们。掌握这一点,不仅能让你写出更规范的代码,还能避免很多因标签未闭合而产生的布局 Bug。
标签的两大阵营:容器标签与空标签
在我们开始具体分类之前,我想先和你明确一个基本概念。HTML 标签大致可以分为两类,区分它们的最好方法就是看它们是否需要“关闭”开关。
- 成对出现的标签(容器标签/非空元素):这些标签必须有开始标签(如 INLINECODE72f11205)和结束标签(如 INLINECODE48ff4d26)。它们的主要作用是包裹内容,对内容进行语义化定义或样式修饰。如果忘记写结束标签,浏览器可能会感到困惑,导致页面布局崩坏。这是我们要重点讨论的对象。
- 自闭合标签(空标签/空元素):这些标签只有一个标签,例如 INLINECODEc0c0145f、INLINECODE77892606 或
。它们通常用于引入外部资源或创建特定的单一功能(如换行),不需要包裹任何内容。
最佳实践提示:虽然 HTML5 规范相对宽松,允许某些标签(如
)在特定情况下省略闭合标签,但我强烈建议你始终显式地闭合标签。这是一种良好的工程习惯,能让你的代码更具可读性,也更容易维护。
为了更系统地理解,我们将这些成对出现的标签分为四个主要阵营来探索:
- 文档结构标签(网页的骨架)
- 语义化标签(网页的含义)
- 文本格式化与容器标签(网页的血肉)
- 表格标签(数据的展示)
—
1. 文档结构标签:网页的地基
每个标准的 HTML 页面,都像是一座房子,需要坚实的地基和框架。这些标签定义了网页的整体层级,它们是成对出现的最基础代表。
#### 标签
这是所有 HTML 元素的根元素。除了 INLINECODE50056904 声明外,网页中的所有内容都必须包裹在 INLINECODEfab3c4c5 和 之间。
- 作用:告诉浏览器,“嘿,这是一个 HTML 文档”。
- 语法:
#### 标签
这是网页的“大脑”。它包含了所有的元数据,比如字符集声明、CSS 样式表链接、网页标题等。这些内容通常不会直接显示在网页的可视区域中。
- 作用:配置页面的信息和资源引用。
- 语法:
页面标题
#### 标签
这是网页的“身体”。你在浏览器窗口中看到的所有内容——文字、图片、按钮、视频——都必须放在 INLINECODEc2f85208 和 INLINECODE510794a9 之间。
- 作用:定义网页的可视内容。
- 语法:
你好,世界!
这是一段可见的文字。
#### 标签
它定义了浏览器标签页上显示的标题,也是用户在收藏网页时保存的默认名称。
- 作用:设置网页标题。
- 语法:
我的技术博客
#### 实战示例 1:一个标准的 HTML5 骨架
让我们把这些标签组合起来,构建一个最简单的、符合规范的页面结构。
文档结构示例 - 标题演示
欢迎来到 HTML 世界
这是一个包含完整开头和结尾标签的段落。
开发者洞察:在这个例子中,你可以清楚地看到层级关系:INLINECODEe44c6c18 包裹着 INLINECODE388d3923 和 INLINECODE87da26b1,而 INLINECODE5ee01477 又包裹着 INLINECODE5948eb93。这种嵌套结构是 HTML 的核心,绝对不能出现标签“交叉”的情况(例如 INLINECODE1f13d420 是绝对错误的)。
—
2. 语义化标签:让代码“会说话”
在 HTML5 出现之前,我们大量使用 INLINECODE47253c86 标签来构建页面。虽然 INLINECODEd49a26fb 也能用,但浏览器不知道那一块内容到底是导航栏、文章还是侧边栏。HTML5 引入了一组语义化标签,它们不仅成对出现,还赋予了内容明确的含义。这对 SEO(搜索引擎优化)和无障碍阅读至关重要。
####
通常用于页面的顶部,或者某个区块(section)的头部。
- 包含内容:网站 Logo、导航菜单、搜索框等。
####