Estoy en el proceso de construir mi primera aplicación Rails solo usando Rails 3.1.rc5. Mi problema es que quiero que mi sitio procese los diversos archivos CSS condicionalmente. Estoy usando Blueprint CSS e intento que las ruedas dentadas / rieles se procesen la screen.css
mayor parte del tiempo, print.css
solo durante la impresión y ie.css
solo cuando se accede al sitio desde Internet Explorer.
Desafortunadamente, el *= require_tree
comando predeterminado en el application.css
manifiesto incluye todo en el assets/stylesheets
directorio y da como resultado una mezcla CSS desagradable. Mi solución actual es una especie de método de fuerza bruta donde especifico todo individualmente:
En application.css:
*= require_self
*= require home.css
...
*= require blueprint/screen.css
En mis hojas de estilo parciales (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"
Esto funciona pero no es especialmente bonito. He hecho algunas horas de búsqueda para llegar tan lejos, pero espero que haya una manera más fácil de hacerlo que acabo de perder. Si incluso pudiera renderizar selectivamente ciertos directorios (sin incluir subdirectorios), todo el proceso sería mucho menos rígido.
¡Gracias!
.css
archivos simples , todas tus imágenes se romperán. Por ejemplobackground: url('image.png')
, será traducido al camino/assets/all/image.png
(cuidado con todo en el camino). En cambio, esta funciona:background: url('/assets/image.png)
. Si hay una solución más fácil para esto, publíquela. Aparte de usar SASS que tiene métodos de ayuda que probablemente resuelvan la ruta correctamente.Encontré este problema hoy.
Terminé poniendo todas las hojas de estilo específicas de IE en lib / assets / stylesheets y creando un archivo de manifiesto por versión de IE. Luego, en application.rb, agréguelos a la lista de cosas para precompilar:
¡Y en sus diseños, incluya condicionalmente esos archivos de manifiesto y listo!
fuente
Esa es una forma bastante ordenada de hacerlo. Yo uso clases condicionales en html o modernizr. Vea este artículo para una buena representación sobre qué hace qué. modernizr-vs-conditional-classes-on-html
fuente