<p>HTML注释只有一种语法,即<!-- -->,天然支持跨行,不存在单行或多行之分;浏览器仅识别首尾标记,中间换行缩进均被忽略,但禁止出现--或-->等触发提前终止的字符。</p>
HTML 标准里根本不存在“单行注释”或“多行注释”的语法区分——<!-- --> 就是唯一合法形式,它天然支持跨行。所谓“单行”,只是你写在一行里;所谓“多行”,只是你在 <!-- 和 --> 之间手动换了几行。浏览器只认头尾标记,中间换多少次行、缩进几格,全被忽略。
常见错误现象:
// 或 /* */ 能在 HTML 里用 → 实际会原样输出到页面,甚至破坏结构Ctrl+/)对选中多行只包首尾 → 容易漏掉某行,导致部分代码裸露--> → 后续所有 HTML 都不渲染-- 或 --> 这类组合HTML 解析器遇到第一个 -- 就会提前结束注释,哪怕后面还有内容。比如 <!-- 这里--不能这样写 -->,实际只注释了 这里,后面的 不能这样写 --> 会作为普通文本显示,还可能触发解析错误。
使用场景限制:
立即学习“前端免费学习笔记(深入)”;
- - 或 —(em dash)更安全>,避免紧贴 -- 出现,例如不要写 -->,可拆成 -- >
> 和 - 连续出现的情况注释不是万能胶,插错地方等于删代码。最常踩坑的是这几种:
DOCTYPE 前面放注释 → 某些旧版 IE 直接触发怪异模式<div class="x">> → 语法错误,标签直接失效<li><code><script></script> 或 <style></style> 标签内部用 <!-- 开头 → 老式写法,现在完全没必要,反而可能被当 HTML 注释起点,导致 JS/CSS 不执行<![CDATA[...]]>)里混注释 → 解析混乱,优先用 JS/CSS 层级控制显隐想屏蔽一个 <section> 及其全部子元素?别用多个 <!-- --> 包每行,直接把整个结构塞进一对 <!-- 和 --> 里。VS Code 等编辑器的“多行注释”快捷键(Shift+Alt+A)就是干这个的。
但要注意:
<!-- 前后有空格,结尾 --> 前也留空格,提升可读性:<!-- <header>...</header> -->
-- 或 >,先人工检查或改用 JS 控制 display: none 更稳妥<!-- [user-profile]: 旧版卡片组件 | 2026-04-10 -->
真正容易被忽略的是:注释内容本身会被所有人看到,包括生产环境的源码查看者。所以别在注释里留测试账号、内部路径或“这里有问题但懒得修”这类话。