讲解

字符实体(character entity)解决一个根本问题:有些字符在 HTML 里有特殊含义,直接写会干扰解析。最典型的是 <>——浏览器把它们当标签的边界,想在正文里展示「a < b」就必须写成 a &lt; b。同理 & 本身也有特殊含义(它是实体的开头),显示 & 要写 &amp;;双引号在属性值里有边界作用,属性值内显示引号写 &quot;。这四个是必须记住的;教程、文档类页面展示代码时满篇都是它们的身影。

实体的格式是 &名字;&#数字;,名字区分大小写。常用的一组:&lt;(<)、&gt;(>)、&amp;(&)、&quot;(")、&nbsp;(不换行空格,两个词之间不想被折行拆开时使用,比如「100 km」)、&copy;(©)、&reg;(®)、&trade;(™)、&times;(×)、&hellip;(……)。如今文件都用 UTF-8 编码,©、× 这些符号可以直接输入,实体不再是刚需;但 <、>、& 这三个涉及解析的字符,在正文里仍建议写成实体,属性值里的引号亦然。

注释的语法是 <!-- 注释内容 -->,不会显示在页面上,用来给维护者留说明、临时屏蔽一段代码。注释不能嵌套(注释里不能再出现 -->),也不要在注释里放敏感信息——任何人「查看源代码」都能看到。上古时代针对 IE 的条件注释(<!--[if IE]>)已随 IE 退场而彻底作废,见到知道是历史遗迹即可。另外提醒:现代构建流程通常会在发布时剥离注释压缩 HTML,但源码阶段的注释依然是团队协作的重要工具。

示例

<!-- 特殊字符必须用实体,否则被当成标签解析 -->
<p>判断条件是 a &lt; b &amp;&amp; b &gt; 0。</p>
<p>段落标签写作 &lt;p&gt;,以 &lt;/p&gt; 结束。</p>

<!-- 版权符号、数学符号等 -->
<p>© 写作 &copy;,× 写作 &times;,省略号写作 &hellip;。</p>

<!-- 不换行空格:数字与单位永不拆行 -->
<p>全程 100&nbsp;km,限时 24&nbsp;小时。</p>

<!-- 注释:给人看的说明,不显示在页面上 -->
<!-- TODO:等设计稿确认后替换下面的占位图 -->
<img src="placeholder.png" alt="占位图" width="300" height="200" />

<!-- 用注释临时屏蔽一段内容
<p>这段暂时不显示。</p>
-->

常见坑

  • 正文直接写 < 和 &a < b 里的 < b 可能被浏览器当成一个未知标签的开头,导致后面内容消失。正文里的 <、>、& 一律写实体。
  • 实体忘记分号&amp 少了结尾分号,虽然浏览器如今大多容错,但紧邻字母时会解析失败(&copycat 不会变成 ©cat)。分号永远写全。
  • 在注释里放密码、内部地址等敏感信息:查看源代码一览无余,注释不是私密空间。
  • 滥用   排版:用一堆不换行空格顶出缩进和对齐是排版灾难,空白与缩进是 CSS 的职责。  只用于「这两个词不该被拆行」。

小结

<、>、&、" 四个字符在正文/属性里要写实体;©、× 等可直接输入也可用实体;  防拆行;注释 <!-- --> 不嵌套、不放秘密。下一章学习在页面里嵌入音频与视频。