0

そのため、php-less コンパイラから渡された変数に基づいて、いくつかの「グローバル」変数をオーバーライドしようとしています。

私が何か間違ったことをしているのか、それとも範囲が原因でそれが不可能なのかわかりませんか?

編集:この場合、体の背景を赤くしようとしています。

外部レス

// From external less stylesheet that I can't/don't want to modify
@myColour: blue;

body {
    background: @myColour; // always blue
}

my.less

@import "external.less"

// My styles
.setResponsive(@responsive) when (@responsive = on) {
    @myColour: green;
}
.setResponsive(@responsive) when (@responsive = off) {
    @myColour: red;
}

@responsiveState: off; // actually being set from compiler
.setResponsive(@responsiveState);

div {
    .setResponsive(@responsiveState);
    background: @myColour; // red
}

http://codepen.io/anon/pen/gbOymJ

4

1 に答える 1

0

ミックスインを関数として使用しています:

呼び出し元のスコープで直接定義された変数はオーバーライドできません。

あなたの状況@myColour: blue;では、両方.setResponsive(@responsiveState);が同じスコープ(メインスコープ)にあります。だからあなたがしようとしていることは不可能です。

コードの最後ですべての変数を再宣言する必要があります ( @responsiveState の設定に使用しているのと同じメカニズムを使用)

于 2014-11-17T23:47:32.070 に答える