BEMってどうよ的な流れ。

タイトルがすべてさ。
7
闇鍋 @_346_

前にも BEM の話で疑問に挙げたけど、.foo のクラスを持つ見出しモジュールがあったとして、見出しの横にリンクがついたりすると .foo の親要素として div 等が必要になるわけだけど、その時、BEM の視点からその div にクラスをつけるとしたらどうすべきなのか? と。

2013-10-02 16:39:47
リャマ㌠ @roatnek

@_346_ そのdivが.fooになって.fooだったものが.foo__elementになる。見出しの横に付いたりするリンク(fooのelement)はあったりなかったりするけどそれでいいと思う。

2013-10-02 16:41:37
リャマ㌠ @roatnek

BEMは、というかああいう厳密なネーミングルールはJavaScriptから触るとすごく便利。でもそのちょっとしたメリットのために「すべてに名前を付ける罰ゲーム」をやらなあかんのは割に合わんのが実感。

2013-10-02 16:43:57
闇鍋 @_346_

@roatnek てことは div を用いない場合でも、div.foo はあるものとして、見出しモジュールには .foo__element ってつけるってこと?

2013-10-02 16:44:39
Kotaro Kokubo @kotarok

@_346_ 今流行ってる BEM 的にどうなのかはわからないけど、昔 BEM 的なことやってた時には .has-link みたいなのつけてましたね。BEM 的には ***_haslink みたいな modifier になるんですかね。

2013-10-02 16:46:01
闇鍋 @_346_

@kotarok 最初から div.hdg > hn.hdg__body みたいな定義にしておいて、div.hdg.hdg--haslink ってことになるんでしょうかね。

2013-10-02 16:48:15
リャマ㌠ @roatnek

@_346_ ん? そのdivって当初は包含ブロックとしてのdivだったところを格上げして、そいつをblockにして.fooと定義し、かつて見出し+blockだった.fooは.foo_headingとかのelementになって、っていうことやで?

2013-10-02 16:48:28
闇鍋 @_346_

@roatnek てことは、div.foo > hn.foo__elem と hn.foo が同じスタイルを持つってことだよね? なんかそれってバカっぽくない? 無駄っつーか。

2013-10-02 16:49:50
Kotaro Kokubo @kotarok

@_346_ あ、ごめんなさい。そもそもの問題を誤読してました。

2013-10-02 16:53:25
リャマ㌠ @roatnek

そんなことより.fooに.foo__buttonと.foo__linkがあって、それらをいじるmodifierが必要なら.foo__button--disabledと.foo__link--disabledを定義しろっていうのがBEMの教え、ていう理解でいいのかな?

2013-10-02 16:54:59
闇鍋 @_346_

もっぺん言います。hn.foo という見出しモジュールを定義しました。hn.foo は Block です。で、この hn.foo を div で包含する必要が出てきました。その時の div と hn のクラス名を答えよ。

2013-10-02 16:55:13
リャマ㌠ @roatnek

つまり、.foo--disabledに属するセレクタで各elementのスタイルをマージしたら殺されるっていう理解

2013-10-02 16:55:23
リャマ㌠ @roatnek

@_346_ バカっぽい。そこはSassで補ってる。extendとか。ていうかBEMって厳密に従うとかなり冗長でバカっぽい感触。

2013-10-02 16:56:44
闇鍋 @_346_

俺の答えは div.foo > hn.foo__elem で、div を持たない場合でも「一時的に div が無くなってるものとして」hn.foo__elem とすべきなんじゃないかと。div があってもなくても hn.foo__elem にしておく。

2013-10-02 16:56:59
リャマ㌠ @roatnek

blockはなくなっちゃいかんだろ。

2013-10-02 16:58:00
闇鍋 @_346_

「このモジュール、なんで .foo__elem から始まってるんですか?」って突っ込まれても、「.foo はみんなの心の中にあるんだよ」と答える。

2013-10-02 16:59:14
リャマ㌠ @roatnek

elementがあったりなかったりしてもいいが、blockに包含されてないelementっていうのは構造上有り得ないやろ。というかそういう構造は認めようがないやろ。BEMツリーを考えたら。

2013-10-02 16:59:31
闇鍋 @_346_

@roatnek いいんだよ、心の中にはあるんだから。

2013-10-02 16:59:46
リャマ㌠ @roatnek

BEMはただのネーミングルールじゃなくて(そこだけを拝借してもいいとは思うけど)BEMツリーっていうツリー構造を「みんな」が順守することで様々なソフトウェア的メリットが生まれるという開発手法だと理解しているので、ツリーに矛盾を与えるような例外はダメ絶対だと考えてる

2013-10-02 17:01:58
闇鍋 @_346_

だからって div.foo > hn.foo__elem と hn.foo が同じスタイルだから二度書きましょうねってそりゃアンタどうかしてんじゃあねえのかって思うぜ。Sass でなんとかそれっぽくまとめられるだろうけど。

2013-10-02 17:05:40
リャマ㌠ @roatnek

@_346_ どうかしてると思いながら書いてるぜ! ああ気が狂いそうさ!!!

2013-10-02 17:06:59
闇鍋 @_346_

それかもう最初から要不要に関わらず、div.foo で包含しておくかかなあ。それはそれで HTML 側が冗長になるので問題だよなあ。

2013-10-02 17:08:49
リャマ㌠ @roatnek

普通に考えてメリットの半分も受けられないので、わたくしとしては今後「厳密BEM」をやることはないでしょう。それを体感するためだけの本案件での採用であったわけやし。思った通りの部分と思った通り以上の部分といろいろデータが得られたので、これを元にまた違った俺スタイルを進めていく所存。

2013-10-02 17:09:12
リャマ㌠ @roatnek

@_346_ なるよなるよ冗長のかたまりで気が狂いそう胃が痛くなる。あとで呼ぶかどうかわからんやつにも名前を先につけておくんやぞ、どんだけコスト高いねん思うわ。

2013-10-02 17:10:17
1 ・・ 4 次へ