いくつかのクラスで変数を使用したいので、次のようにします。
$height: 100px
#foo
height: $height
#bar
height: $height
しかし、これはグローバル変数のスコープを汚染するので、サブスコープを使用したいと思います。
要素に共通のコンテナがある場合、それは簡単です:
#common-container
$height: 100px
#foo
height: $height
#bar
height: $height
しかし、このアプローチは、グローバル変数のスコープを汚染する代わりに、結果の CSS を汚染します。連鎖したセレクターは絶対に不要です。場合によっては、要素に共通のコンテナーがないだけなので、このアプローチはまったく選択肢になりません。
ダミーの mixin を使用して、この問題を回避しようとしました。
=local-scope
@content
それはうまくいくようです:
+local-scope
$foo: foo
@warn $foo // -> Error: Undefined variable: "$font-size".
ただし、ミックスインを使用する前に変数を宣言すると、上書きされます。:(
$foo: foo
+local-scope
$foo: bar
@warn $foo // -> bar
問題は、グローバル名前空間を台無しにしたり、不必要にセレクターをチェーンしたりせずに、変数のスコープを正しく制限するにはどうすればよいかということです。