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

推薦する

MySQLにおける正規表現の一般的な使用法

MySQL における Regexp の一般的な使用法特定の文字列を含むあいまい一致# コンテンツフィ...

Windows システムに VirtualBox と Ubuntu 16.04 をインストールするための詳細なチュートリアル

1. ソフトウェアの紹介バーチャルボックスVirtualBox は、無料のオープンソース仮想マシン ...

CSS floatプロパティの詳細な説明

1. フローティングとは何ですか?フローティングは、その名の通り、浮遊することを意味します。要素がド...

IISMonitor を使用して Web ページを監視し、IIS を自動的に再起動します。

目次1. ツールの紹介2. ワークフロー3. 操作インターフェースとパラメータ設定(1)監視と再起動...

Linux ファイアウォール設定の詳細な手順 (yum ウェアハウス設定に基づく)

序文この実験では、デバッグ用に2つの仮想マシン(CentOs6とRed Hat 6)を準備します。 ...

TypeScript インターフェース定義ケースチュートリアル

インターフェースの役割:インターフェース (英語: interface) の機能は、簡単に言えば、コ...

Linux シェル環境での Zabbix API の使用

Linux シェル環境で直接呼び出すことができます。公式 Web サイトによると、Zabbix のデ...

Linux ncコマンドの概要

NC のフルネームは Netcat (Network Knife) で、作成者は Hobbit &a...

JavaScriptのスリープ関数の使用

目次1.スリープ機能2.タイムアウトを設定する3. 約束4. 非同期待機5. 1秒後に出力1、2秒後...

フロントエンドインタビューに必要なホモロジーとクロスドメインの詳細な説明

序文ご存知のとおり、ブラウザの相同性戦略とクロスドメイン方式も、フロントエンド面接で頻繁に遭遇する問...

一般的な XHTML タグの使用方法の紹介

XHTML には多くのタグがありますが、頻繁に使用されるのはごくわずかであり、習得する必要があるのは...

完璧なアロエベラジェルを選ぶには?完璧なアロエベラジェルの本物と偽物の見分け方

最新のパーフェクト アロエ ベラ ジェルのパッケージ ボックスには、赤いフォントで完璧な英語の文字が...

HTML 適応テーブル方式

<body style="scroll:no"> <テーブルの...

写真とテキストによる MySQL と sqlyog のインストール チュートリアル

1. MySQL 1.1 MySQLのインストールmysql-5.5.27-winx64 ダウンロー...

WordPress実験を実装するための3つの仮想マシンのKVM展開の詳細説明

1. KVM の概要カーネルベースの仮想マシンの略称は、Linux 2.6.20 以降のすべての主要...