获取&符号修饰符以继承父项的所有属性
Get ampersand modifier to inherit all properties from parent
我正在使用 SASS 方便的符号表示法将 BEM 样式的修饰符添加到我的 classes:
.box {
display: inline-block;
width: 100px;
height: 100px;
background: magenta;
&--selected {
background: cyan;
}
}
我正在探索只对我的元素应用单个 class 的可能性(例如:<div class="box--selected">...</div>
而不是 <div class="box box--selected">...</div>
)。我想避免使用 @extend
,它撒得太大了。目前我正在使用 mixins,它很好,但对于每个带有修饰符的 class 使用起来有点冗长。
我真正想做的是让&--selected
继承所有父外壳的属性,仅来自父外壳 - 即忽略粗心的开发人员可能插入的.box
的任何其他class定义。
我知道你已经表达了避免 @extend
的愿望,但这种方法可以让你避免其他开发人员对 .box
的定义,同时仍然实现你的目标。
您可以使用占位符来创建您自己的父外壳并扩展占位符(example of placeholder extension) 仅继承自占位符。作为占位符,不会与其他开发者的 类 发生冲突.box
:
%box{
display: inline-block;
width: 100px;
height: 100px;
background: magenta;
}
.box--selected{
@extend %box;
background: cyan;
}
与 mixins 相比,此方法缺少参数的使用,例如上述文章中的以下示例 [1]:
@mixin padMasterJ ($param: 10px) {
padding: $param;
}
另一件值得注意的事情是,当 @extend
用于父选择时,结果将包括所有嵌套选择器 @extend
不能 直接用于扩展嵌套选择器。
我正在使用 SASS 方便的符号表示法将 BEM 样式的修饰符添加到我的 classes:
.box {
display: inline-block;
width: 100px;
height: 100px;
background: magenta;
&--selected {
background: cyan;
}
}
我正在探索只对我的元素应用单个 class 的可能性(例如:<div class="box--selected">...</div>
而不是 <div class="box box--selected">...</div>
)。我想避免使用 @extend
,它撒得太大了。目前我正在使用 mixins,它很好,但对于每个带有修饰符的 class 使用起来有点冗长。
我真正想做的是让&--selected
继承所有父外壳的属性,仅来自父外壳 - 即忽略粗心的开发人员可能插入的.box
的任何其他class定义。
我知道你已经表达了避免 @extend
的愿望,但这种方法可以让你避免其他开发人员对 .box
的定义,同时仍然实现你的目标。
您可以使用占位符来创建您自己的父外壳并扩展占位符(example of placeholder extension) 仅继承自占位符。作为占位符,不会与其他开发者的 类 发生冲突.box
:
%box{
display: inline-block;
width: 100px;
height: 100px;
background: magenta;
}
.box--selected{
@extend %box;
background: cyan;
}
与 mixins 相比,此方法缺少参数的使用,例如上述文章中的以下示例 [1]:
@mixin padMasterJ ($param: 10px) {
padding: $param;
}
另一件值得注意的事情是,当 @extend
用于父选择时,结果将包括所有嵌套选择器 @extend
不能 直接用于扩展嵌套选择器。