QQtabBar による CSS 命名仕様 BEM の詳細な紹介

QQtabBar による CSS 命名仕様 BEM の詳細な紹介

QQtabBar の BEM

まず、BEMとはどういう意味でしょうか?
BEM は、ブロック、要素、修飾子の略です。これは、Yandex チームによって提案されたフロントエンドの命名方法であり、CSS 命名仕様です。

weui-primary_loading__dot: ライブラリ名-component_state__要素名 ライブラリ名: 通常は各社で合意されています。
コンポーネント: 通常、特定のタグを変更するために個別の CSS を作成するために使用されます。
状態: 通常は、タグの状態または操作できる効果に基づいて名前が付けられます。要素名: 通常は、タグの機能の説明に基づいて名前が付けられます。

BEMの利点:

使いやすさ BEM を使用する場合は、BEM 命名規則を採用するだけで済みます。単一の独立したブロックと CSS セレクターにより、コードを再利用可能かつ単一のものにすることができます。柔軟性 BEM を使用すると、メソッドとツールを好きなように整理および構成できます。

BEMの詳細な紹介

B(ブロック)

ブロック: 再利用可能で機能的、かつ独立したページ コンポーネント。ブロックの名前は、その状態 (赤またはサイズ) ではなく、その目的 (「それは何ですか?」 - ライブラリまたはコンポーネント) を表します。

  • ブロックは環境に影響を与えないようにする必要があります。つまり、ブロックの外部ジオメトリ (エッジ) や配置を設定しないでください。
  • BEM を使用する場合は、CSS タグや ID セレクターを使用しないでください。

E (要素): 要素

要素: ブロックの複合部分。要素はコンテキストに依存します。つまり、要素はそれが属するブロックのコンテキスト内でのみ意味を持ち、単独で使用することはできません。
要素の名前は、その目的 (「これは何ですか?」項目、テキストなど) を説明するものであり、その状態 (「これはどのようなタイプですか、またはどのような外観ですか?」赤、大きいなど) を説明するものではありません。

M (修飾語): 修飾語

ブロックまたは要素の外観、状態、または動作を定義するエンティティ。外観について説明します (「サイズは?」や「テーマは?」など)。

BEMを理解した後は、それをどのように使用すべきかを考える必要があります。

  1. ブロックを作成する: コードの一部が再利用される可能性があり、実装されている他のページ コンポーネントに依存しない場合。
  2. 要素を作成します。コードの説明に従って、作成したブロック内で使用します。
  3. 修飾子を作成する: 要素のプロパティを変更する必要がある場合。 QQアプリケーションバー構造を分析する

ここに画像の説明を挿入

全体としては、4 つの小さなブロックを含む大きなブロックであり、各小さなブロックには 3 つの要素が含まれています。

アプリバーをブロック
小物
アイコン
タグの説明
小さなドットポインタ

ここに画像の説明を挿入

<div class="qqui-appBar">
        <a href="#" class="qqui-appBar__item qqui-appBar__item_on">
            <span>
                <i class="iconfont icon-icon-test1 icon_on"></i>
                <span class="qqui__pointer qqui__pointer_on">1</span>
            </span>
            <p class="qqui__desc qqui__desc_on">メッセージ</p>
        </a>
        <a href="#" class="qqui-appBar__item">
            <span>
                <i class="iconfont icon-icon-test2"></i>
                <span class="qqui__pointer"></span>
            </span>
            <p class="qqui__desc">お問い合わせ</p>
        </a>
        <a href="#" class="qqui-appBar__item">
            <span>
                <i class="iconfont icon-icon-test"></i>
                <span class="qqui__pointer"></span>
            </span>
            
            <p class="qqui__desc">ハイライト</p>
        </a>
        <a href="#" class="qqui-appBar__item">
            <span>
                <i class="iconfont icon-icon-test3"></i>
                <span class="qqui__pointer qqui__pointer_oOn"></span>
            </span>
            
            <p class="qqui__desc">ダイナミック</p>
        </a>
    </div>
