使用占位符仅获取直接父级,而不是所有路径
Get only the imediate parent, not all path, using placeholders
我有以下 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 但没有成功。
这是实现它的唯一方法
%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;
}
您也可以使用这种方法。 &
是一个 sass list of lists referenced to all parent elements for current selector, 所以你可以在 &
上使用所有的列表函数并且很容易得到 [=12 的第 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;
}
我有以下 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 但没有成功。
这是实现它的唯一方法
%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;
}
您也可以使用这种方法。 &
是一个 sass list of lists referenced to all parent elements for current selector, 所以你可以在 &
上使用所有的列表函数并且很容易得到 [=12 的第 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;
}