Heim >Web-Frontend >CSS-Tutorial >Wie kann ich bedingtes CSS-Laden mit der Rails 3.1 Asset Pipeline implementieren?

Wie kann ich bedingtes CSS-Laden mit der Rails 3.1 Asset Pipeline implementieren?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-27 05:04:13744Durchsuche

How Can I Implement Conditional CSS Loading with the Rails 3.1 Asset Pipeline?

Verwenden der Rails 3.1 Asset Pipeline für bedingtes Laden von CSS

Beim Erstellen von Webanwendungen mit Rails kann es notwendig sein, CSS-Dateien selektiv zu rendern basierend auf spezifischen Bedingungen. Dies kann mithilfe der Asset-Pipeline von Rails 3.1 erreicht werden.

Standardmäßig schließt der Befehl *= require_tree in application.css alle CSS-Dateien im Verzeichnis asset/stylesheets ein. Dies kann jedoch zu unerwünschten Ergebnissen führen, wenn Sie Dateien bedingt rendern möchten.

Eine Problemumgehung besteht darin, jede CSS-Datei einzeln manuell in application.css anzugeben und einen Teil zu verwenden, um die verbleibenden Dateien bedingt einzuschließen. Diese Methode kann jedoch umständlich und unflexibel werden.

Eine effizientere Lösung besteht darin, mehrere Manifestdateien zu verwenden, um CSS-Dateien zu trennen. Indem Sie sie in relevanten Verzeichnissen organisieren und separate Manifestdateien für jedes Verzeichnis erstellen, können Sie Dateien basierend auf bestimmten Bedingungen einfach ein- oder ausschließen.

Hier ist ein Beispiel für die Strukturierung des Asset-Verzeichnisses:

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

Und die entsprechenden Manifestdateien:

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

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

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

Aktualisieren Sie abschließend das Anwendungslayout Datei:

<%= 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\]-->

Vergessen Sie nicht, die neuen Manifestdateien in config/environments/produktion.rb vorzukompilieren:

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

Beachten Sie, dass Sie bei Verwendung dieser Struktur Folgendes sicherstellen müssen Stellen Sie sicher, dass alle Bildverweise in Ihren CSS-Dateien entweder mithilfe des SASS-Hilfsprogramms image-url() mit dem vollständigen Pfad qualifiziert oder so verschoben werden, dass sie derselben Verzeichnisstruktur folgen.

Das obige ist der detaillierte Inhalt vonWie kann ich bedingtes CSS-Laden mit der Rails 3.1 Asset Pipeline implementieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn