如您所见,.mainContainer
的一种变体形式为&--alt
。但是,我需要在.mainContainer__content
类内重复&--alt
来说,如果父容器中有一个.mainContainer--alt
,那么.mainContainer__content
的样式将有所不同。
是否有更好的方法编写此代码,因为如果要在此特定示例中写出完整的类名,这似乎会违反使用速记版本的目的。
CSS:
.mainContainer {
// SOME CSS properties
&--alt {
.mainContainer__content {
// SOME CSS properties
}
}
&__content {
// SOME CSS properties
}
}
HTML:
<div class="mainContainer">
<div class="mainContainer__content">
// some style
</div>
</div>
HTML(带有alt):
<div class="mainContainer mainContainer--alt">
<div class="mainContainer__content">
// some other style
</div>
</div>
答案 0 :(得分:1)
您可以将主类保存在这样的变量中
.mainContainer {
$self: &;
// SOME CSS properties
&--alt {
#{$self}__content {
// SOME CSS properties
}
}
&__content {
// SOME CSS properties
}
}
另一个选择是将修饰符放在
.mainContainer__content
,例如.mainContainer__content--alt
答案 1 :(得分:0)
检查此链接:https://www.w3schools.com/Css/css_attribute_selectors.asp
我使用了属性选择器,其中类以[class$="value"]
.mainContainer {
// SOME CSS properties
&[class$="--alt"] {
.mainContainer__content {
// SOME CSS properties
}
}
&[class$="__content"] {
// SOME CSS properties
}
}
但是我不建议再次用这种方式编写它。
答案 2 :(得分:0)
you can try this.
@mixin generate-sizes($class) {
.#{$class}__content {
font-size: 12px;
}
.#{$class}--alt {
font-size: 14px;
}
}
@include generate-sizes("mainContainer");