Saya memiliki proyek warisan dan ada tempat-tempat di mana itu berantakan. Ini salah satunya. Saya hanya perlu menargetkan IE (versi apa pun).
#nav li {
float: left;
height: 54px;
background: #4f5151;
display: table;
border-left: 1px solid grey;
}
Agar lebih jelas: Di dalam stylesheet tertanam dan tanpa menambahkan ID atau kelas ke tag di html, saya perlu menerapkan gaya perbatasan saja jika pengguna menggunakan IE. Bagaimana saya bisa melakukan ini?
Sunting: menemukan solusi untuk Firefox, mengedit pertanyaan untuk mencerminkan ini.
Jawaban:
Internet Explorer 9 dan lebih rendah: Anda dapat menggunakan komentar bersyarat untuk memuat stylesheet khusus IE untuk versi apa pun (atau kombinasi versi) yang ingin Anda targetkan secara spesifik. Seperti di bawah ini menggunakan stylesheet eksternal.
Namun, mulai versi 10, komentar bersyarat tidak lagi didukung di IE.
Internet Explorer 10 & 11: Buat kueri media menggunakan -ms-high-contrast, di mana Anda menempatkan IE 10 dan 11-gaya CSS spesifik Anda. Karena -ms-kontras tinggi adalah Microsoft-spesifik (dan hanya tersedia di IE 10+), itu hanya akan diuraikan di Internet Explorer 10 dan lebih besar.
Microsoft Edge 12: Dapat menggunakan aturan @supports Berikut adalah tautan dengan semua info tentang aturan ini
Deteksi aturan IE8 sebaris
Saya memiliki 1 opsi lagi tetapi hanya mendeteksi IE8 dan versi di bawahnya.
Seperti yang Anda tentukan untuk stylesheet yang diembed. Saya pikir Anda perlu menggunakan kueri media dan komentar kondisi untuk versi di bawah ini.
sumber
-ms-high-contrast:active
mempengaruhi Edge jika sistem menggunakan mode kontras tinggi.@supports
solusi adalah benar-benar hebat: fitur deteksi adalah cara untuk pergi. Saya ingin menargetkan Edge karena kurangnya dukunganwidth: max-content
:@supports not (width: max-content)
apakah itu rapi, dan akan diabaikan dengan baik ketika Edge akhirnya mendukungnya. (Itu harus terjadi pada musim gugur 2019, karena itu kemudian harus beralih ke Chromium untuk rendering.)Berikut adalah kumpulan kueri media yang akan memungkinkan Anda melakukannya untuk semua versi Internet Explorer (dari IE6 ke IE11 +), Firefox, Chrome & Safari (EDIT: Opera juga ditambahkan).
IE 6
atau
IE 7
atau
IE 6 dan 7
atau
atau
IE 6, 7 dan 8
IE 8
atau
Mode Standar IE 8
IE 8,9 dan 10
Hanya IE 9
IE 9 ke atas
IE 9 dan 10
Hanya IE 10
IE 10 ke atas
atau
IE 11 (dan di atas ..)
Firefox (versi apa saja)
Firefox (Hanya Quantum / Stylo)
Firefox Legacy (pre-Stylo)
Webkit (Chrome & Safari, versi apa pun)
Google Chrome (29+)
Safari (7.1+)
Safari (dari 6.1 hingga 10.0)
Safari (10.1+)
Opera (12+)
Opera (11 dan lebih rendah)
Untuk info lebih lanjut atau pertanyaan media tambahan, kunjungi situs web browserhacks.com dan / atau periksa posting blog ini yang saya tulis tentang topik ini.
sumber
Saat menggunakan
SASS
saya menggunakan 2 berikut@media queries
untuk menargetkan IE 6-10 & EDGE.http://keithclark.co.uk/articles/moving-ie-specific-css-into-media-blocks/
Edit
Saya juga menargetkan versi EDGE nanti menggunakan
@support queries
(tambahkan sebanyak yang Anda butuhkan)https://jeffclayton.wordpress.com/2015/04/07/css-hacks-for-windows-10-and-spartan-browser-preview/
sumber
Untuk menargetkan IE hanya di stylesheet saya, saya menggunakan Sass Mixin ini:
sumber
Solusi lain yang berfungsi untuk styling spesifik IE adalah
Dan kemudian pemilih Anda
sumber
Setelah mengalami masalah dengan situs yang terputus pada Edge saat menggunakan Mode Kontras Tinggi, saya menemukan karya berikut oleh Jeff Clayton:
https://browserstrangeness.github.io/css_hacks.html
Ini permintaan media yang gila dan aneh, tetapi itu lebih mudah digunakan di Sass:
Target ini mengharapkan versi IE untuk IE8.
Atau Anda dapat menggunakan:
Yang menargetkan IE8-11, tetapi juga memicu FireFox 1.x (yang untuk kasus penggunaan saya, tidak masalah).
Saat ini saya sedang menguji dengan dukungan cetak, dan ini sepertinya berfungsi dengan baik:
sumber