いいえ、エスケープされた文字列内で組み込み関数を呼び出すことはできません。なぜなら、関数は呼び出し/評価されないため、単一の文字列として扱われるからです。
驚いたことに、この特殊なケースでは、一時変数が不要で、以下のようなものがあるようです。コンパイラが少なくても、すべてを連結して単一のパラメータとして扱うようです。
.linear-gradient(@params) {
background-image: linear-gradient(@params);
background-image: -webkit-linear-gradient(@params);
background-image: -moz-linear-gradient(@params);
}
a{
.linear-gradient(~"to left, #83111b 0, #83111b 50%," lighten(#83111b, 5%) ~"50%," lighten(#83111b, 5%) ~"100%");
}
このモデルは、多くの同様のケースでうまく機能していると思われ、無効化されないと思います。実際、スペース区切りで(カンマで区切られていないので)、末尾の余分なセミコロンも必要ありません。 (セミコロンは、コンマ区切りの値が単一のパラメータとみなされる場合にのみ必要です。これは、セミコロンまたはコンマのいずれかをミックスインパラメータセパレータとして使用できるためですが、セミコロンが存在する場合、コンマはもはやセパレータ。)
しかし、私はまだそれがより読みやすく、明確に見えますので、以下のようなものをやってお勧めします。
.linear-gradient(@params) {
background-image: linear-gradient(@params);
background-image: -webkit-linear-gradient(@params);
background-image: -moz-linear-gradient(@params);
}
a{
@color1: lighten(#83111b, 5%);
.linear-gradient(~"to left, #83111b 0, #83111b 50%, @{color1} 50%, @{color1} 100%");
}
Qwertiyによって提案されたオプションも非常に良いものですが、同じミックスインのために他の複数のパラメータがあるとき、それは1つのスペースで区切られた値にすべてを連結してしまうため@arguments
オプションに注意してください。
全体が1つの文字列になるため、あなたはそうすることはできません。関数の値を変数に入れて、mixinのパラメータ内で使用する必要があるかもしれません( '@ color1:lighten(#83111b、5%);のように)。線形勾配(〜 "左に、#83111b 0、#83111b 50%、@ {color1} 50%、@ {color1} 100%"); ') – Harry
うんうん、あなたは何かのようなことをすることはできません@ {lighten(#000、20%)} "'あなたは 'something @ {varName} 'のような変数のみを補間することができます。 – Mike
他の人が同じ質問をした場合に回答を残すことができます – Huangism