css - SCSS : Pass multiple classes to a mixin

标签 css sass

我经常使用 mixins 来存储代码块。例如:

   @mixin ui-spot-badges($ui-spot-badges: ui-spot-badges) {

    .#{$ui-spot-badges} {   
  position:relative; 
    @content;

    &:after {
    content:""; 
position:absolute;
background:red;
    }
    }

    }

    @include ui-spot-badges(myclass); 

我如何将多个类传递到 mixin 中。例如。

  @include ui-spot-badges(myclass, myclass2); 

得到

.myclass, myclass2 {
  position:relative; 
}

.myclass:after, .myclass2:after {
    content:""; 
position:absolute;
background:red;
}

最佳答案

最有效的方法是将选择器列表作为字符串传递:

@include ui-spot-badges('.myclass, .myclass2');

否则,您必须进行一些循环才能正确生成选择器。

@mixin ui-spot-badges($badges...) {
    $selectors: ();
    @each $b in $badges {
        $selectors: append($selectors, unquote('.#{$b}'), comma);
    }

    #{$selectors} {
        position:relative; 
        @content;

        &:after {
            content:""; 
            position:absolute;
            background:red;
        }
    }
}

@include ui-spot-badges(a, b);

输出:

.a, .b {
  position: relative;
}
.a:after, .b:after {
  content: "";
  position: absolute;
  background: red;
}

关于css - SCSS : Pass multiple classes to a mixin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16470831/

相关文章:

CSS布局在div上没有边框

css - 列表项之间的间距不规则

javascript - 使用 typeform 禁用 iframe 中的滚动

javascript - Jquery,恢复时的事件?

css - 面临的问题 - 在 Nebular 中安装 auth 模块期间,无法继续?

sass - SASS 的新功能,带有 --webkit-scrollbar 的 SCSS 会抛出语法错误。转义序列?

css - 在不假设用户默认字体大小的情况下计算 CSS/SASS 中的 em 值 -1px

html - 将 :visited with a:after, 或链接伪类与伪元素组合

ruby-on-rails-4 - Bootstrap Rails 4 sass 布局不工作

css - 有没有办法用SASS优化处理后的CSS