Sass SCSS中的安培数和混合数
已搜索但找不到答案 我有一个元素,它由以下类生成(由外部平台生成):p-button和button 现在,SCS是这样的:Sass SCSS中的安培数和混合数,sass,mixins,Sass,Mixins,已搜索但找不到答案 我有一个元素,它由以下类生成(由外部平台生成):p-button和button 现在,SCS是这样的: .p-button { &.button { margin: 10px; } } 但是我想使用mixin-includes进行重构(这是一个大项目,所以除了使用mixin之外,没有其他方法可以使代码变得更好)。mixin接受给定的选择器并应用一个。去吧。我不能更改mixin,因为它被许多其他团队使用,所以我不能将符号和选择器一起传
.p-button {
&.button {
margin: 10px;
}
}
但是我想使用mixin-includes进行重构(这是一个大项目,所以除了使用mixin之外,没有其他方法可以使代码变得更好)。mixin接受给定的选择器并应用一个。去吧。我不能更改mixin,因为它被许多其他团队使用,所以我不能将符号和选择器一起传递。我试过这个:
.p-button {
& {
@include button-appearance("button") {
margin: 10px;
}
}
}
但这不起作用(在两者之间留出一个空间)。你不能这样做:
.p-button {
&@include button-appearance("button") {
margin: 10px;
}
}
有人有线索吗
编辑:这里是混音
@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选择器(我无法在平台中编辑它,但可能会在我自己的项目中覆盖它?
在编辑原始问题后编辑答案,添加已使用且不可修改的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;
}
原始mixin不会将传递给mixin的“@content”附加到生成的选择器。因此,如果无法修改原始mixin,唯一的方法是在mixin之外添加属性。根据mixin,选择器将匹配预定义的“$button selector”变量,因此它不会使用您的类
因此,如果要使用在“$button类”中定义的相同类,请尝试以下操作:
#{$button-selector}.button {
margin: 10px;
}
将输出:
.p-button.button {
margin: 10px;
}
大家终于找到了解决办法。我刚刚从.p-button mixin include中删除了&.按钮,现在它可以工作了:
@include button-appearance ("button") { *styles* }
@include button-appearance () { *styles* }
你只是想继承
.p-button
选择器的.button
类的样式吗?@R-b-n你能给你的问题添加$button选择器的值吗?
?谢谢你的关注,我做了@R-b-n似乎永远无法使用mixin将内容插入选择器。“@content”关键字在生成的选择器之外。所以,您应该使用一个简单的选择器来执行此操作。@R-b-n检查我编辑的答案。希望有帮助。OP说他们不能更改mixin。@Arkellys您能在您的问题中添加“$button selector”的值吗?我不确定是否理解?@Arkellys您正在使用的mixin使用一个变量定义基本选择器名称$sel:$button selector代码>$button选择器
是一个变量,未在mixin范围内定义,也未定义为mixin参数。所以这个变量是在mixin之外定义的。哦,我想你把我和OP搞混了,你应该在这个问题上发表评论。:)