先日、LessでBEMってみたらかなりさくさくコーディングできた!という話という記事で、Sassを全力でDisったような気がしますが、
いい加減にsass3.3を導入しようとついに一念発起して、sass3.3.0.rc.3を突っ込んでみました。
Compassも1.0.0の開発版にアップデートし、いざ、SassでBEMるぞ!!!と、かの有名なBEM用Mix-in
@mixin e($name) { @at-root #{&}__#{$name} { @content; } } @mixin m($name) { @at-root #{&}--#{$name} { @content; } }
を突っ込んでみたんですが、このMix-inでコンパイルエラー。これはrc.2にしてみたらうまくいったのですが、Compassのバージョンを落としたりが面倒くさくて挫折。rc.3のバグなのかな?と思っていました。
そして、本日、rc.4が出ていたので、改めて再トライ。しかし同じエラーが出現。これはいくら何でも。。。と思い、Sassどうした!って思っていたのですが、試しに、
@mixin e($name) { @at-root &__#{$name} { @content; } } @mixin m($name) { @at-root &--#{$name} { @content; } }
としてみたら、コンパイルが通ってしまいました。
ちゃんとMix-inも無事動きます!
rc.3でも動きました。Oh…
もちろん、これも動きます!しかも、@at-root書かなくても大丈夫。Lessとかと全く同じ挙動です。
BEM用Mix-inなんていらんかったんや・・・・・
.foo { &__bar { } }
SassのRC版は、
gem install sass --pre
Compassは、
gem install compass --pre
でインストールできます。
やっぱりSassは最強でした。