Sass SCSS中的安培数和混合数

Sass SCSS中的安培数和混合数,sass,mixins,Sass,Mixins,已搜索但找不到答案 我有一个元素,它由以下类生成(由外部平台生成):p-button和button 现在,SCS是这样的: .p-button { &.button { margin: 10px; } } 但是我想使用mixin-includes进行重构(这是一个大项目,所以除了使用mixin之外,没有其他方法可以使代码变得更好)。mixin接受给定的选择器并应用一个。去吧。我不能更改mixin,因为它被许多其他团队使用,所以我不能将符号和选择器一起传

已搜索但找不到答案

我有一个元素,它由以下类生成(由外部平台生成):p-button和button

现在,SCS是这样的:

.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搞混了,你应该在这个问题上发表评论。:)