BEMでscssを書く際のちょっとしたテクニックです。本当にちょっとしたものです。
既に、ご紹介されている方はたくさんいますが、
最近知り、地味に感動したので、自分用のメモに残しておきます。
BEMを書いているとよくあるこんなこと
block
に対するmodifier
の下位element
にスタイルを指定したいときのこんな書き方。
style.scss
// block.block{width:200px;height:200px;// element&__element{width:100px;height:100px;}// block modifier&--red{.block__element{width:150px;height:150px;background:red;}}}
気に入らない点
&
で省略して書いているのに、ここに来て記述が長くなってしまう。- 上記に付随して、なんか気持ち悪い。なんかダサい。
理想の書き方
あくまで理想の書き方。当たり前だが、scssの仕様上、通らない。
bad.scss
// block.block{// 省略 // block modifier&--red{&__element{width:150px;height:150px;background:red;}}}
じゃあどうするか
block直下で&
を変数にしておく。クラス名の場合はインターポーレションを使用する。
good.scss
// block.block{// 省略$and:&;// block modifier&--red{#{$and}__element{width:150px;height:150px;background:red;}}}
$and
を使用しているが、何でもいいみたいです!
こうすることで、理想通りのスタイルを当てることができる。知らなかった。。。。
さいごに
BEMって難しい・・・