Saya sedang dalam proses membangun aplikasi solo Rails pertama saya menggunakan Rails 3.1.rc5. Masalah saya adalah saya ingin situs saya me-render berbagai file CSS secara kondisional. Saya menggunakan Blueprint CSS dan saya mencoba membuat sprocket / rel membuat screen.css
sebagian besar waktu, print.css
hanya saat mencetak, dan ie.css
hanya ketika situs diakses dari Internet Explorer.
Sayangnya, *= require_tree
perintah default di application.css
manifes mencakup semua yang ada di assets/stylesheets
direktori dan menghasilkan campur aduk CSS yang tidak menyenangkan. Solusi saya saat ini adalah semacam metode brute-force di mana saya menentukan semuanya secara individual:
Dalam application.css:
*= require_self
*= require home.css
...
*= require blueprint/screen.css
Di sebagian stylesheet saya (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"
Ini bekerja tetapi tidak terlalu cantik. Saya telah melakukan beberapa jam pencarian bahkan untuk sejauh ini tetapi saya berharap ada beberapa cara yang lebih mudah untuk melakukannya yang baru saja saya lewatkan. Jika saya bahkan dapat secara selektif membuat direktori tertentu (tanpa termasuk subdirektori) itu akan membuat keseluruhan proses menjadi jauh lebih tidak kaku.
Terima kasih!
.css
file sederhana maka semua gambar Anda akan rusak. Misalnyabackground: url('image.png')
akan diterjemahkan ke jalan/assets/all/image.png
(pikiran semua yang ada di jalan). Sebaliknya ini bekerja:background: url('/assets/image.png)
. Jika ada solusi yang lebih mudah untuk ini, silakan posting. Selain menggunakan SASS yang memiliki metode pembantu yang mungkin menyelesaikan jalur dengan benar.Datangi masalah ini hari ini.
Akhirnya menempatkan semua stylesheet khusus IE ke lib / aset / stylesheet dan membuat satu file manifes per versi IE. Kemudian di application.rb tambahkan mereka ke daftar hal-hal yang harus dikompilasi:
Dan dalam tata letak Anda, sertakan file manifes secara kondisional dan Anda siap melakukannya!
sumber
Itu cara yang cukup rapi untuk melakukannya. Saya menggunakan kelas bersyarat pada html atau modernizr. Lihat artikel ini untuk representasi yang baik tentang apa yang melakukan apa. modernizr-vs-conditional-classes-on-html
sumber