私はLess
に精通していません。私の理解では、Less
はless
形式のファイルを標準のcss
ファイルに変換できると思います(間違っている場合は修正してください)。今、私は以下の質問があります。
単一のCSSファイルで以下のような100個のCSSクラス(.span1
から.span100
)を生成するとします。 less
がそのようなCSSファイルを生成できるかどうか知りたいですか?
...
.span5 {
width: 5%;
}
.span4 {
width: 4%;
}
.span3 {
width: 3%;
}
.span2 {
width: 2%;
}
.span1 {
width: 1%;
}
すべて、ループでcssを出力する方法を見つけました。それを確認してください。ありがとう。
@iterations: 100;
// helper class, will never show up in resulting css
// will be called as long the index is above 0
.loopingClass (@index) when (@index > 0) {
// create the actual css selector, example will result in
// .myclass_30, .myclass_28, .... , .myclass_1
(~".span@{index}") {
// your resulting css
width: percentage((@index - 1) *0.01);
}
// next iteration
.loopingClass(@index - 1);
}
// end the loop when index is 0
.loopingClass (0) {}
// "call" the loopingClass the first time with highest value
.loopingClass (@iterations);
LESSの最新バージョンを使用している場合は、これを試してください。
@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 で試してみることができます。
.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:integer、反復回数。
@ base-value(オプション):integer、割り当てられるループの開始値プロパティ。デフォルト値は、反復回数@n
に割り当てられた値と同じです。
@ unit(オプション):string、プロパティの単位。デフォルト値はpx
です。
@ property(オプション):non-stringまたはstringCSSプロパティ。デフォルト値はwidth
です
@ selector(オプション):escaped string、ループに使用されるセレクター。エスケープされた文字列として渡される限り、何でもかまいません。
@ step-size(オプション):integer、ループの増分値。
注1:カスタムセレクターはエスケープ文字列として渡されます。エスケープされない場合、期待どおりに動作しません。
注2:ミックスインは、パラメーター名を明示的に使用して呼び出されます。これには、いくつかの利点と欠点があります。
注3:単位は文字列として渡されます。
利点
欠点
特定のメソッド内で実行することは不可能です。
しかし、このように可能:
.loopingClass (@index) when (@index > 0){
.span_@{index}{
width: @index px;
}
.loopingClass(@index - 1);
}
.loopingClass(5);
Resiltは次のようになります。
.span_100 {
width: 100 px;
}
.span_99 {
width: 99 px;
}
.span_98 {
width: 98 px;
}
.span_97 {
width: 97 px;
}
.span_96 {
width: 96 px;
}
.span_95 {
width: 95 px;
}
and e.t.c.