我无法在Sass中嵌套。说我有以下HTML:
<p href="#" class="item">Text</p>
<p href="#" class="item">Text</p>
<a href="#" class="item">Link</a>
当我尝试在下面嵌套样式时,出现编译错误:
.item {
color: black;
a& {
color:blue;
}
}
当它是同一元素的一部分时,如何在父选择器之前引用类型选择器?
我无法在Sass中嵌套。说我有以下HTML:
<p href="#" class="item">Text</p>
<p href="#" class="item">Text</p>
<a href="#" class="item">Link</a>
当我尝试在下面嵌套样式时,出现编译错误:
.item {
color: black;
a& {
color:blue;
}
}
当它是同一元素的一部分时,如何在父选择器之前引用类型选择器?
AFAIK如果要同时为类和标记组合“&”号,则需要使用以下语法:
.c1 {
@at-root h1#{&},
h2#{&}
&.c2, {
color: #aaa;
}
}
将编译为
h1.c1,
h2.c1,
.c1.c2 {
color: #aaa;
}
其他用途(例如,使用类之前@at-root
或使用double @at-root
)将导致错误。
希望它会有用
的@at-root
,如果你打算扩大最接近的选择了连锁-only方法不能解决问题。举个例子:
#id > .element {
@at-root div#{&} {
color: blue;
}
}
将编译为:
div#id > .element {
color: blue;
}
如果您需要加入标签.element
而不是标签#id
怎么办?
Sass中有一个名为的函数selector-unify()
可以解决此问题。与之配合使用@at-root
可能成为目标.element
。
#id > .element {
@at-root #{selector-unify(&, div)} {
color: blue;
}
}
将编译为:
#id > div.element {
color: blue;
}
正如库玛(Kumar)指出的,自萨斯(Sass)以来,这就有可能
3.3.0.rc.1 (Maptastic Maple)
。我们可以将
@at-root
指令与插值#{}
结合起来以达到预期的结果。萨斯
输出CSS