首页 文章

有没有办法获取传递给Sass mixin的参数数组?

提问于
浏览
3

各种新的CSS3属性接受无限的值集,即 box-shadow 和背景渐变 .

box-shadow 为例,理想情况下应该能够做到:

@include box-shadow(10px 15px 10px #FF0000, 15px 10px 10px #0000FF);

尽可能多的参数 . 问题是Sass需要一个确定数量的参数,即使它没有,我知道没有办法循环它们 .

到目前为止,我能想到的最好的混合方式是这样的:

@mixin box-shadow($v1: 0 0 10px #CCC, $v2: "", $v3: "", $v4: "", $v5: "") {
  @if $v5 != "" {
    -webkit-box-shadow: $v1, $v2, $v3, $v4, $v5;
    -moz-box-shadow: $v1, $v2, $v3, $v4, $v5;
    -o-box-shadow: $v1, $v2, $v3, $v4, $v5;
    box-shadow: $v1, $v2, $v3, $v4, $v5;
  } @else if $v4 != "" {
    ...
  } @else {
    -webkit-box-shadow: $v1;
    -moz-box-shadow: $v1;
    -o-box-shadow: $v1;
    box-shadow: $v1;
  }
}

我正在尝试编写一套Sass供应商的CSS3 mixins . (见:https://github.com/stevelacey/sass-css3-mixins) .

显然,这是垃圾,冗长,限于5种风格,有没有更好的方法?


Edit:

@Riklomas向我指出:https://gist.github.com/601806至少比我的代码重复性更少,仍在寻找合适的解决方案 .

3 回答

  • -3

    嗨,我是Sass Core团队的成员 . 我希望将来能够为sass添加一个var-args功能,但目前还不可能 .

  • 7

    使用SASS 3.2,您现在可以使用如下工作的mixin:

    @mixin box-shadow($values...){
        -webkit-box-shadow: $values;
        -moz-box-shadow: $values;
        box-shadow: $values;
    }
    

    source

  • 3

    简而言之,没有 .

    但我不必再关心这个了,Compass包装了类似于上面的东西 .

相关问题