Firefox 117 版本的发布,标志着原生 CSS 嵌套(Native CSS nesting)已经被所有现代桌面浏览器所支持。
1. 原生 CSS 嵌套介绍
原生 CSS 嵌套可以像 SASS、LESS 预处理器一样,将相关的选择器组合在一起,从而减少需要编写的规则数量,它可以节省打字时间,并使语法更易于阅读和维护。您可以将选择器嵌套到任意深度,但要小心不要超过两层或三层。嵌套深度没有技术限制,但它会使代码更难以阅读,并且生成的 CSS 可能会变得不必要的冗长。
/* <div class="button warning"><span class="icon"></span></div> */
.button {
background-color: red;
&.warning {
background-color: blue;
}
& .icon {
width: 1rem;
height: 1rem;
}
}
需要注意的是:虽然原生 CSS 嵌套语法在过去几年中不断发展,使大多数 Web 开发人员感到满意,但不要指望所有 SCSS 代码都能像您期望的那样直接工作。
2. 原生 CSS 嵌套规则
您可以将任何选择器嵌套在另一个选择器中,但它必须以符号开头,例如 &
, .
(类选择器)、#
(ID 选择器)、@
(对于媒体查询)、:
、::
、+
、 ~
、 >
或 [
。换句话说,它不能是对 HTML 元素的直接引用。下面的代码是无效的,不会对 input
元素选择器进行解析: