CSS Ortam Sorgusu için IE8 desteği


178

IE8 aşağıdaki CSS medya sorgusunu desteklemiyor mu?

@import url("desktop.css") screen and (min-width: 768px);

Değilse, alternatif yazma yolu nedir? Aynı şey Firefox'ta da işe yarıyor.

Aşağıdaki kodla ilgili herhangi bir sorun mu var?

@import url("desktop.css") screen; 
@import url("ipad.css") only screen and (device-width:768px);

medya ile satır içi css denemek ve yanıt kullanmak isteyenler için (.min) .js yanıt bu durumda çalışmıyor - .css dosyaları için çalışıyor gibi görünüyor
NoWomenNoCry

Yanıtlar:


77

IE9'dan önceki Internet Explorer sürümleri medya sorgularını desteklemez .

Eğer bir yolu arıyorsanız aşağılayıcı IE8 kullanıcıları için tasarım, IE'nin koşullu yararlı yorumlama bulabilirsiniz. Bunu kullanarak, önceki kuralları yazan bir IE 8/7/6 belirli stil sayfası belirtebilirsiniz.

Örneğin:

<link rel="stylesheet" type="text/css" media="all" href="style.css"/>
<!--[if lt IE 9]>
<link rel="stylesheet" type="text/css" media="all" href="style-ie.css"/>
<![endif]-->

Bu, IE8'de duyarlı bir tasarıma izin vermez, ancak bir JS eklentisi kullanmaktan daha basit ve daha erişilebilir bir çözüm olabilir.


94
Koşullu stil sayfalarının duyarlı bir tasarım sorununu nasıl çözeceğini görmüyorum.
James Westgate

8
Bu çözüm IE'de duyarlı tasarımı nasıl çözeceğini anlamıyorum? Tarayıcıya bağlı olarak farklı stil sayfası yüklemenin, örneğin tarayıcı boyutuna bağlı olarak farklı stil özellikleri kullanmakla ilgisi yoktu.
Klikerko

13
Doğru cevap IE8 medya sorguları desteklemiyor olduğunu düşünüyorum . Bu cevap şöyle diyor ama ilk bakışta tamamen net değil. Ne olursa olsun, desteğe sahip olduğunu düşündüm ve bu cevap aksini anlamama yardımcı oldu.
Jason

54
Bu cevabın duyarlı bir çözüm olmadığı doğrudur ve bana göre büyük bir "AMA", aslında IE8'in iPad veya android tabletlerde kullanılmamasıdır. IE8, çoğunlukla 2003'ten 2009'a kadar olan XP / Vista PC'lerde, çoğunlukla 1024 piksel genişliğinde ekranlarda kullanılabilir. Windows Mobile IE6 altında ve Windows Pone IE9 + altında. Burada asıl soru, IE8'e yanıt vermenin gerçekten yararlı olup olmadığını kendinize sormaktır?
Gregoire D.

16
@GregoireD. Evet öyle. Çünkü web sayfalarını yakınlaştırmayla görüntüleyen insanlar var. Şirketimde, erişilebilirlik için sayfaları 800x600'de 4x yakınlaştırmadan beri formatlıyoruz. Bu, 400 piksel genişliğinde bir ekran yapar. Medya sorguları, seçtiğiniz tarayıcıya (ve IE8 dahil) rağmen, bunun için gerçekten yararlıdır.
Arkana

341

css3-mediaqueries-js muhtemelen aradığınız şeydir: bu komut dosyası medya sorgularını taklit eder. Ancak (komut dosyasının sitesinden) " @imported stil sayfalarında çalışmaz (performans nedenleriyle hiçbir şekilde kullanmamalısınız). Ayrıca <link>ve <style>öğelerinin medya özniteliğini dinlemez ".

Aynı şekilde , yalnızca ve medya sorgularını etkinleştiren daha basit Respond.js'ye sahipsiniz .min-widthmax-width


