&
「親」コンビネータではなく、「親」コンビネータとして考えることが重要です。つまり、ネストされたセレクターの文字列全体をその時点まで(レベルの深さに関係なく)取得し、文字列置換ホルダーと同等の機能を果たします。だからあなたの例の縮小版で...
.container {
.column {
.one& {
width: 40px;
}
}
}
...そのレベルのセレクター文字列はです.container .column
。これは、の位置で「置き換えられる」ものであるため、上記のように先頭&
に連結すると、セレクター文字列全体の先頭にアタッチされ、最終的に次のようになります。
.one.container .column {width 40px;}
しかし、最後から連結する場合(との間にスペースはありません&
).
、...
.container {
.column {
&.one {
width: 40px;
}
}
}
...になる:
.container .column.one {width 40px;}
この最後のものは本当にあなたが望むクラスの組み合わせですが、あなたが望んでいたのとまったく同じ順序ではありません。ただし、順序はブラウザにとって重要ではない.one.column
か.column.one
、同じです。つまり、次のように、両方の個別のクラスが適用されている要素を意味します。
<div class="column one"></div>
<div class="one column"></div>
これらは両方とも同等であり、両方の要素が両方のクラスを持っているため、.one.column
またはセレクターとして両方の要素を選択します。.column.one
順序が絶対に不可欠である場合(生成されたCSSを探しているとおりにする必要があります)、次のように少し繰り返す必要があります。
.container {
.column {
...generic column code here...
}
.one {
&.column {
width: 40px;
...any other code dependent on combination of .one.column here...
}
}
}