CSS 注释的写法
CSS 注释以 /* 开头,以 */ 结尾。两者之间的所有内容都会被浏览器忽略,无论它只有一行还是有二十行。
只有这一种语法。CSS 没有单独的单行注释。
注释可以写在哪里
注释可以放在任何允许空白的地方:规则之间、声明之间、值的后面、选择器列表中间。在 .css 文件、<style> 元素和 style 属性中,它的用法都一样。
/* Buttons */
.btn, /* default */
.btn-primary { /* variant */
padding: 8px 14px; /* 8px top and bottom, 14px sides */
}
<p style="color: #16a34a; /* inline comments work too */">Hello</p>
HTML 注释 <!-- ... --> 用于标记,而不是用于 CSS。HTML 注释页面把这两种语法放在一起做了对比。
注释掉代码
注释最常见的日常用途,是在不删除代码的前提下关掉某条声明,看看它起了什么作用。用 /* */ 把它包起来:
删掉 border 那一行两边的 /* 和 */,琥珀色的边框就会出现。注释掉整条规则也是同样的方法:在选择器前面加 /*,在右花括号后面加 */。
大多数编辑器都能帮你切换注释:选中几行,按 Ctrl + /(macOS 上是 Cmd + /)。
为什么 // 会破坏你的 CSS
// 看起来像注释,因为在 JavaScript、Sass 和 Less 中它确实是注释。但在 CSS 中,它只是两个字符,会变成后面内容的一部分。于是浏览器看到一个无效的选择器,把紧接着的整条规则都丢掉,而且没有任何错误提示。
浏览器把 // this is NOT a comment .one 当成了一个选择器,而它是无效的,所以整条 .one 规则都被丢弃了。把这一行改成 /* this is a comment */,绿色背景就回来了。
注释不能嵌套
注释在遇到第一个 */ 时结束。如果用注释包住一段本身已经含有注释的代码,外层注释会提前结束:
要注释掉一段含有注释的代码,先删掉或缩短里面的注释。
用注释组织样式表
很长的样式表加上分节标题会更易读。一种常见的写法:
/* ==========================================
Layout
========================================== */
.page { max-width: 960px; margin: 0 auto; }
/* ------------------------------------------
Header
------------------------------------------ */
.header { padding: 16px; }
/*! License: MIT (many minifiers keep comments that start with "!") */
注释会作为文件的一部分发送给每一位访问者,在查看网页源代码时也能看到,所以千万不要在注释里写密码、内部 URL 或任何你不愿公开的备注。
常见错误
- 使用
//。 它会悄悄删掉下一条规则。请用/* */。 - 嵌套注释。 第一个
*/就会结束注释,剩下的部分会破坏下一条规则。 - 忘记写结尾的
*/。/*之后直到样式表末尾的所有内容都会变成注释。 - 在 CSS 中使用
<!-- -->。 这是 HTML 的注释语法,不能注释掉 CSS。 - 把机密信息留在注释里。 它们会随样式表一起发送到浏览器。
常见问题
CSS 中怎么写注释?
用 /* 和 */ 把文字包起来:/* This is a comment */。无论是一行还是多行,都用同样的语法,而且样式表中任何允许空白的地方都可以写。
CSS 中可以用 // 写注释吗?
不可以。CSS 没有单行注释。// 会被当作下一个选择器或声明的一部分,让它变得无效,于是浏览器会丢弃整条规则或声明。Sass、Less 等预处理器接受 //,但纯 CSS 不接受。
CSS 注释可以嵌套吗?
不可以。注释在遇到第一个 */ 时结束,所以 /* a /* b */ c */ 在 b 之后就结束了,剩下的 c */ 会变成无效内容,破坏后面的规则。
CSS 注释的快捷键是什么?
在大多数代码编辑器中,包括 VS Code,在 Windows 和 Linux 上按 Ctrl + /,在 macOS 上按 Cmd + /,就能用 /* */ 包住选中的行,再按一次则取消注释。
CSS 注释会影响性能吗?
只会增加文件的字节数。浏览器在解析时会丢弃注释。构建工具压缩样式表时会删除注释;很多工具会保留以 /*! 开头的注释,这是许可证声明的惯例写法。