これを試して:
@iterations: 5;
.span-loop (@i) when (@i > 0) {
.span-@{i} {
width: ~"@{i}%";
}
.span-loop(@i - 1);
}
.span-loop (@iterations);
出力:
.span-5 {
width: 5%;
}
.span-4 {
width: 4%;
}
.span-3 {
width: 3%;
}
.span-2 {
width: 2%;
}
.span-1 {
width: 1%;
}
less2cssで試すことができます。
2014 年 4 月 3 日編集
より多くのオプションを備えたより柔軟なバージョンを次に示します。
.custom-loop( @base-value:@n ; @n ; @unit : px; @j : 1 ;@_s:0 ; @step-size:1 ; @selector:~".span-"; @property : width)
when not(@n=0) {
@size : @base-value+@_s;
@{selector}@{j}{
@{property} : ~"@{size}@{unit}";
}
.custom-loop(@base-value , (@n - 1), @unit , (@j + 1) , (@_s+@step-size) , @step-size, @selector, @property);
}
@n
これは、必要な引数のみで呼び出すことができます。
.custom-loop(@n:3);
どちらが出力されますか:
.span-1 {
width: 3px;
}
.span-2 {
width: 4px;
}
.span-3 {
width: 5px;
}
ただし、各パラメータを制御したい場合は、すべてのカスタム パラメータを使用した例を次に示します。
.custom-loop( @n: 3 , @base-value:1, @unit: '%', @property:font-size, @selector: ~".fs-", @step-size: 2);
これは出力されます:
.fs-1 {
font-size: 1%;
}
.fs-2 {
font-size: 3%;
}
.fs-3 {
font-size: 5%;
}
パラメータの説明
@n :整数、反復回数。
@base-value (オプション): integer、プロパティに割り当てられるループの開始値。デフォルト値は、反復回数に割り当てられた値と同じです@n
。
@unit (オプション):文字列、プロパティの単位。デフォルト値はpx
です。
@property (オプション):非文字列または文字列CSS プロパティ。デフォルト値はwidth
@selector (オプション):エスケープされた文字列、ループに使用されるセレクター。エスケープされた文字列として渡される限り、何でもかまいません。
@step-size (オプション): integer , ループがインクリメントする値。
ノート
注 1:カスタム セレクターは、エスケープされた文字列として渡されます。エスケープしないと、期待どおりに動作しません。
注 2: mixin は、パラメーター名を明示的に使用して呼び出されます。これには、いくつかの利点と欠点があります。
注 3:単位は文字列として渡されます。
利点
- どのパラメータが呼び出されているかは明らかです
- パラメータの順序に依存する必要はなく、どのパラメータが 1 番目、2 番目、… に来るかを覚えておく必要はありません</li>
短所
- 私はそれが少し醜く見えると思いますか?
- (リストに追加するか、より良い実装を知っている場合は実装を変更してください)