7
Bu neden cevap olarak etiketlenmiyor? Benim için mükemmel teşekkürler. Bu arada, genel gider nedeniyle içe aktarma css sorgularını kullanmamalısınız.
RichW

mükemmel, tam olarak ne aradığını!
13:13

Teşekkür ederim!! Bu yanıt ve response.js, ie8'deki medya sorguları için geçici bir çözüm yapmaya çalışırken bana tonlarca zaman kazandırdı.
Ingusmat

3
nevermind -> .js, .css dosyalarından sonra eklenmelidir ... xD
kaljak

4
Yanıt işe yaradı, ancak css3-mediaqueries çalışmadı. Respond kendi kendine yeten, ancak css3-mediaqueries kullanıcı aracısı algılama gibi bazı jQuery işlevlerine dayanıyor ve bu işlevlerin kullanımdan kaldırıldı ve kaldırıldı sanırım (bkz. JQuery docs).
Anton Boritskiy


14

IE8 (ve daha düşük sürümler) ve 3.5'ten önceki Firefox medya sorgusunu desteklemez. Safari 3.2 kısmen destekliyor.

Bu tarayıcılara medya sorgusu desteği eklemek için JavaScript kullanan bazı geçici çözümler vardır. Bunları dene:

Medya Sorguları jQuery eklentisi (yalnızca maksimum / dk genişlikle ilgilenir)

css3-mediaqueries-js - desteklemeyen tarayıcılara medya sorgusu desteği eklemeyi amaçlayan bir kütüphane


Tamam ... Sadece sayfama css3-mediaqueries.js ekledim ... IE'de çalışmıyor ... sadece ekran ve (cihaz genişliği) değil "@import url (" desktop.css ") medya sorgusuyla: 768px);" ekranın yanı sıra "@import url (" desktop.css ") ve (cihaz genişliği: 768px);"
testndtv

Ben de ek bir şey yapmak gerekir emin değilim ... script de dahil olmak üzere ..
testndtv

İçe aktarılan css üzerinde çalışmadığını lütfen unutmayın. şunu deneyin: <link rel = "stylesheet" type = "text / css" media = "ekran değil ve (aygıt genişliği: 768px)" href = "desktop.css" />
Faraz Kelhini

oh tamam .. anlıyorum. Aslında bu durumda, sayfada bir şey yapmadan bir şey arıyorum gibi bana yardımcı olmayabilir .. sadece harici CSS içinde ..
testndtv

