我有以下sass:
%slider {
.c-slider {
$parent: &;
&--thumb {
#{$parent}__item{
margin:0;
}
}
}
}
.l-cap {
@extend %slider;
}
我得到了:
.l-cap .c-slider--thumb .l-cap .c-slider__item {margin: 0; }
但我想获得:
.l-cap .c-slider--thumb .c-slider__item {margin: 0; }
我需要第二个才能获得直接的父母。我尝试@ at-root但没有运气。
答案 0 :(得分:2)
您也可以使用此方法。 &
是引用当前选择器的所有父元素的列表的sass列表,因此您可以使用&
上的所有列表函数轻松获取您的&
的第n个子元素选择(在这种情况下是第二个):
%slider {
.c-slider {
// Get just the second selector
$parent : nth(nth(&, 1), 2);
// Output
&--thumb #{$parent}__item{
margin:0;
}
}
}
.l-cap {
@extend %slider;
}
将输出:
.l-cap .c-slider--thumb .c-slider__item {
margin: 0;
}
答案 1 :(得分:1)
这是如何实现它的唯一方法
%slider {
.c-slider {
&--thumb {
.c-slider__item{
margin:0;
}
}
}
}
.l-cap {
@extend %slider;
}
结果将是
.l-cap .c-slider--thumb .c-slider__item {
margin: 0;
}
对于更复杂的嵌套,您可以使用@ at-root
.grand-parent {
.parent {
@at-root .myDiv {
color: blue;
}
}
}
结果将是
.myDiv {
color: blue;
}