* {
            パディング: 0;
            マージン: 0;
        }

        リンク
            色: #b0b3bf;
        }

        a:訪問{
            色: #b0b3bf;
        }

        ホバー{
            色: #2ec4fc;
        }

        a:アクティブ{
            色: #2ec4fc;
        }
        i.アイコンフォント{
            表示: インラインブロック;
           
            幅: 36ピクセル;
            高さ: 36px;
            オーバーフロー: 非表示;
            下部マージン: 3.5px;
            フォントサイズ: 36px;
        }
        i.icon_on{
            色: #2ec4fc;
        }
        

        .qqui-appBar {
            ディスプレイ: フレックス;
            位置: 絶対;
            下部: 0;
            幅: 100%;
            zインデックス: 500;
            背景色: #f9f9f9;
        }

        .qqui-appBar .qqui-appBar__item {
            フレックス: 1;
            テキスト配置: 中央;
          
            パディング上部: 25px;
            フォントサイズ: 0;
            色: #b0b3bf;
            テキスト装飾: なし;
        }
        .qqui-appBar__item>span{
            表示: インラインブロック;
            位置: 相対的;
            下マージン: 9px;
        }
        .qqui-appBar .qqui__desc {
            フォントサイズ: 18px;
            テキスト配置: 中央;
            行の高さ: 18px;
            下部マージン: 13px;
        }
        .qqui-appBar .qqui__desc_on{
            色: 黒;
        }

        .qqui-appBar .qqui__pointer{
            位置: 絶対;
            上: -2px;
            右: -2px;
            幅: 20px;
            高さ:20px;
            表示: インラインブロック;
            行の高さ: 18px;
            色: 白;
            境界線の半径: 50%;
            フォントサイズ: 10px;
        }
        .qqui-appBar .qqui__pointer_on{
            
            背景色: #F43539;
        }
        .qqui-appBar .qqui__pointer_oOn{
            幅: 12px;
            高さ: 12px; 
            行の高さ: 12px; 
            背景色: #F43539;
         
        }

最終的な効果

ここに画像の説明を挿入

上記のアイコンはすべて Alibaba Icon Library からのものです: https://www.iconfont.cn/collections/detail?spm=a313x.7781069.1998910419.d9df05512&cid=16472
使用方法はダウンロード方式となり、上記URLよりダウンロードしてください。次に、それを CSS としてインポートし、クラス名を使用して追加します。

QQtabBar の CSS 命名仕様 BEM の詳細な紹介に関するこの記事はこれで終わりです。CSS 命名仕様 BEM に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

<<:  HTML リスト ボックス、テキスト フィールド、ファイル フィールドのサンプル コード

>>:  HTML ページをズームアウトした後にスクロール バーを表示するためのサンプル コード

推薦する

Linux DMAインターフェースの知識ポイントの詳細な説明

1. 2種類のDMAマッピング1.1. 一貫性のあるDMAマッピング主に長期間使用されるエリアをマッ...

Docker 環境で JMeter+Grafana+influxdb ビジュアル パフォーマンス監視プラットフォームを構築するチュートリアル

目次1. Dockerをインストールする2. influxDBをインストールして設定する3. Gra...

CSS で 2 列レイアウトを実現する N 通りの方法

1. 2 列レイアウトとは何ですか? 2 列レイアウトには、左側が固定幅で右側が適応幅のレイアウトと...

Linux Bash スクリプトを使用してユーザーを識別する方法の例

多くの場合、bash スクリプト内またはスクリプト自体内で直接 sudo を使用してコマンドを実行す...

JavaScript のプライベート クラス フィールドと TypeScript のプライベート修飾子の詳細な説明

目次JavaScript のプライベート クラス フィールドとプライバシーの必要性JavaScrip...

Nginx 構成 PC サイトとモバイル サイトの分離によるリダイレクトの実現

PCサイトとモバイルサイトの分離設定にはnginxを使います。私のPCサイトとモバイルサイトは、SE...

Linux オペレーティング システムで ssh/sftp を構成して権限を設定する方法

FTP と比較すると、SSH ベースの sftp サービスは、セキュリティが優れており (非プレーン...

テキストの両側に水平線を描くための CSS のサンプルコード

この記事では、テキスト中央の両側に水平線を引く効果を実現する CSS のサンプルコードを紹介し、皆さ...

LinuxでLVMディスクを拡張する詳細な手順

1.ハードディスクを追加する2. パーティションの状態を確認します: fdisk -l 3. パーテ...

シンプルなナビゲーションバー機能を実現するHTML+CSS

さっそく、コードを見てみましょう(初心者:特に言うことはありません) <!DOCTYPE ht...

deepin 2014 システムに MySQL データベースをインストールする方法

Deepin 2014 のダウンロードとインストールDeepin 2014 のダウンロードとインスト...

Linuxで権限が拒否された場合の解決策の詳細な説明

許可が拒否されました:その理由は、ファイルの読み取り、書き込み、作成、削除などの権限がないためです。...

セマンティック XHTML タグの紹介

まず最初に指摘しておきたいのは、人間は視覚的な区分を通じてコン​​テンツの意味を判断できるが、検索エ...

初心者のための HTML コーディングガイドライン 30 選

1. HTMLタグは常に閉じる前のページのソース コードでは、次のような記述がよく見られます。 &l...

JavaScript で判決文をエレガントに記述する例

目次序文1. モナドの判断1.1 例1.2 オブジェクトに入れる1.3 マップに載せる2. 複数の判...