【问题标题】:Pass argument to Sass BEM mixin to @extend parent将参数传递给 Sass BEM mixin 到 @extend parent
【发布时间】:2016-12-15 14:13:45
【问题描述】:

我正在创建一个应用程序,该应用程序将根据内容或用户在应用程序中的位置具有不同的 CSS 背景。我需要将以下修饰符应用于我的应用程序中的各种类。我为此编写了一个 mixin,如下所示:

@mixin animalBackground($arg:null) {

    @if ($arg) {
        @extend $arg;
    }

    &--cat {
        background: $grey url('/img/cat.png');
    }

    &--dog {
        background: $blue url('/img/dog.png');
    }

    &--mouse {
        background: $light-green url('/img/mouse.png');
    }
}

现在我想在不同的地方添加这个 mixin,这样我就可以拥有 3 个不同的修饰符类,这就是我将它添加到我现有的 sass 代码中的方式:

.animal-section {

     &__target1 {
        overflow-y: scroll;
        height: 100%;
        @include animalBackground();
    }

    &__target2 {
            padding-top: $full-header-size;
            height: 100vh;
            @include animalBackground('.animal-section__target2');
    }
}

现在我遇到的问题是,在我生成的代码中出现failed to @extend "$arg". The selector "$arg" was not found. 错误,当我删除if 条件时,父类没有扩展/继承。我如何完成我需要完成的事情?

提前致谢。

【问题讨论】:

    标签: css sass mixins bem


    【解决方案1】:

    我认为你必须使用变量的值。所以你应该试试这个:

    @if ($arg) {
        @extend #{$arg};
    }
    

    【讨论】:

    • 解决了错误,但是修饰符类没有导入它们的父 css 属性...
    • 如果我理解正确,那么您必须在修饰符中使用@extend
    猜你喜欢
    • 2023-03-20
    • 2014-03-30
    • 2014-02-08
    • 2014-02-20
    • 2013-01-05
    • 2018-12-30
    • 2021-06-11
    • 2011-11-22
    • 2014-02-24
    相关资源
    最近更新 更多