【发布时间】:2019-07-29 13:19:42
【问题描述】:
搜索但找不到答案..
我有一个由以下类生成的元素(由外部平台生成):p-button 和 button。
现在 SCSS 是这样的:
.p-button {
&.button {
margin: 10px;
}
}
但我想使用 mixin 包含进行重构(这是一个大项目,所以除了使用 mixin 之外,没有其他方法可以使代码变得更好)。 mixin 采用给定的选择器并应用 .给它。我无法更改 mixin,因为许多其他团队都在使用它,所以我不能将 & 符号与选择器一起传递。我试过这个:
.p-button {
& {
@include button-appearance("button") {
margin: 10px;
}
}
}
但这不起作用(在它之间放置一个空格)。你不能这样做:
.p-button {
&@include button-appearance("button") {
margin: 10px;
}
}
有人知道吗?
编辑:这是 mixin
@mixin button-appearance(
$appearance-class,
$show,
$background-color,
$background-image,
$background-position) {
$sel: $button-selector;
@if $appearance-class {
$sel: $sel + '.' + $appearance-class;
}
#{$sel} {
@include normalized-background-image($background-image);
@include show($show);
background-color: $background-color;
background-position: $background-position;
}
@content;
}
编辑 2:这是 $button-selector(我无法在平台中编辑它,但可能会在我自己的项目中覆盖它?)
$button-class: 'p-button';
$button-selector: '.#{$button-class}';
【问题讨论】:
-
您是否只是想为
.button选择器继承.button类的样式? -
@R-b-n 你能在你的问题中添加
$button-selector的值吗? -
感谢收看,刚刚完成!
-
@R-b-n 似乎您永远无法使用 mixin 将内容插入到选择器中。 “@content”关键字在生成的选择器之外。所以你应该使用一个简单的选择器来做到这一点。
-
@R-b-n 检查我编辑的答案。希望对您有所帮助。