Estou no processo de construção do meu primeiro aplicativo solo do Rails usando o Rails 3.1.rc5. Meu problema é que eu quero que meu site processe os vários arquivos CSS condicionalmente. Estou usando o CSS do Blueprint e estou tentando fazer com que as rodas dentadas / trilhos sejam processadas na screen.css
maioria das vezes, print.css
apenas durante a impressão e ie.css
somente quando o site é acessado pelo Internet Explorer.
Infelizmente, o *= require_tree
comando padrão no application.css
manifesto inclui tudo no assets/stylesheets
diretório e resulta em uma desordem desagradável de CSS. Minha solução atual é uma espécie de método de força bruta em que eu especifico tudo individualmente:
No application.css:
*= require_self
*= require home.css
...
*= require blueprint/screen.css
Nas minhas folhas de estilo parciais (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"
Isso funciona, mas não é especialmente bonito. Fiz algumas horas de pesquisa para chegar até aqui, mas espero que exista uma maneira mais fácil de fazer isso que acabei de perder. Se eu pudesse renderizar seletivamente certos diretórios (sem incluir subdiretórios), isso tornaria todo o processo muito menos rígido.
Obrigado!
fonte
.css
arquivos simples , todas as suas imagens serão quebradas. Por exemplobackground: url('image.png')
, será traduzido para o caminho/assets/all/image.png
(lembre-se de tudo no caminho). Em vez isso funciona:background: url('/assets/image.png)
. Se houver uma solução mais fácil para isso, publique-a. Além de usar o SASS, que possui métodos auxiliares que provavelmente resolvem o caminho corretamente.Me deparei com esse problema hoje.
Acabou colocando todas as folhas de estilo específicas do IE em lib / assets / stylesheets e criando um arquivo de manifesto por versão do IE. Em application.rb, adicione-os à lista de itens a serem pré-compilados:
E em seus layouts, inclua condicionalmente esses arquivos de manifesto e você estará pronto!
fonte
Essa é uma maneira bem legal de fazer isso. Eu uso classes condicionais em html ou modernizr. Veja este artigo para uma boa representação do que faz o quê. modernizr-vs-condicional-classes-em-html
fonte