Quantcast
Channel: CSSタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8795

BEMでhtmlにModifierつきのクラス名を付与だけでElementのスタイルも反映する

$
0
0

いつもこうやっていた実装

BEMでModifierを使うとき、Elementのクラス名もhtmlに付与しないとElementのスタイルが付与されない。
htmlのclassがやたら長くなるので嫌だなーと思っていた。

.block{width:300px;margin:auto;&__element{display:inline-block;border-radius:3px;&--modifier1{background:red;}&--modifier2{background:blue;}}}
書き出し後
.block{width:300px;margin:auto;}.block__element{display:inline-block;border-radius:3px;}.block__element--modifier1{background:red;}.block__element--modifier2{background:blue;}
<divclass="block"><divclass="block__element block__element--modifier1"></div><divclass="block__element block__element--modifier2"></div></div>

mixinで解決

mixin使って親スタイル持ってこれるようにすればできそう。

@mixinElement($blockName){&__#{$blockName}{@content;}}@mixinModifier($modifierName){$parent:&;&--#{$modifierName}{@extend#{$parent};@content;}}.block{width:300px;margin:auto;@includeElement(element){display:inline-block;@includeModifier(modifier1){background:red;}@includeModifier(modifier2){background:blue;}}}
書き出し後
.block{width:300px;margin:auto;}.block__element,.block__element--modifier2,.block__element--modifier1{display:inline-block;}.block__element--modifier1{background:red;}.block__element--modifier2{background:blue;}
<divclass="block"><divclass="block__element--modifier1"></div><divclass="block__element--modifier2"></div></div>

cssが太りそうだけど、htmlは多少すっきりする。


Viewing all articles
Browse latest Browse all 8795

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>