BEM
CSSネーミング会議BEMについて説明します.
ブロック、要素、およびモディファイヤ(BEM)は、CSSネーミング会議の一種であり、そのルールは簡単であり、コラボレーションの利便性を高め、CSS概略図(Specificity)から始まるセレクタの複雑さを低減する.
Block自体が有意義な要素である(独立したエンティティ自体が有意義である).
Elementとは、Blockのような機能を実行するが、Elementとは独立して意味のある要素ではない.つまり、ElementはBlockに依存する.(A part of a block that has no standalone meaning and is semantically tied to its block)
最後に、ModifierはBlockまたはElementのフラグです.Modifierは、BlockまたはElementの外観または動作を変更するために使用します.
BEMは基本的に
BEMは(HTML)ID属性を使用しません.Classのみ使用します.
どのように見えるか(x)が何の目的なのか(o)
画面に赤いエラーメッセージを表示したい場合は、赤じゃないerror名を付ける必要があります.エラーメッセージの色は、後で赤ではなく別の色に変更できるからです.
BEMのコア部分や混同の5つを以下のように整理する.
case 1)
BEMをTOYアイテムに適用する様子ゲームブロック内には様々な要素からなるものが見られる.
CSSの学習方法理論編(feat.figma)
[CSSメソッド]BEMメソッド
BEM
例のBEMとして理解される。
なぜCSSの歴史が理解しにくいのか。
MDN-CSS概略図(特殊)
BEMは?
ブロック、要素、およびモディファイヤ(BEM)は、CSSネーミング会議の一種であり、そのルールは簡単であり、コラボレーションの利便性を高め、CSS概略図(Specificity)から始まるセレクタの複雑さを低減する.
Block自体が有意義な要素である(独立したエンティティ自体が有意義である).
Elementとは、Blockのような機能を実行するが、Elementとは独立して意味のある要素ではない.つまり、ElementはBlockに依存する.(A part of a block that has no standalone meaning and is semantically tied to its block)
最後に、ModifierはBlockまたはElementのフラグです.Modifierは、BlockまたはElementの外観または動作を変更するために使用します.
BEMは基本的に
Block__Element--Modifer
、つまりtab__item--focused(boolean)
である.form__login--theme-normal(key-value)
と同様に、「Modifier-value」形式も使用されます.BEMは(HTML)ID属性を使用しません.Classのみ使用します.
どのように見えるか(x)が何の目的なのか(o)
画面に赤いエラーメッセージを表示したい場合は、赤じゃないerror名を付ける必要があります.エラーメッセージの色は、後で赤ではなく別の色に変更できるからです.
BEMをコードで表示
case 1)
// Bad case
// .header .nav와 같이 .nav가 .header에 종속된다.
<div class='header'>
<div class='nav'> </div>
</div>
<div class='header'> // Block
<div class='header__nav'> </div> // Block__Element
</div>
case 2)// Bad case
<form class='search-form'> // Block
<div class='search-form__content'> // Block__Element1
<input class='search-form__content__input'> // Block__Element1__Element2
<button class='search-form__content__button'> // Block__Element1__Element3
// BEM은 구조의 깊이를 전달하지 않는다.
// DOM 구조적으론 Element2,3이 Element1 하위에 위치하지만,
// BEM 측면에선 그저 또 하나의 Block__Element다.
// Block__Element__Element와 같이 꼬아선 안 된다.
<form class='search-form'>
<div class='search-form__content'> // Block__Element1
<input class='search-form__input'> // Block__Element2
<button class='search-form__button'> // Block__Element3
case 3)// Bad case
<figure class='photo'>
<img>
<figcaption>
// BEM은 클래스명을 생략해선 안 된다.
// 클래스명을 생략하면 지금 당장은 간결해 보이고 좋으나,
// 명시도가 증가해서 위험함.
// .photo figcaption < .photo__caption
<figure class='photo'>
<img class='photo__img'>
<figcaption class='photo__caption'>
case 4)// Bad case
<button class='btn--submit'>
// btn에 변형이 있을 경우 --Modifier를 사용한다
// 이때 Modifier는 btn을 대체하기 위함이 아닌 확장하는 용도다.
// 따라서 btn--submit을 단독으로 사용해선 안 된다.
<button class='btn btn--submit'>
case 5)// BEM은 kebab-case, camelCase를 허용한다
<div class='some-thesis some-thesis--fast-read'> // Block, Block--Modifier
<div class='someThesis someThesis--fastRead'>
BEMをTOYアイテムに適用する様子ゲームブロック内には様々な要素からなるものが見られる.
<i>
ラベルもgame iconのような構造を使うべきかどうか分かりません.References
CSSの学習方法理論編(feat.figma)
[CSSメソッド]BEMメソッド
BEM
例のBEMとして理解される。
なぜCSSの歴史が理解しにくいのか。
MDN-CSS概略図(特殊)
Reference
この問題について(BEM), 我々は、より多くの情報をここで見つけました https://velog.io/@lechuck/BEMテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol