讲解
字符实体(character entity)解决一个根本问题:有些字符在 HTML 里有特殊含义,直接写会干扰解析。最典型的是 < 和 >——浏览器把它们当标签的边界,想在正文里展示「a < b」就必须写成 a < b。同理 & 本身也有特殊含义(它是实体的开头),显示 & 要写 &;双引号在属性值里有边界作用,属性值内显示引号写 "。这四个是必须记住的;教程、文档类页面展示代码时满篇都是它们的身影。
实体的格式是 &名字; 或 &#数字;,名字区分大小写。常用的一组:<(<)、>(>)、&(&)、"(")、 (不换行空格,两个词之间不想被折行拆开时使用,比如「100 km」)、©(©)、®(®)、™(™)、×(×)、…(……)。如今文件都用 UTF-8 编码,©、× 这些符号可以直接输入,实体不再是刚需;但 <、>、& 这三个涉及解析的字符,在正文里仍建议写成实体,属性值里的引号亦然。
注释的语法是 <!-- 注释内容 -->,不会显示在页面上,用来给维护者留说明、临时屏蔽一段代码。注释不能嵌套(注释里不能再出现 -->),也不要在注释里放敏感信息——任何人「查看源代码」都能看到。上古时代针对 IE 的条件注释(<!--[if IE]>)已随 IE 退场而彻底作废,见到知道是历史遗迹即可。另外提醒:现代构建流程通常会在发布时剥离注释压缩 HTML,但源码阶段的注释依然是团队协作的重要工具。
示例
<!-- 特殊字符必须用实体,否则被当成标签解析 -->
<p>判断条件是 a < b && b > 0。</p>
<p>段落标签写作 <p>,以 </p> 结束。</p>
<!-- 版权符号、数学符号等 -->
<p>© 写作 ©,× 写作 ×,省略号写作 …。</p>
<!-- 不换行空格:数字与单位永不拆行 -->
<p>全程 100 km,限时 24 小时。</p>
<!-- 注释:给人看的说明,不显示在页面上 -->
<!-- TODO:等设计稿确认后替换下面的占位图 -->
<img src="placeholder.png" alt="占位图" width="300" height="200" />
<!-- 用注释临时屏蔽一段内容
<p>这段暂时不显示。</p>
-->
常见坑
- 正文直接写 < 和 &:
a < b里的< b可能被浏览器当成一个未知标签的开头,导致后面内容消失。正文里的 <、>、& 一律写实体。 - 实体忘记分号:
&少了结尾分号,虽然浏览器如今大多容错,但紧邻字母时会解析失败(©cat不会变成 ©cat)。分号永远写全。 - 在注释里放密码、内部地址等敏感信息:查看源代码一览无余,注释不是私密空间。
- 滥用 排版:用一堆不换行空格顶出缩进和对齐是排版灾难,空白与缩进是 CSS 的职责。 只用于「这两个词不该被拆行」。
小结
<、>、&、" 四个字符在正文/属性里要写实体;©、× 等可直接输入也可用实体; 防拆行;注释 <!-- --> 不嵌套、不放秘密。下一章学习在页面里嵌入音频与视频。