Je suis en train de créer ma première application Rails solo en utilisant Rails 3.1.rc5. Mon problème est que je souhaite que mon site affiche les différents fichiers CSS de manière conditionnelle. J'utilise Blueprint CSS et j'essaie de rendre les pignons / rails la screen.css
plupart du temps, print.css
uniquement lors de l'impression et ie.css
uniquement lorsque le site est accessible depuis Internet Explorer.
Malheureusement, la *= require_tree
commande par défaut dans le application.css
manifeste inclut tout ce qui se trouve dans le assets/stylesheets
répertoire et entraîne un désagréable fouillis CSS. Ma solution de contournement actuelle est une sorte de méthode de force brute où je spécifie tout individuellement:
Dans application.css:
*= require_self
*= require home.css
...
*= require blueprint/screen.css
Dans mes feuilles de style partielles (haml):
<!--[if lt IE 9]
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
![endif]-->
= stylesheet_link_tag "application"
= stylesheet_link_tag 'blueprint/print', media: 'print'
<!--[if lt IE8]]
= stylesheet_link_tag 'blueprint/ie'
![endif]-->
= javascript_include_tag "application"
Cela fonctionne mais ce n'est pas particulièrement joli. J'ai fait quelques heures de recherche pour aller aussi loin, mais j'espère qu'il existe un moyen plus simple de le faire que je viens de manquer. Si je pouvais même rendre sélectivement certains répertoires (sans inclure de sous-répertoires), cela rendrait l'ensemble du processus beaucoup moins rigide.
Merci!
.css
fichiers simples , toutes vos images seront brisées. Par exemple,background: url('image.png')
sera traduit sur le chemin/assets/all/image.png
(attention à tout le chemin). Au lieu de cela cela fonctionne:background: url('/assets/image.png)
. S'il existe une solution plus simple à ce problème, veuillez la poster. Autre que l'utilisation de SASS qui a des méthodes d'aide qui résolvent probablement le chemin correctement.Je suis tombé sur ce problème aujourd'hui.
Fini par mettre toutes les feuilles de style spécifiques à IE dans lib / assets / stylesheets et en créant un fichier manifeste par version d'IE. Puis dans application.rb ajoutez-les à la liste des choses à précompiler:
Et dans vos mises en page, incluez conditionnellement ces fichiers manifestes et vous êtes prêt à partir!
la source
C'est une manière assez soignée de le faire. J'utilise des classes conditionnelles sur html ou modernizr. Voir cet article pour une bonne représentation de ce qui fait quoi. modernizr-vs-classes-conditionnelles-sur-html
la source