使用Rails 3.1 資源管道進行條件CSS 載入
使用Rails 建立Web 應用程式時,可能需要有選擇地渲染CSS 檔案根據具體情況。這可以使用 Rails 3.1 資源管道來實現。
預設情況下,application.css 中的 *= require_tree 指令包含 asset/stylesheets 目錄中的所有 CSS 檔案。但是,如果您想有條件地渲染文件,這可能會導致不必要的結果。
一種解決方法是在 application.css 中手動指定每個 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
以及對應的manifest檔:
/** * application-all.css * *= require_self *= require_tree ./all */ /** * application-print.css * *= require_self *= require_tree ./print */ /** * application-ie.css * *= require_self *= require_tree ./ie */
最後,更新應用程式設計file:
<%= 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 )
請注意,使用此結構時,您需要確保CSS 檔案中的任何影像參考要么使用SASS 幫助程式image-url() 使用完整路徑進行限定,要么移動以遵循相同的目錄結構。
以上是如何使用 Rails 3.1 Asset Pipeline 實作條件 CSS 載入?的詳細內容。更多資訊請關注PHP中文網其他相關文章!