2017-12-12 6 views
2

セレクターのスタックオーバーフローin another questionとMDN tells about the specificityで述べたように、セレクターの重量をわずかに増やして、既存のスタイルをオーバーライドしたいと思っています。以下は、(コンパイルされた)CSSの例です。Sass経由でダブルセレクターで特異度を増やす

.parent .parent__child.parent__child { color: red; } 

これはセレクタとして.parent .parent__childを使用するよりも具体的です。


私はSass経由でこれを行う方法がありますが、これを行うにはより良い方法があるはずです。私は今、この権利を行う方法は、次のとおりです。

.parent { 
    &__child&__child { color: red; } 
} 

.parent { 
    &__child.parent__child { color: red; } 
} 

理想的には、これが最良のセットアップ(それは子セレクタではありませんので、アンパサンドは、互いに直接結合する必要が)だろう

これはエラーをスローし、「子」セレクタの間にドットを追加します。 Sass documentationは、この特定のケースについて何も言わない。どのようにこれを達成するための任意のアイデア?

編集

私は補間カッコ方法について知っているが、セレクタは、例えば、3〜4個の層の深い3人に深いたらどう?私はその親セレクタを複製するだけでいいのですが、全体のセレクタツリーではありません。

答えて

0

&の隣には無効なSASS構文があるので、補間括弧(more on this hereおよびhere)を使用して特異性を倍増させる特別なトリックがあります。このつまずくとLESS使う人のために

.parent { 
    &__child { 
    &#{&} { 
     color: red; 
    } 
    } 
} 

// compiles to 
// .parent__child.parent__child { color: red; } 

// You can also do this with deeper nested elements by 
// prefacing the interpolation with the ancestor selectors: 
.parent { 
    &__child { 
    .some .ancestor .elements &#{&} { 
     color: red; 
    } 
    } 
} 

// compiles to 
// .some .ancestor .elements .parent__child.parent__child { color: red; } 

、ダブル &&年代は許可されています。

.parent { 
    &__child { 
    && { 
     color: red; 
    } 
    } 
} 
+0

はこれを取り組む私の編集を参照してください。 – Roy

+0

@Royおそらく、セレクタを自分のブロックに分割し、親セレクタで補間を行う必要があります。 '.some .ancestor .classes&#{&} {...}' - これを反映するように編集された答え。 – chazsolo

+0

しかし、もう一度、私は自分よりも多くのセレクタを書いています。 – Roy

関連する問題