Webはブロック、コンポーネント、および変形の繰り返しから構成される


これはクイックキャンパスコースのまとめです.
「The RED:堅牢なUI設計のための表記ガイドby鄭燦明」

選択者優先度ルール

  • CSSセレクタ専用性(セレクタ優先度ルール)
  • 選択プログラムを書きすぎる作業量を減らす
  • .
  • 高特異性(具体性)順序:id→class→type
  • CSSセレクタの優先度を上げると、セレクタを上書きするためにより高いセレクタ規則が必要となり、セレクタがより長くなる
  • となる.
  • 選択者特異スコアは「020」未満のレベルに維持され、CSS選択者およびコードの管理に非常に有用である
  • .
    idclass, [attr]type,::element000
    typeセレクタ:HTML要素を直接選択
    ::element:仮想要素セレクタ
    element選択者特異的スコアa 0,0,1→001.a0,1,0 → 010#a1,0,0 → 100#a a1,0,1 → 101#a.a a1,1,1 → 111#a#b[href]::before2,1,1 → 211
    CSSセレクタスコアマップ
    *2番目のグラフに示すように、より低く平らなグラフィックを使用することをお勧めします.


    画像ソース:https://csswizardry.com/2014/10/the-specificity-graph/
    CSSセレクタ使用状況分析サイト:https://cssstats.com/
    CSSセレクタ説明:https://www.w3.org/TR/selectors/
    CSSセレクタ特異的スコアリングサイト:https://specificity.keegan.st/

    BEM

  • Webは、ブロック、要素、および変形の集合の概念命名方法
  • である.
  • 大型CSS
  • を有効に管理する
  • は、現在の開発者が最も多く使用し、満足度が最も高い技術である
  • である.
    ネーミング・ルールを誤って管理したケース
    1.意味を理解できないネーミング
    <style>
    .bx {...}
    .cnt {...}
    .mt {...}
    </style>
    プリエンプト
  • グローバルスペースの一般的な名前
    他の用途がないため、クラス名は使用されません.
    <style>
    .content {...}
    .button {...}
    .top {...}
    </style>
    エラー管理
  • 選択ルールの例
    リセットが宣言されていない場合は、設定する必要のない初期値を再設定します.
    →選択者の深さが深まり、選択者の特異性が高まる問題
  • <style>
    //reset.css 
    a { text-decoration: none; } 
    
    //local.css 
    .module a { text-decoration: underline; } 
    #special.module a { text-decoration: none; } 😱
    #another#special.module a { text-decoration: underline; } 😱
    </style>

    Block / Element / Modifier

  • ブロック:独立した再利用可能なブロック
  • Element:ブロックを構成する従属子要素で、無条件にブロックに従属する
    *要素は単独で存在することはできません.ブロック
  • はありません.
  • Modifier:ブロックまたは要素の変形(形状、状態、動作)
    *BlockとElementはModifier
  • を貼り付けることができます.

    特長

  • セマンティッククラスセレクタ命名規則(省略不可)
  • その他のフォーマットの選択者使用制限(二重スラッシュ、非二重下段記号使用制限)
  • ドメイン固有の名前(ドメイン全体で他の選択者名を上書きしないことを推奨)
  • 低選択者特異性
  • を保持する.
  • HTML/CSS接続がばらばらで並列開発可能
    *スタイルはCSSファイルですべて処理され、HTMLでのみ意味があるため、HTMLで適切なBEM形式のクラス名を作成すると、CSS開発者はCSS
  • を並列に開発して構築することができる.

    命名規則

  • の2つの下の欄()はサブ要素
  • を表す.
  • ハイフン(-)は、ステータス遷移
  • を表す
  • という名前の要素で、
  • は1回に1回しか変換できません.
  • 区切り記号(,--)は、1から3つの記述子フォーマットを除き、他のフォーマット
  • は許可されません.
    <style>
    .block {...}
    .block__element {...}
    .block__element--modifier {...}
    .block--modifier {...}
    </style>

    オプション


    2つのブロック名の単語を連続して入力するときにキーワードを接続します.
  • PascalCase:最初の単語から大文字で単語を記入する前列
  • camelCase:2番目の単語から、大文字(推奨)👍)
  • kebak-case:単語をハイフンで接続
  • snake case:単語間で直接接続され、
  • 適用例


    他のライブラリやクラスが重複しないように、ネーミングスペース接頭辞を使用することを推奨します.
    →たとえば、modelまたはbtnという名前のクラス名を作成した場合、ブートバーなどのクラスを使用する他のライブラリと一緒に使用することはできません.
    // 접두어를 추가해 camelCase로 작성한 예
    <style>
    .lzModal {...}
    .lzModal__title {...}
    .lzBtn {...}
    .lzBtn--small {...}
    </style>

    BEM例


    1.「ブロック」は必ずしも要素や変形を必要としない
    // 단순 블록 사용 가능
    <button class="btn"> 
    2.「変形(-)」拡張ブロックまたは要素のスタイル
    変形(-)はクラスを単独で使用することはできません.したがって、常にブロックまたは要素と一緒に使用する必要があります.
    // ❌ 변형 클래스 단독 사용
    <button class="btn--submit">
    
    // ⭕ 블록 이름 명시 후 변형 클래스 사용
    <button class="btn btn--submit"> 
    <em class="info__label info__label--warning">
    3.「選択者特異性」の強化されたオーバーラップ構造.タイプ選択者はBEMでそれを逆モードと見なす
    <style>
    /* ❌ BEM 안티 패턴으로 작성하여 특이성이 높아진 잘못된 사용 예 */
    .photo {} /* 특이성 10 */ 
    .photo img{} /* 특이성 11 */ 
    .photo figcaption{} /* 특이성 11 */
    </style>
    4.すべての制御する要素にクラス名を付けることで特異性を管理する
    <style>
    /* ⭕ 올바른 사용 예 */
    .photo {} /* 특이성 10 */ 
    .photo__img{} /* 특이성 10*/ 
    .photo__caption {} /* 특이성 10 */ 
    </style>
    5.ブロック/要素名の省略を禁止します.重複しない要素/変形名
    <style>
    .__elem {} /* 블록 이름 생략 ❌ */
    .--modi {} /* 요소 이름 생략 ❌ */
    .block__elem1__elem2{} /* element 이름 두번 작성 ❌ */
    .block--modi1-modi1{} /* modifier 이름 두번 작성 ❌ */
    </style>

    Summary

  • 意味命名法
  • 読みやすく理解しやすい
  • 辺鄙な名前の略語を使用しない
  • 特異性は「020」未満の
  • に保持する.
  • 選択者名は、グローバル空間で唯一の
  • です.
  • HTML/CSSパラレル開発
  • Atomic/Utility First CSS


    BEMに関する内容が多いので覚えておいてください

    長所


    ほとんどのスタイルは
  • ライブラリタイプを採用しており、スタイル
  • を迅速に構築できます.
  • は他の方法と共に使用することができる(ガイドバーまたはBEMと混合して使用することができる)
  • .

    短所

  • スタイルの観点で、意味を使用しません.
    →クラス名が見えにくく表示の用途を推測する
  • スタイルの高さ
  • HTMLコード
  • にリンク
  • HTML/CSSは並列開発不可(HTML作成者はCSSコードの管理と開発も必要)
  • 小型チームまたは単一エンジニアの開発に適している
    BEMコメントサイト
    https://en.bem.info/
    https://naradesign.github.io/bem-by-example.html