SCSS调用Mixin而不重复

时间:2014-03-25 11:19:25

标签: css foreach sass mixins

我希望进一步开发这个mixin,所以我可以通过mixin传递多个争论,而不必每次都重新创建包含:

不是这样:

@include main-container(red);
@include main-container(blue);

但是:

@include main-container(red, blue);

当前代码

@mixin main-container-bg($name){
    &.#{$name}-bg{
        background:url("/images/"#{$name}"-angle-bg.png") center 78px no-repeat;
    }
}

我相信我需要在每个语句旁边使用for语句循环我的mixin,尽管后面的@sslude中的所有参数都在scss中。

任何想法?

欢迎任何帮助。

-Neil

1 个答案:

答案 0 :(得分:1)

您可以使用@each指令并以这种方式将列表传递给mixin

@mixin main-container-bg($listcolours) {

  @each $colour in $listcolours {
    &.#{$colour}-bg{
      background:url(/images/#{$colour}-angle-bg.png) center 78px no-repeat;
    }  
  }

}


div {
  @include main-container-bg((red, blue));
}

生成的CSS是

div.red-bg {
  background: url(/images/red-angle-bg.png) center 78px no-repeat;
}
div.blue-bg {
  background: url(/images/blue-angle-bg.png) center 78px no-repeat;
}