以下是输出需要的内容:
.root {...}
.node {...}
.root .red .node {border-color: red;}
.root .green .node {border-color: green;}
.root .blue .node {border-color: blue;}
我预计可以这样做:
.root {
// styles for .root
...
.node {
// styles for .node
...
.red & {border-color: red;}
.green & {border-color: green;}
.blue & {border-color: blue;}
}
}
但&匹配'.root .node'选择器。
在一个代码块中为.node编写样式会很棒。 有什么类似的&但对于本地选择者? 可能有一些“开关”允许根据父类生成样式。
答案 0 :(得分:2)
假设&在SASS中工作,它将整个选择器链插入到该点,因此它的行为符合预期。您需要以下内容:
.node {
// styles for .node
...
}
.root {
// styles for .root
...
.red .node {border-color: red;}
.green .node {border-color: green;}
.blue .node {border-color: blue;}
}
答案 1 :(得分:1)
如果您想将.node
代码放在一起,那么您需要重复.root
,如下所示:
.root {/*root only*/}
.node {
/*node only*/
.root .red & {border-color: red;}
.root .green & {border-color: green;}
.root .blue & {border-color: blue;}
}
但问题是,你真的需要那种特异性吗?换句话说,如果html中的.root
内始终存在.node
,或者至少如果.root
重复.root
,则以下内容也可以正常运行 .node
不会影响.node
的着色,.root
内是否存在.root {/*root only*/}
.node {
/*node only*/
.red & {border-color: red;}
.green & {border-color: green;}
.blue & {border-color: blue;}
}
。有时在开发人员希望与LESS“嵌套”时,可能会忘记嵌套获得的选择器的额外特性可能是多余的。
{{1}}