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

推薦する

モバイルアダプティブスタイルで@mediaを使用する方法

一般的な携帯電話のスタイル: @media all および (orientation : 縦向き) ...

WeChatアプレットは日付と時刻に基づいた並べ替え機能を実装

最近、小さなプログラム プロジェクトを引き継いだのですが、リストを日付と時刻で並べ替えるという要件が...

HTML ウェブページ作成のための 8 つの強力なテクニック

<br />作業を簡単に完了できる Web ページ作成ツールは数多くありますが、HTML...

MySQLのサブクエリユニオンの効率性についての簡単な説明と

最近の製品テストでは、同時呼び出し数が 10 未満の場合に応答時間が 100 ミリ秒以内に維持できな...

VSCode 構成 Git メソッドの手順

Git は vscode に統合されており、git コマンドをいくつか記述しなくても、クリックするだ...

Centos7.5 構成 Java 環境のインストール Tomcat の説明

Tomcat は Java 言語をベースにした Web サーバー ソフトウェアです。この記事では主に...

マインスイーパゲームを実装するための jQuery プラグイン (1)

この記事では、jQueryプラグインを使用したマインスイーパゲームの最初の記事の具体的なコードを参考...

Mac でソースコードから MySQL 5.7.17 をコンパイルしてインストールするチュートリアル

1. ダウンロードして解凍します: /Users/xiechunping/Softwares/mys...

効果的なウェブフォームのための 8 つのルール

ユーザーから情報を収集する場合、Web フォームを使用するより簡単で直接的な方法はありません。適切に...

MySQL テーブル名の大文字と小文字の選択

目次1. 大文字と小文字の区別を決定するパラメータ2. パラメータ変更に関する注意事項要約: 1. ...

jQueryをベースにカルーセル効果を実現する

この記事では、カルーセルマップの効果を実現するためのjQueryの具体的なコードを参考までに共有しま...

Vueが初めて要素を取得できなかったときの解決記録

序文Vue で要素を初回取得できない問題の解決方法は、ポップアップ ウィンドウで要素を取得するために...

CentOS ベースの OpenStack 環境の展開に関する詳細なチュートリアル (OpenStack のインストール)

エフェクト表示: 環境準備コントローラーノード: 6GB 4時間60GB/30GB/30GB計算ノー...

Vue で eslint 検出をオフにする方法 (複数の方法)

目次1. 問題の説明2. 問題解決1. 問題の説明Vue プロジェクトを開発する場合、作成時に誤って...