Web サイトのバックエンドからの入力に基づいて (PHP のような言語を介して) スタイルを動的に変更する方法を考えてみました。通常、私はスタイルシートを個別の CSS 拡張ファイルにしていますが、これらは PHP タグをネイティブに許可しません。結局のところ、すべてのスタイルを個別のファイルに含めるよりも、HTML ファイルに余分なマークアップを追加することになります。HTML<style>
タグの使用は、スタイルシートを使用するよりも遅い/効率が悪いのでしょうか?
2 に答える
CSS 2.1 の W3C 勧告には、適合性: 要件と推奨事項に関するセクションが含まれており、ファイル名拡張子については言及していませんが、次のように述べています。
3.4 text/css コンテンツ タイプ
別のファイルに存在する CSS スタイル シートは、エンコード情報を伴う一連のバイトとしてインターネット経由で送信されます。メッセージ エンティティと呼ばれる伝送の構造は、RFC 2045 および RFC 2616 で定義されています ( [RFC2045]および[RFC2616]を参照)。コンテンツ タイプが「text/css」のメッセージ エンティティは、独立した CSS ドキュメントを表します。「text/css」コンテンツ タイプは、RFC 2318 ( [RFC2318] ) によって登録されています。
text/css
したがって、ファイルがコンテンツ タイプで提供されている場合 (および@Fluffeh の回答に記載されているようにキャッシュの問題が解決されている場合)、問題は発生しません。PHP では、header()
出力が送信される前にを呼び出してコンテンツ タイプを設定できます。
<? header('Content-type: text/css'); ?>
CSS 内で多くのことを行いたいかどうかはよくわかりません。どちらかといえば、動的にやりすぎるのではなく、いくつかのクラスを追加することをお勧めします。どちらかといえば、PHP を使用して含める CSS シートを選択した方がよいかもしれませんが、それらは CSS のままにしておきます。同じファイルを使用し続ける場合、ユーザーはそれをキャッシュできます。より速く表示されます。ページごとにダウンロードされる 10k のスタイルシートよりも、一度に使用されてキャッシュされる 50k のスタイルシートを使用する方がよいでしょう。