问题描述
我想重用父级的类名,并在子元素上使用它,但是当嵌套多个级别时,它不能按预期工作。 我只想将子类名称与直接父字符串连接起来,而不是整个串联的父类。 我开始相信这是不可能的。
SCSS:
.block {
margin: 2px;
& &__element {
margin: 3px;
&-nested {
margin: 4px;
}
}
}
输出:
.block {
margin: 2px;
}
.block .block__element {
margin: 3px;
}
.block .block__element-nested {
margin: 4px;
}
所需的输出:
.block {
margin: 2px;
}
.block .block__element {
margin: 3px;
}
.block .block__element .block__element-nested {
margin: 4px;
}
解决方法
Bro, Sass 目前不支持nested-&
。希望这是唯一的解决方案:
.block {
margin: 2px;
& &__element {
margin: 3px;
}
& &__element &-nested {
margin: 4px;
}
}
,
编辑
要获得所需的输出,您可以这样做。
.block {
margin: 2px;
& &__element {
margin: 3px;
& .block__element-nested {
margin: 4px;
}
}
}
编辑2
.block {
margin: 2px;
}
.block .block__element {
margin: 3px;
}
.block .block__element .block__element-nested {
margin: 4px;
}
输出:
python-xml-2.7.17-28.51.1.x86_64
rpm-4.11.2-16.21.1.x86_64
zypper 1.13.51
,
在我看来,您想要的输出没有意义,因为它在更大范围内非常令人困惑。最下面的示例来自docs。重点不是要深入到我认为的第三级...
.block {
background: red;
&__element {
background: red;
&--nested {
background: red;
}
}
}
.block {
background: red;
}
.block__element {
background: red;
}
.block__element--nested {
background: red;
}
,
这里有2个解决方案,可以使用selector-nest
正常工作。
您将找到更多信息:https://sass-lang.com/documentation/modules/selector#nest
您可以在这里测试解决方案:https://www.sassmeister.com
方法1:
.block {
margin: 2px;
& &__element {
margin: 3px;
#{selector-nest('.block__element','&-nested')} {
margin: 4px;
}
}
}
方法2:
.block {
margin: 2px;
#{selector-nest('.block','&__element')}{
margin: 3px;
#{selector-nest('.block__element','&-nested')} {
margin: 4px;
}
}
}
,
显然这无法完成。如此处所述: https://css-tricks.com/the-sass-ampersand/#what-the-isnt
我的意图是仅将&替换为.parent,以期对此进行编译: .parent .child {} 但这行不通。 &始终是完全编译的父选择器。