web-dev-qa-db-ja.com

LESS変数をオーバーライドすることは悪い習慣ですか?

現時点では、プロジェクトでTwitter Bootstrapを使用しています。これには、LESSファイルを含め、記述した追加のLESSコードを使用してコンパイルしています。

最新リリースでは、Bootstrap LESS変数の一部をオーバーライドする必要があります。ここでの1つのオプションは、Bootstrapリリース。

しかし、私は、_@import_ LESSファイルで定義された変数を、変数の後に再宣言することによってオーバーライドすることが可能であることに注意します。

例えば。:

_@import "Twitter-bootstrap/bootstrap.less";
// Restore base font size to pre 2.1.1 defaults
@baseFontSize:          13px;
// Add some custom LESS code here
_

これは悪い習慣ですか?それはLESSコンパイラーが機能する方法のアーチファクトですか、それとも意図された部分ですか?次の2つのリファレンスは見つかりましたが、これに関する情報はあまり見つかりませんでした。

Lessコンパイラーのバグのため、変数が最初に宣言された後で変数を変更することにより、変数の「定数」値をオーバーライドできます。

http://rubysource.com/how-to-customize-Twitter-bootstrap%E2%80%99s-design-in-a-Rails-app

そして

これらの3つの変数をオーバーライドして、列とガターをカスタマイズします(grid.lessインポートが宣言された後)。

http://semantic.gs/

LESSサイト自体は、変数は「定数」であると述べています。

http://lesscss.org/

LESSの変数は実際には「定数」であり、一度しか定義できないことに注意してください。

しかし、このアプローチを使用している他のサイトが表示されます。ベンダーブランチを維持するよりも確かに簡単で、less.jsでも問題なく動作するようです。

これが悪いことかどうかについての考えをいただければ幸いです!

40
sync

OK!上記の問題の1つが意図された動作の説明につながり、LESS変数のオーバーライドが適切であることが判明しました。

あなたの宣言はCSSの同じスコープでお互いを上書きします。同じことがLESSにも当てはまります。

https://github.com/cloudhead/less.js/issues/297

CSSと同様に、スコープ内でのオーバーライドは、LESSを使用するための意図された方法です。

46
sync

大丈夫です!

私は通常、「コンポーネント」とデフォルト値を持つ変数を含む少ないファイルを作成します。次に、同じ変数を使用して「顧客」の値を含むファイルをインポートし、デフォルトの値を上書きします。このようにして、一部の値を変更するだけで、顧客ごとに新しいデザインを作成できます。

大丈夫でとても便利です。

6
kurroman