我正在为我当前的项目使用Sass (.scss)。
下面的例子:
HTML
<div class="container desc">
<div class="hello">
Hello World
</div>
</div>
SCSS
.container {
background:red;
color:white;
.hello {
padding-left:50px;
}
}
这很有效。
我可以处理多个类同时使用嵌套样式。
在上面的例子中,我说的是:
CSS
.container.desc {
background:blue;
}
在这种情况下,所有div.container通常是红色的,但div.container.desc将是蓝色的。
我如何能巢这个内部容器与Sass?
你可以使用父选择器引用&,它将在编译后被父选择器替换:
举个例子:
.container {
background:red;
&.desc{
background:blue;
}
}
/* compiles to: */
.container {
background: red;
}
.container.desc {
background: blue;
}
&将被完全解析,所以如果你的父选择器本身嵌套,嵌套将在替换&之前被解析。
这种表示法最常用于编写伪元素和-类:
.element{
&:hover{ ... }
&:nth-child(1){ ... }
}
然而,你可以把&放在任何你喜欢的位置*,所以也可以这样做:
.container {
background:red;
#id &{
background:blue;
}
}
/* compiles to: */
.container {
background: red;
}
#id .container {
background: blue;
}
但是请注意,这在某种程度上破坏了嵌套结构,因此可能会增加在样式表中查找特定规则的工作量。
*:在&前面不允许有空格以外的字符。所以你不能直接连接selector+& - #id&会抛出一个错误。
你可以使用父选择器引用&,它将在编译后被父选择器替换:
举个例子:
.container {
background:red;
&.desc{
background:blue;
}
}
/* compiles to: */
.container {
background: red;
}
.container.desc {
background: blue;
}
&将被完全解析,所以如果你的父选择器本身嵌套,嵌套将在替换&之前被解析。
这种表示法最常用于编写伪元素和-类:
.element{
&:hover{ ... }
&:nth-child(1){ ... }
}
然而,你可以把&放在任何你喜欢的位置*,所以也可以这样做:
.container {
background:red;
#id &{
background:blue;
}
}
/* compiles to: */
.container {
background: red;
}
#id .container {
background: blue;
}
但是请注意,这在某种程度上破坏了嵌套结构,因此可能会增加在样式表中查找特定规则的工作量。
*:在&前面不允许有空格以外的字符。所以你不能直接连接selector+& - #id&会抛出一个错误。