CSS モジュールソリューション

CSS モジュールソリューション

CSS のモジュール ソリューションは、JS のモジュール ソリューションと同じくらい多く存在すると考えられます。ここでは、いくつかの主要なモジュール ソリューションについて簡単に紹介します。

オーケー

オブジェクト指向のルールには、構造と外観の分離と、コンテナーとコンテンツの分離という 2 つの主な原則があります。

用語集

  • 構造と外観を分離する: 繰り返し可能なデザイン ユニットを追加し、次の CSS を使用する場合のオブジェクト パターンの命名やモジュール化のルールなど、この点に関する製品と UI の考え方を促進します。
  • コンテナとコンテンツを分離する: これは、スタイルの使用が要素の位置に一意に一致しないことを意味します。このスタイルはどの位置でも使用できます。このスタイルを適用しない場合は、デフォルトのスタイルが保持されます。

// DOM 構造 <div class="toogle simple">
  <div class="toogle-control open">
    <div class="toogle-tittle">タイトル</div>
  </div>
  <div class="toogle-details"></div>
</div>
// モジュールの一意の識別子。toggle{
}
// スキンスタイルの書き方。基本構造が同じであれば、complex.toggle.simple{ の補助スタイルを使用できます。
}
// ネストされた記述を行うかどうか。多くのプリプロセッサ部分がネストをサポートし、多くの人がこのように記述すると思いますが、これは推奨されません。toogle{
 .トグルコントロール{
 }
 .toogle-details{
 }
}
// 実際、このように整理しますか? 推奨されません。クエリの効率が低下します。一意性を確認できる場合は、サブディレクトリを記述するだけで済みます。toogle{}
.トグルコントロール{}
.toogle-details{}

スマッシュ

SMA と OOCSS には多くの類似点がありますが、主にスタイルの分類において多くの違いがあります。これらは、基本、レイアウト、モジュール、状態、テーマです。

ベース

どこにでも適用可能、私はこれをグローバルスタイルとも呼んでいます

レイアウト

主に、さまざまな特性レイアウトを実現し、レイアウトの再利用率を向上させるために使用されます。

モジュール

再利用可能なユニットである設計のモジュール性は、通常、DOM + CSS の結合バインディングです。

特定の状態でのレイアウトやモジュールの特殊なパフォーマンスを記述します。ここでお勧めしたいのは「CSS Zen Garden」です。DOM構造が変更されていない場合は、CSSスキニングを通じてスタイルを変更できます。

テーマ

ステータスと比較すると、よりカスタマイズされています。重厚なデザインとパラメトリックなデザインのための一連の色、サイズ、インタラクションなどを含むいくつかの特別なモジュールのテーマを設定します。

場合

// DOM 構造 <div class="toogle toogle-simple">
  <div class="toogle-control is-active">
    <div class="toogle-tittle">タイトル</div>
  </div>
  <div class="toogle-details"></div>
</div>

oocss と比較すると、ほとんどの設計思想は同じで、クラスを CSS のスコープとして使用します (スコープとは、1. シナリオに合わない場合は使用を禁止する、2. シナリオに合う場合は正しく使用する必要がある、という 2 つの制限を意味します)。もう 1 つの違いは、スキンと状態の記述規則が異なることです。

ベム

bem は、ブロック、要素、修飾子を考慮してスタイルを記述することです。特定の CSS 構造は関係ありませんが、CSS に名前を付ける方法を提案するだけです。

場合

// DOM 構造 <div class="toogle toogle--simple">
  <div class="toogle_control toogle_control--active">
    <div class="toogle_tittle">タイトル</div>
  </div>
  <div class="toogle_details"></div>
</div>

説明する

  • ブロックレベル: コンポーネントの名前
  • 要素: コンポーネント内の要素の名前
  • 修飾子: 要素の変更に関連するクラス

この命名方法の欠点は、スタイル名が非常に長くなることですが、実際には smacss と oocss ではある程度使用されています。命名は非常に意味的です。モジュールが明確でない場合は、スタイル名に基づいて対応する構造が何であるかを推測できます。

適切なソリューションを選択する

どのソリューションを選択する場合でも、重要なのはどれがチームに最も適しているかということです。現在のアプローチは、BEM と smacss を組み合わせたものです。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

<<:  HTMLページのヘッダーコードは完全に明確です

>>:  MySQLアラームの詳細な分析と処理

推薦する

MySQL の全体的なアーキテクチャの紹介

MySQL の全体的なアーキテクチャは、サーバー層とストレージ エンジン層に分かれています。サーバー...

Webフロントエンドの一般的な操作(JS/HTML/CSSなどの知識を含む)

ul liの前のアイコン1をキャンセルしますクリア値1値を1に設定ラベル中央値1をクリアラベルの中央...

VSCode+CMake+Clang+GCC 環境構築チュートリアル (Win10 の場合)

大学院入試に備えて、C/C++ を使って基本的なデータ構造とアルゴリズムを実装する予定です。アルゴリ...

Linux システム AutoFs 自動マウント サービスのインストールと構成

目次序文1. サービスプログラムをインストールする2. メイン設定ファイルを書く3. サブ構成ファイ...

Docker を使用した Laravel アプリケーションのデプロイ例

この記事で使用されているPHPベースイメージはphp:7.3-apacheです。この記事の Lara...

Linux の daily_routine サンプルコードの詳細な説明

まずサンプルコードを見てみましょう: #/bin/bash cal 日付 -u echo "...

MySQL で左結合を使用して where 条件を追加する問題の詳細な分析

現在の需要:グループとファクターの 2 つのテーブルがあります。1 つのグループは複数のファクターに...

MySQL で URL タイムゾーンの罠を回避する方法

序文最近、MySQL 6.0.x 以降の jar を使用する場合、コード URL リンクで serv...

Innodb で MySQL の 2T テーブルをすばやく削除する方法の例

序文この記事は主に、MySQL の Innodb で 2T の大きなテーブルをすばやく削除する方法に...

10分でDockerを使ったマイクロサービスのデプロイ方法を学ぶ

Docker は 2013 年のリリース以来、広く注目され、ソフトウェア業界を変える可能性を秘めてい...

MySQLは遅いSQLを開始し、原因を分析します

ステップ1. MySQLスロークエリを有効にする方法1: 設定ファイルを変更するWindows: W...

JS を使用してバイナリ ツリー トラバーサル アルゴリズムのサンプル コードを実装する

目次序文1. バイナリツリー1.1. 二分木の走査1.2. jsを使用してバイナリツリーを表現する1...

JavaScriptのonclickとclickの違いの詳細な説明

目次addEventListener が必要な理由は何ですか? addEventListener を...

nginx をシャットダウン/再起動/起動する方法

閉鎖サービス nginx 停止systemctl 停止 nginx起動するサービス nginx 開始...

dockercompose を使用して springboot-mysql-nginx アプリケーションをビルドする

前回の記事では、Docker を使用して、コンパイルされた jar パッケージをイメージに組み込む ...