通常、これはいくつかの異なる方法で処理されます。リクエストのプロパティ (現在のサイトなど) に基づいて、追加または異なる CSS ファイルを含めることができます。リクエストのプロパティに基づいて、さまざまなクラスを含む HTML を出力することもできます。一般的な手法は、特定の条件が満たされた場合などのルート要素にクラスを追加し、CSS を記述してそれらのクラスを利用することです。
たとえば、複数のサイトで同じコード ベースを使用している場合、サイト A では を使用し、<html class="site-a">
サイト B では<html class="site-b">
. 次に、サイトに基づいてスタイルを簡単にオーバーライドできます。
/* Default to white background */
body {
background: white;
}
/* Use a black background for Site A */
.site-a body {
background: black;
}
/* Use a blue background for Site B */
.site-b body {
background: blue;
}
もちろん、これは非常に単純な例です。サイト全体の場合、個別の CSS ファイルは、他のサイト固有のファイルと一緒に保存するため、より構造的に意味があります。
アプリケーションがフロント エンドのプレゼンテーション レイヤーとファイルを通常どのように編成するかについて、さらに学習することをお勧めします。たとえば、MVC はアプリケーションの一部を分離する方法です。プレゼンテーションのコンテキスト内では、UI の一部をカプセル化し、再利用可能な部分に変換するためのテンプレートやテーマなどの概念があります。
編集:私の答えで失われたのは、実際にCSSファイルを動的に生成することについて話さなかったということです。これは、CSS ファイルを動的に生成することは一般的ではなく、一般的に問題に対する適切な解決策ではないためです。コメンテーターが指摘したように、LESS や SASS などの CSS プリプロセッサがあり、これらは一般に CSS の内部問題 (主に冗長性) のいくつかを解決することを目的としています。プリプロセッサは CSS の問題を修正し、非常に便利ですが、あなたが尋ねたように聞こえる方法では使用されません。別の CSS ファイルまたは異なるクラスと ID をキーオフする CSS ファイルが解決策であり、異なるプロパティ値を持つ CSS ファイルまたはブロックを動的に作成するのではありません。