0

私はSassにかなり慣れていません。これは私のミックスインです:

= foo($param1, $param2: 0, $param3: 123)
  something: $param1
  otherthing: $param2
  yetanotherthing: $param3

このように呼び出すと:

div.foo
  +foo(99, $param3: 444)

...それは生成します:

div.foo {
  something: 99;
  otherthing: 0;
  yetanotherthing: 444;
}

このように呼び出すと:

div.foo
  +background(+foo(99, $param3: 444))

...「関数 foo はキーワード引数をサポートしていません」というエラーが発生します。

このように呼び出すと:

div.foo
  +background(foo(99))

...それは生成します:

div.foo {
  background: foo(99);
}

これは私には奇妙に思えます。自分の mixin の結果を別の mixin に渡すことはできませんか? そして、なぜそのようなものが+background-image(linear-gradient(bottom, #ababab, #dadada))機能するのですか?

助けてくれてどうもありがとう。

4

1 に答える 1

2

あまり役に立たないエラー メッセージが表示されているようです。関数キーワード引数をサポートしています。問題は、機能がないことです。ミックスインがあります。両者には大きな違いがあります。

@function foo($a: true, $b: true) {
    @return $b;
}

@debug foo($b: false);

.foo {
    @if foo {
        color: red;
    } @else {
        color: green;
    }
}

Linear-gradient()関数です。@debugこれを呼び出すと、 を介して出力、エコー、または他の関数や mixin に渡すことができる値が返されます。Compass background* ミックスインには他にも魔法が使われていますが、自分でソースを掘り下げる必要があります。

Mixin には戻り値がなく、どのような方法でも渡すことができません。コードを発行するためにのみ使用できます。

于 2013-06-04T14:09:54.690 に答える