【问题标题】:SCSS: Pass multiple classes to a mixinSCSS:将多个类传递给一个mixin
【发布时间】:2013-05-09 20:47:28
【问题描述】:

我经常使用 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;
}

【问题讨论】:

    标签: css sass


    【解决方案1】:

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

    @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;
    }
    

    【讨论】:

    • 你能解释一下@mixin ui-spot-badges($badges...)中的...吗?有必要吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-18
    • 2018-10-04
    • 2018-10-06
    • 2022-07-26
    • 2013-06-03
    • 1970-01-01
    相关资源
    最近更新 更多