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 ページをズームアウトした後にスクロール バーを表示するためのサンプル コード

推薦する

nginx ベースのブラウザネゴシエーションキャッシュプロセスの詳細な説明

この記事は主に、nginx に基づいてブラウザネゴシエーションキャッシュを設定する詳細なプロセスを紹...

Web デザインにおける HTML フォーマットと長いファイルに関するヒント

<br />関連記事: Web コンテンツ ページ作成に関する 9 つの実用的な提案、W...

ネイティブ js で呼び出し、適用、バインドを実装する方法

1. 呼び出しを実装するステップ:関数をオブジェクトのプロパティとして設定します。これを関数に割り当...

初心者向けウェブサイト構築チュートリアル: 10 日間でウェブサイトの構築方法を学ぶ

10 日間のチュートリアルでは、最も理解しやすい言語を使用し、最も基本的なことから始めて、誰もが W...

Vue Router の 10 の高度なヒントのまとめ

序文Vue Router は、Vue.js の公式ルーティング マネージャーです。 Vue.js の...

Linux 上のカラフルな猫

Linux システムを使用したことがある友人なら、 catコマンドを使用したことがあるはずです。もち...

Docker を使用して Go Web アプリケーションをデプロイする方法

目次なぜ Docker が必要なのでしょうか? Docker デプロイメントの例コードの準備Dock...

列名を知らなくてもMySQLインジェクションを詳細に解説

序文最近、穴を掘ってスペースを作っているだけなので、心が空っぽになっているように感じます。テクノロジ...

Linux システムで grub.cfg ファイルの破損を修復する手順

目次1. grub.cfg ファイルの紹介1. grub.cfg ファイルの場所2. grub.cf...

Docker Compose で利用可能な環境変数の詳細な説明

Compose のいくつかの部分は、何らかの方法で環境変数を扱います。このチュートリアルは、必要な情...

MySQL Bツリーインデックスとインデックス最適化の概要についての簡単な説明

MySQL の MyISAM エンジンと InnoDB エンジンはどちらもデフォルトで B+ ツリー...

CSSとJSでロマンチックな流星群アニメーションを実現

1. レンダリング 2. ソースコードhtml < 本文 > < div クラス ...

Linux 上の MYSQL 5.7 でルート パスワードを取得する際の問題 (テスト済み、利用可能)

目次1. --skip-grant-tables 経由で取得する1.1 my.conf を変更し、新...

mysql5.7.14 解凍版インストールと設定方法 グラフィックチュートリアル (win10)

Win10はmysql5.7の解凍版をインストールします。参考までに、具体的な内容は次のとおりです...