Я нахожусь в процессе создания моего первого сольного Rails-приложения с использованием Rails 3.1.rc5. Моя проблема в том, что я хочу, чтобы мой сайт отображал различные CSS-файлы условно. Я использую Blueprint CSS и пытаюсь сделать рендеры звездочек / рельсов screen.css
большую часть времени, print.css
только при печати и ie.css
только при доступе к сайту из Internet Explorer.
К сожалению, команда по умолчанию *= require_tree
в application.css
манифесте включает в себя все в assets/stylesheets
каталоге и приводит к неприятному беспорядку CSS. Мой текущий обходной путь - это своего рода метод грубой силы, в котором я задаю все индивидуально:
В application.css:
*= require_self
*= require home.css
...
*= require blueprint/screen.css
В моих таблицах стилей частично (хамл):
<!--[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"
Это работает, но это не особенно красиво. Я провел несколько часов в поисках, чтобы даже зайти так далеко, но я надеюсь, что есть какой-то более простой способ сделать это, который я только что пропустил. Если бы я мог даже выборочно отображать определенные каталоги (без включения подкаталогов), это сделало бы весь процесс намного менее жестким.
Спасибо!
.css
файлы, все ваши изображения будут повреждены. Например,background: url('image.png')
будет переведен на путь/assets/all/image.png
(обратите внимание на все на пути). Вместо этого работает:background: url('/assets/image.png)
. Если есть более простое решение, пожалуйста, опубликуйте его. Кроме использования SASS, у которого есть вспомогательные методы, которые, вероятно, разрешают путь правильно.Наткнулся сегодня на эту проблему.
Закончилось помещением всех специфичных для IE таблиц стилей в lib / assets / stylesheets и созданием одного файла манифеста для каждой версии IE. Затем в application.rb добавьте их в список вещей для прекомпиляции:
И в ваших макетах условно включите эти файлы манифеста, и все готово!
источник
Это довольно аккуратный способ сделать это. Я использую условные классы на html или modernizr. Смотрите эту статью для хорошего представления о том, что делает что. Modernizr-против-условных классов-на-HTML
источник