2017-09-09 13 views
-2

を使用しているとき、私はこの

.block{ 
    $this: &; 

    &__element{ 
    // styles go here 
    } 

    &:hover{ 
     #{$this}__subelement { 
     // styles go here 
     } 
    } 
} 

のような要素を持って、それを含むブロックの上にホバリングするとき、私はサブ要素に変化を誘導することができるようにこれは基本的に(私は」 BEMを使用して)。しかしコンパイル時にSassは余分なスペースを追加します

.block:hover .block__subelement { 
// styles go here 
} 

そしてこのスタイルは無効です。これを回避する唯一の方法は、書き込みによるものです。

.block{ 
    $this: &; 

    &__element{ 
    // styles go here 
    } 

    &:hover{ 
     #{$this}__subelement{ // remove spacing here 
     // styles go here 
     } 
    } 
} 

なぜこのようなことが起こりますか?それは私が使用しているローダーのためですか?あなたはあなただけでは、ルールの先頭にアンパサンドを追加する必要がアンパサンドに&

を使用して、親ルールの場所を指定しない限り、サスコンパイラは常に親と子の定義の間にスペースを追加します

答えて

0

.block{ 
    $this: &; 

    &__element{ 
    // styles go here 
    } 

    &:hover{ 
     // Add ampersand to reference parent rule here 
     &#{$this}__subelement{ // remove spacing here 
     // styles go here 
     } 
    } 
} 
+0

私はおそらく十分に明確ではありませんでした。私は '.block'と' .block .block__subelement'の間にスペースを入れたいのですが、私が取り除こうとしている間隔は '.block__subelement'と' {' –

+0

です。 :)ルールと定義の間の空白は、ルールにまったく影響しません。 [この例](https://codepen.io/anon/pen/eEqjgm)を参照してください。これはブラウザのディスプレイに表示されていますか?またはBEMが正しく表示されていませんか? – LightBender

+0

私のプロジェクトでは余分なスペースがあってスタイルがうまくいかなかったので:Sスタイルライントの問題かそれとも何かのものでなければならない:/助けてくれてありがとう –

関連する問題