2

より少ないcssを使用して別の変数に基づいて変数を割り当てることは可能ですか?

擬似コード:

@userpick = red; /* this changes based on user pick */

@color1 = red;
@color2 = blue;

if( @userpick == @color1)
  @systempick = @color2
else( @userpick == @color2)
  @systempick = @color1    

@systempickcssスタイルとしてではなく、色の値として使用できるようにしたいと思います。例えば:

border: 5px dashed @systempick;
4

3 に答える 3

0

ミックスインでガードを使用して、使用される色を変更できます。

.a when (@userpick = @color1) {
  color: @color2;
}

.a when (@userpick = @color2) {
  color: @color1;
}

コードが重複する可能性がありますが、if ステートメントを取得する唯一の方法です。

他の方法も可能ですが (例: less.js を使用する場合はインライン JavaScript、dotless を使用する場合は関数プラグイン)、おそらく少しハッキーです。

于 2012-05-09T05:18:13.790 に答える
0

必要なものを取得できましたが、これは Less の PHP ポートでは機能しない可能性があります。変数の割り当ては 1 回しかできないため、これは少し注意が必要でした。変数のスコープに関してもいくつかの制限があります。HSV(色相、彩度、値)を使用して色の値も比較しています

.set_colors(#F00, #00F, #F00); /* pass red, blue and user pick */

.set_colors(@c1, @c2, @u) when (hue(@c1) = hue(@u)) and  (saturation(@c1) = saturation(@u)) and  (lightness(@c1) = lightness(@u)){
    @color1 = @c1;
    @color2 = @c2;
    @userpick = @c1;
    @systempick = @c2;
} 
.set_colors(@c1, @c2, @u) when (hue(@c2) = hue(@u)) and  (saturation(@c2) = saturation(@u)) and  (lightness(@c2) = lightness(@u)){
    @color1 = @c1;
    @color2 = @c2;
    @userpick = @c2;
    @systempick = @c1;
} 
于 2012-05-09T15:19:16.147 に答える