2016-12-16 3 views
1

クラス.highlightをさまざまな要素に適用し、要素の種類に応じてスタイルを適用したいとします。私はこれを行うことができます:子孫セレクタではなく、クラスコンビネーションセレクタとして末尾のアンパサンド(&)を使用してください。

input[type="text"].highlight {...} 
select.highlight {...} 
someOtherSelector.hightlight {...} 

しかし、私は私のコードはより簡潔にするために末尾にアンパサンド(&)を使用しようとしています。

私は次のことを試してみた:私も試した

Error: property "input" must be followed by a ':'

.highlight { 

    input[type="text"]& { 
     border: 1px solid $brand-purple; 
    } 
} 

しかし、私は、次の取得を

.highlight { 

    input[type="text"].& { 
     border: 1px solid $brand-purple; 
    } 
} 

しかし、私は次のエラーを取得しますエラー:

Invalid CSS after "[type="text"]": expected "{", was "&" "&" may only be used at the beginning of a compound selector.

これを回避する方法はありますか、これはSASSで行うことはできませんか?

答えて

3

だけではなく、.&#{&}使用@at-rootを使用すると、ネスティング構造全体をネスティングツリーの「ルート」に分割することができます。 SASSで

書き込みこの:

.highlight { 

    @at-root input[type="text"]#{&} { 
     border: 1px solid $brand-purple; 
    } 
} 

これはにCSSにコンパイルされます:このことができます

input[type="text"].highlight { 
    border: 1px solid purple; 
} 

願っています!あなたはあなたが必要なものを、あなたのSCSSビットを再編成する必要が

+0

これは 'にコンパイルされますinput [type = "text"] .highlight'ではなく、入力[type = "text"]。強調表示されたOPを要求します。 –

+1

@JonUleisああ!私の悪い。答えを更新しました。 –

+0

閉じる!しかし、その結果は '.highlight input [type =" text "]です。ハイライト{...' input [type = "text"]の代わりにハイライト{.......}ハイライト{...} – jbyrd

0

は次のとおりです。

input[type="text"] { 
    &.highlight { 
    border: 1px solid $brand-purple; 
    } 
} 

*あなたの更新後の編集、あなたはでルート@使用することができます。

.highlight { 
    @at-root { 
    input[type="text"] { 
     &.highlight { 
     border: 1px solid $brand-purple; 
     } 
    } 
    } 
} 
+0

私はそれを行うことができますが、私はしたくないと思います。私は '.highlight'クラスを' .highlight'を繰り返さずに、さまざまな種類の要素に適用したいと考えています。 – jbyrd

+0

ああ、より鮮明な絵を描くためにthnxを更新しました。 –

+0

しかし、それは私の元の構造化の目的を全滅させます。なぜなら、あなたは '.highlight'を繰り返さなければならないからです。 – jbyrd

関連する問題