ホームページ ウェブフロントエンド CSSチュートリアル スタイルの合理化: 保守可能なコードのための CSS 変数

スタイルの合理化: 保守可能なコードのための CSS 変数

Aug 22, 2024 am 08:32 AM

ここでは、CSS 変数が再利用可能でカスタマイズ可能なコンポーネントのサポートを簡素化する方法についていくつかの洞察を示します。使用しているフレームワークに関係なく、このアプローチはフレームワークに依存しません。

サンプルコンポーネント

進行状況バー コンポーネントを UI キットに追加する必要があるとします。 React を例として使用して、簡単な実装を示します。

import "./ProgressBar.css";

export function ProgressBar({percentage} : {percentage: number} ){
  return ( 
    <div className="progress-bar">
      <div className="fill"
        style={{ width: percentage + "%"}}
      />
    </div>
  )
}
ログイン後にコピー

色と基本ルールを追加するための CSS

.progress-bar{
  width: 200px;
  height: 20px;
  border: 1px solid black;
}

.progress-bar .fill{
  height: 100%;
  background: black;
}
ログイン後にコピー

デフォルトでは黒でこんな感じです

Streamlining Styles: CSS Variables for Maintainable Code

コンポーネントはアプリのさまざまな部分で再利用されることになっています。私は、各消費者が、特定のニーズや配色に合わせてバーとその境界線の色をカスタマイズできる柔軟性を備えている必要があると期待しています。

私は、消費者がデフォルトの色をオーバーライドする独自の CSS ルールを提供することを期待しています。たとえば、コンシューマは次の CSS を記述して、アップロード セクション内の進行状況バーを緑色にすることができます。

#upload .progress-bar{
  border-color: green
}
#upload .progress-bar .fill {
  background-color: green;
}
ログイン後にコピー

このカスタマイズは期待どおりに機能します。

Streamlining Styles: CSS Variables for Maintainable Code

各消費者は同じアプローチを採用でき、一見すると堅実なソリューションのように見えます。

問題

ただし、このカスタマイズ方法にはいくつかの欠点があります

将来のバグ: 長期的には、プログレスバーコンポーネントは更新またはリファクタリングされる予定です。クラスの名前が変更されたり、タグの階層が変更されたりすると、カスタマイズは中断されます。
? 消費者の認知負荷: 私のコンポーネントを使用する開発者は、その HTML 構造を調べて、デフォルト値をオーバーライドするために必要な CSS ルールを決定する必要があります。
⚒️ 面倒なカスタマイズ コード: バーの色とその境界線の両方を変更するには、2 つの別々のルールを記述する必要があります。

もちろん、ProgressBar のような単純なケースでは大した問題ではありません。ただし、大規模な UI キット内のより複雑なコンポーネントは、特に多くの開発者によって使用される場合、重大な課題を引き起こす可能性があります。

解決策としての CSS 変数

カスタマイズを簡素化し、これらの問題を軽減するには、CSS 変数を活用できます。

私のサンプル コンポーネントでは、CSS ファイルのみに変更が加えられています

.progress-bar{
  --progress-bar-color: black;
  width: 200px;
  height: 20px;
  border: 1px solid var(--progress-bar-color);
}

.progress-bar .fill{
  height: 100%;
  background: var(--progress-bar-color);
}
ログイン後にコピー

色を設定するために変数 --progress-bar-color を宣言していることに注意してください。消費者は
と同じくらい簡単にコンポーネントをカスタマイズできるようになりました。

#upload .progress-bar{
  --progress-bar-color: green;
}
ログイン後にコピー

この新しいアプローチを使って、カスタマイズの問題のリストをもう一度見てみましょう

将来のバグ: プログレスバーの開発者として、必要に応じてクラス名と階層を変更できます。ただし、更新された要素に CSS 変数を正しく適用している限り、消費者が行った色のカスタマイズはそのまま残ります。
? 消費者の認知負荷: 消費者は、色をカスタマイズするためにコンポーネントのコードを調べる必要がなくなりました。 CSS 変数は「インターフェイス」または「抽象化」として機能するため、実装の詳細を深く掘り下げることなく、目的の色を簡単に設定できます。
⚒️ 面倒なカスタマイズ コード: 単一の CSS ルールで塗りつぶし要素と境界要素の両方をカスタマイズできるようになりました。

追加特典

色のカスタマイズに関しては、CSS 変数に依存すると、一般的な配色の適用が合理化されます。ページ全体にわたって変数を定義するシンプルな CSS ファイルを使用して、すべてのカラー設定を管理できます。

これで、ページ上のすべての色を 1 つの場所から制御できるようになりました。ページ全体の色を更新するには、CSS 変数定義を新しいセットに置き換えるだけです。

このアプローチにより、明るい/暗いテーマやユーザー定義の色の設定などの機能の実装も容易になります。

結果

? 保守性の向上: CSS 変数によるカスタマイズを採用することで、コードベースの保守性が向上し、将来の更新がより簡単になり、時間がかからなくなります。

? バグが発生しやすいコードの削減: コンポーネントの内部とそのカスタマイズ インターフェイスが明確に分離されているため、内部実装への変更がコンポーネントのカスタマイズ方法に影響を与えないため、バグのリスクが最小限に抑えられます。

? コードが理解しやすくなります: CSS 変数を使用すると、ソリューションがより直感的で理解しやすくなります。開発者は、複雑なコードや不透明なコードを深く掘り下げることなく、スタイルを変更する方法をすぐに理解できます。

♾️ フレームワークに依存しない: このアプローチはブラウザーの機能のみに依存するため、どこにでも適用できます。

以上がスタイルの合理化: 保守可能なコードのための CSS 変数の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Smart Forms Frameworkを使用してJavaScript連絡フォームを作成する Smart Forms Frameworkを使用してJavaScript連絡フォームを作成する Mar 07, 2025 am 11:33 AM

Smart Forms Frameworkを使用してJavaScript連絡フォームを作成する

WordPressブロックと要素にボックスシャドウを追加します WordPressブロックと要素にボックスシャドウを追加します Mar 09, 2025 pm 12:53 PM

WordPressブロックと要素にボックスシャドウを追加します

満足している属性を持つインラインテキストエディターを作成します 満足している属性を持つインラインテキストエディターを作成します Mar 02, 2025 am 09:03 AM

満足している属性を持つインラインテキストエディターを作成します

スクリーンリーダーの分解:アクセス可能なフォームとベストプラクティス スクリーンリーダーの分解:アクセス可能なフォームとベストプラクティス Mar 08, 2025 am 09:45 AM

スクリーンリーダーの分解:アクセス可能なフォームとベストプラクティス

GraphQLキャッシングの使用 GraphQLキャッシングの使用 Mar 19, 2025 am 09:36 AM

GraphQLキャッシングの使用

最初のカスタムSvelteトランジションを作成します 最初のカスタムSvelteトランジションを作成します Mar 15, 2025 am 11:08 AM

最初のカスタムSvelteトランジションを作成します

5つの最高のPHPフォームビルダー(および3つの無料スクリプト)を比較する 5つの最高のPHPフォームビルダー(および3つの無料スクリプト)を比較する Mar 04, 2025 am 10:22 AM

5つの最高のPHPフォームビルダー(および3つの無料スクリプト)を比較する

node.jsとexpressのMulterを使用してファイルアップロードします node.jsとexpressのMulterを使用してファイルアップロードします Mar 02, 2025 am 09:15 AM

node.jsとexpressのMulterを使用してファイルアップロードします

See all articles