4

可変引数は Sass 3.2 で追加されました。

@mixin hello($arguments...) {
    property: $arguments;
}

//Usage:
@include hello(1);
@include hello(1, 2, 3);
@include hello(1, 2);

ただし、この引数はデフォルト値を受け入れません。($args...: default-value)

現在、このコードを使用していますが、より良い方法はありますか?

@mixin transition($values...) {
    $values: null !default;

    @if $values == null {
        $values: all 0.3s ease;
    }

    -webkit-transition: $values;
    -moz-transition: $values;
    -ms-transition: $values;
    -o-transition: $values;
    transition: $values;
}
4

1 に答える 1

7

あなたのソリューションは機能しません。引数なしで使用した場合、たとえば

.foo { @include transition; }

ミックスインはtransitionエラーを返します:

() isn't a valid CSS value.

関数を使用して、可変引数をリストとして扱うことができますlength()。私はこの解決策を提案します:

@mixin transition($values...) {

  // Setting the default value
  @if length($values) == 0 {
    $values: all 0.3s ease;
  }

  -webkit-transition: $values;
  -moz-transition: $values;
  -ms-transition: $values;
  -o-transition: $values;
  transition: $values;
}

デモ: http://sassbin.com/gist/5867258/

PSalleaseデフォルトであるため、デフォルト値は に簡略化できます$values: 0.3s

于 2013-06-26T13:19:36.363 に答える