3

SASSの別の関数またはミックスインを参照して関数またはミックスインを渡し、参照されている関数またはミックスインを呼び出す方法はありますか?

例えば:

@function foo($value) {
    @return $value;
}

@mixin bob($fn: null) {
    a {
        b: $fn(c); // is there a way to call a referenced function here?
    }
}

@include bob(foo); // is there any way I can pass the function "foo" here?
4

1 に答える 1

6

関数とミックスインはSassのファーストクラスではありません。つまり、変数の場合のように引数として渡すことはできません。

Sass3.2以前

あなたが得ることができる最も近いものは、@contentディレクティブ(Sass 3.2+)を使用することです。

@mixin foo {
    a {
        @content;
    }
}

@include bob {
    b: foo(c); // this replaces `@content` in the foo mixin
}

唯一の注意点は@content、ミックスインの内容がわからないことです。言い換えると、ミックスインc内でのみ定義されている場合bob、スコープ内で考慮されていないため、本質的に存在しません。

Sass3.3以降

3.3以降では、関数を使用できますが、call()関数でのみ使用でき、ミックスインでは使用できません。これには、最初の引数として関数の名前を含む文字列を渡す必要があります。

@function foo($value) {
    @return $value;
}

@mixin bob($fn: null) {
    a {
        b: call($fn, c);
    }
}

@include bob('foo');
于 2013-01-12T19:30:07.290 に答える