ホームページ >ウェブフロントエンド >CSSチュートリアル >Sprockets を使用して Rails 3.1 に条件付き CSS インクルードを実装するにはどうすればよいですか?

Sprockets を使用して Rails 3.1 に条件付き CSS インクルードを実装するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-27 06:32:10924ブラウズ

How Can I Implement Conditional CSS Inclusion in Rails 3.1 Using Sprockets?

Sprockets を使用した Rails 3.1 への条件付きアセットの組み込み

CSS レンダリングを最適化する探求において、多くの開発者は CSS を選択的に組み込むという課題に苦労しています。特定の条件に基づいてファイルを作成します。この問題は、応答性の高いレイアウトを扱う場合、またはブラウザ間の互換性を確保する場合に関連します。

Rails 3.1 では、アセット パイプラインは静的アセットを管理するための強力なメカニズムを提供します。デフォルトでは、application.css の *= require_tree コマンドには、assets/stylesheets ディレクトリ内のすべてのファイルが含まれます。ただし、このアプローチは、CSS ファイルを条件付きで含める場合には十分ではない可能性があります。

伝統的だが不格好な解決策

回避策の 1 つは、図に示すように、各 CSS ファイルを手動で指定することです。

*= require_self
*= require home.css
...
*= require blueprint/screen.css

この方法は機能しますが、CSS ファイルの数が増えると実用的ではなくなります

個別のマニフェストと整理されたフォルダーの活用

より洗練されたソリューションには、アセット/スタイルシート フォルダーを再編成し、個別のマニフェスト ファイルを使用することが含まれます:

app/assets/stylesheets
+-- all
    +-- your_base_stylesheet.css
+-- print
    +-- blueprint
        +-- print.css
    +-- your_print_stylesheet.css
+-- ie
    +-- blueprint
        + ie.css
    +-- your_ie_hacks.css
+-- application-all.css
+-- application-print.css
+-- application-ie.css

各カテゴリは独自のマニフェストを取得しますfile:

/* application-all.css */
*= require_self
*= require_tree ./all

/* application-print.css */
*= require_self
*= require_tree ./print

/* application-ie.css */
*= require_self
*= require_tree ./ie

それに応じてアプリケーション レイアウト ファイルが更新されます:

<%= stylesheet_link_tag "application-all", :media => "all" %>
<%= stylesheet_link_tag "application-print", :media => "print" %>

<!--[if lte IE 8]>
    <%= stylesheet_link_tag "application-ie", :media => "all" %>
<![endif]-->

忘れずに config/environments/production.rb にマニフェスト ファイルを含めてください:

config.assets.precompile += %w( application-all.css application-print.css application-ie.css )

画像参照

この構造では、注意が必要です。画像参照を扱うときに必要です。考えられる解決策の 1 つは、それに応じて画像を移動し、CSS ファイルと一貫した構成を確保することです。あるいは、画像パスを修飾するか、画像 URL の SASS ヘルパーを利用することを選択することもできます。

以上がSprockets を使用して Rails 3.1 に条件付き CSS インクルードを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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