Bu googletrunk css3 js betiği, harici olarak 'yalnızca ekran ve ....' gibi değil, yalnızca CSS stil sayfasında kullanılan ortam sorgusuyla çalıştığını belirtir. Bu, stil sayfalarınızı tek bir yerde birleştirmeniz gerektiği anlamına gelir ve içlerinde harici olarak yapmak istediğinizi yapın: @media screen ve (max-width: 980px) {
Capagris

11

Css3mediaqueries.js proje sayfasından alınmıştır.

Not: @ import'ed stil sayfalarında çalışmaz (performans nedenleriyle hiçbir şekilde kullanmamalısınız). Ayrıca <link>ve <style>öğelerinin medya özniteliğini dinlemez .


@ İmport'ed stil sayfalarında çalışmadığını söylemek için +1! WP çocuk temamda bana çok zaman kazandır.
Vinicius Garcia

8

Css3-mediaqueries-js kullanmanın kolay bir yolu, kapanış gövdesi etiketinden önce aşağıdakileri eklemektir:

<!-- css3-mediaqueries.js for IE less than 9 -->
<!--[if lt IE 9]>
<script 
   src="//css3-mediaqueries-js.googlecode.com/svn/trunk/css3-mediaqueries.js">
</script>
<![endif]-->

6

Düzenlenmiş cevap: IE, yalnızca ekran ve yazdırmayı içe aktarma ortamı olarak algılar. İçe aktarma ifadesiyle birlikte verilen diğer tüm CSS'ler IE8'in içe aktarma ifadesini yok saymasına neden olur. Safari veya Mozilla gibi Geco tarayıcılarında bu sorun yoktu.


Benim IE .. sadece 768px ekran cihazının dışında her şeyi seçmek istediğiniz IE..Basically I için başka alternatif yoktur uyumluluk mode..Also değil
testndtv

Ayrıca verdiğiniz bağlantıda tartışıldığı gibi, dokümanı <! DOCTYPE html PUBLIC "- // W3C // DTD XHTML 1.0 Transitional // EN" "olarak ayarlamayı denedim dtd "> ... Hala çalışmıyor ..
testndtv

1
Seni doğru anlasam shure değilim. Ekran çözünürlüğünü algılamak için JavaScript kullanabilir misiniz? CSS ile başka yol yok. Min'in geçersiz kılınmasına veya yok sayılmasına neden olan ile ilgili herhangi bir hata olmadığından emin misiniz? Bir ipucu, geliştirici araç çubuğudur. Bu sayede pagereloads olmadan canlı test yapabilirsiniz
sra

Acayip moda çok hızlı geçiyor, kontrol ettin mi? Bu da istenmeyen sonuçlara yol açabilir. Quirkmode dokümanınızın üzerine yazacaktır. Ayrıca, ilgili bir hata / sonuç olmadığından emin olmak için süper küçük bir projede ne istediğinizi test etmek de tanrı uygulamasıdır
sra

tamam .. İşte şimdi nasıl güncelledim ... common.css var ve içinde diyorum; ... @import url ("desktop.css") ekranı; @import url ("ipad.css") yalnızca ekranı ve (aygıt genişliği: 768 piksel); Bu yaklaşımın doğru olduğundan emin değil, ancak iPad'in yanı sıra masaüstü (IE / FF) için de çalışıyor. Bu yaklaşımla ilgili bir sorun olabilir mi?
testndtv

6

Medya sorguları IE8 ve önceki sürümlerde hiç desteklenmez.


Javascript tabanlı bir geçici çözüm

IE8 için destek eklemek için birkaç JS çözümünden birini kullanabilirsiniz. Örneğin, IE8 için medya sorgusu desteği eklemek üzere Yanıtla yalnızca aşağıdaki kodla eklenebilir:

<!--[if lt IE 9]>
<script 
   src="respond.min.js">
</script>
<![endif]-->

CSS Mediaqueries de aynı şeyi yapan başka bir kütüphanedir. Bu kütüphaneyi HTML'nize eklemek için kullanılan kod aynı olacaktır:

<!--[if lt IE 9]>
<script 
   src="css3-mediaqueries.js">
</script>
<![endif]-->

Alternatif

JS tabanlı bir çözümden hoşlanmıyorsanız, stilinizi IE <9'a özgü ayarladığınız bir IE <9 yalnızca stil sayfası eklemeyi de düşünmelisiniz. Bunun için kodunuza aşağıdaki HTML'yi eklemeniz gerekir:

<!--[if lt IE 9]>
<link rel="stylesheet" type="text/css" media="all" href="style-ielt9.css"/>
<![endif]-->

Not :

Teknik olarak bir alternatif daha var: IE <9'u hedeflemek için CSS kesmek kullanmak . Yalnızca IE <9 stil sayfası ile aynı etkiye sahiptir, ancak bunun için ayrı bir stil sayfasına ihtiyacınız yoktur. Gerçi, bu seçeneği önermiyorum, çünkü geçersiz CSS kodu üretiyorlar (CSS hack'lerinin kullanımının genellikle bugün kaşlarını çatmasına neden olan birkaç nedenden biri).


5

Internet Explorer 8'den önce Medya sorguları için destek yoktu. Ancak durumunuza bağlı olarak, yalnızca Internet Explorer 8 ve daha düşük sürümlerini hedeflemek için koşullu yorumları kullanmayı deneyebilirsiniz. Sadece uygun bir CSS dosya mimarisi kullanmanız gerekir.



3

IE, IE9'a kadar medya sorgu desteği eklemedi. Yani IE8 ile şansınız kalmadı.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.