true値を返す関数はありません。また、mixinは、セレクタブロック内でのみコンテンツを出力することができます(それ自体のセレクタまたは親セレクタのいずれか)。あなたの場合、文字列の印刷だけがありますが、セレクタブロック内に存在するプロパティ(または)には割り当てられません。
あなたのケースのために、あなたは以下のような非常に単純なミックスインを書いて、それを使用することができます。
.nth-child-mixin(@offset, @props){
&:nth-child(n + @{offset}){
@props();
}
}
td{
.nth-child-mixin(3, {
color: red;
});
}
td{
.nth-child-mixin(5, {
color: blue;
});
}
上記nth-child-mixin
がoffset
を取り、入力として割り当てる必要がありますプロパティ。プロパティはdetached rulesetで、これは次にn番目の子セレクタブロック内から呼び出されます。次のようにコンパイルされたCSSの出力はなります:あなたはそれをもn
の乗数を渡すことができるよう
td:nth-child(n + 3) {
color: red;
}
td:nth-child(n + 5) {
color: blue;
}
をより包括的なミックスインは以下になります。
.nth-child-mixin(@multiplier, @offset, @props){
&:nth-child(@{multiplier}n + @{offset}){
@props();
}
}
td{
.nth-child-mixin(2, 5, {
color: blue;
});
}
この場合、コンパイル済みのCSSは次のようになります。
td:nth-child(2n + 5) {
color: blue;
}
私は切り離さルールセットを使用して感じるあなただけの出力にセレクタをミックスインをしたい場合は、それをより明確にするが、 mixinの定義を次のようにすることができます。唯一の欠点は、同じネスト内に複数のそのようなブロックが必要な場合に、スコープの問題が発生することがあることです。
例えば
.nth-child-mixin(@multiplier, @offset){
@sel: ~":nth-child(@{multiplier}n + @{offset})";
}
td{
.nth-child-mixin(1, 3);
&@{sel}{
color: red;
}
}
td{
.nth-child-mixin(2, 5);
&@{sel}{
color: blue;
}
}
あなたはそれが原因スコープに期待される出力を生成しないネスト同じtd
以内に以下のような2番目の子のセレクタを書きたい場合は、遅延ロードなど
td{
.nth-child-mixin(1, 3);
&@{sel}{
color: red;
}
.nth-child-mixin(3, 5);
&@{sel}{
color: red;
}
}
スコープの問題を解決するために、以下のサンプルのような無名のセレクタボックスを使用することになります(これらのハックはひどいです)。
td{
& {
.nth-child-mixin(1, 3);
&@{sel}{
color: red;
}
}
&{
.nth-child-mixin(3, 5);
&@{sel}{
color: red;
}
}
}
ダムハリー私はドキュメントを見ていましたが、遅く書き込みます! – Persijn
ハハハ@Persijnはかなり長い間離れていましたが、少なくとも今いくつか書いてみましょう:D – Harry
それはそこにある方法のいくつかですが、私はそういうスタイルを渡さなければならないと本当に厄介な構文を課すでしょう。しかし、私は少しそれを周り遊ぶことができます..ありがとう! –