Obsługa IE8 dla CSS Media Query

Czy IE8 nie obsługuje następującego zapytania CSS media:

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

Jeśli nie, jaki jest alternatywny sposób pisania? To samo działa dobrze w Firefoksie.

Jakieś problemy z poniższym kodem?

@import url("desktop.css") screen; 
@import url("ipad.css") only screen and (device-width:768px);
Author: John Slegers, 2011-04-24

11 answers

Wersja Internet Explorera przed IE9 nie obsługuje zapytań o media .

Jeśli szukasz sposobu na poniżanie projektu dla użytkowników IE8, może okazać się pomocne w komentowaniu warunkowym IE. Za pomocą tego można określić arkusz stylów IE 8/7/6, który zapisuje poprzednie reguły.

Na przykład:

<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]-->

To nie pozwoli na responsywny projekt w IE8, ale może być prostszym i bardziej dostępnym rozwiązaniem niż użycie wtyczki JS.

 77
Author: Aaron,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-04 10:20:38

Css3-mediaqueries-js jest prawdopodobnie tym, czego szukasz: ten skrypt emuluje zapytania o media. Jednak (ze strony skryptu) "nie działa on na arkuszach stylów @imported (których i tak nie powinieneś używać ze względu na wydajność). Nie będzie też nasłuchiwać atrybutu media elementów <link> i <style>".

W tym samym duchu masz prostsze Odpowiedz.js, który włącza tylko zapytania o media min-width i max-width.

 341
Author: Knu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-08 12:50:48

Najlepsze rozwiązanie jakie znalazłem to odpowiedzJS szczególnie jeśli twoim głównym problemem jest upewnienie się, że Twój responsywny projekt działa w IE8. Jest dość lekki przy 1KB przy min / gzipped i możesz upewnić się, że tylko klienci IE8 go załadują:

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

Jest to również zalecana metoda, jeśli używasz bootstrap: http://getbootstrap.com/getting-started/#support-ie8-ie9

 50
Author: Brandon Pugh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-17 08:55:17

IE8 (i niższe wersje) i Firefox przed 3.5 nie obsługują zapytań o media. Safari 3.2 częściowo ją obsługuje.

Istnieją pewne obejścia, które używają JavaScript, aby dodać obsługę zapytań o media do tych przeglądarek. Spróbuj tych:

Media Queries wtyczka jQuery (dotyczy tylko szerokości max/min)

Css3-mediaqueries-js-biblioteka, która ma na celu dodanie obsługi zapytań o media do nie obsługujących przeglądarek

 14
Author: Faraz Kelhini,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-29 11:00:22

Wzięte z css3mediaqueries.strona projektu js.

Uwaga: nie działa na arkuszach stylów @ import 'ed(których i tak nie powinieneś używać ze względu na wydajność). Nie będzie też nasłuchiwać atrybutu media elementów <link> i <style>.

 11
Author: Bayo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-02 15:32:28

Łatwym sposobem użycia CSS3-mediaqueries-js jest dołączenie następujących elementów przed zamykającym tagiem:

<!-- 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]-->
 8
Author: Ben C,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-12 14:26:30

Edytowana odpowiedź: IE rozumie tylko ekran i drukowanie jako import nośników. Wszystkie inne CSS dostarczane wraz z instrukcją import powoduje, że IE8 ignoruje instrukcję import. Przeglądarka Geco jak safari czy mozilla nie miała tego problemu.

 6
Author: sra,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-14 20:45:03

Zapytania o Media nie są w ogóle obsługiwane w IE8 i poniżej.


Obejście oparte na Javascript

Aby dodać obsługę IE8, możesz użyć jednego z kilku rozwiązań JS. Na przykład, Odpowiedz można dodać obsługę zapytań o media dla IE8 tylko za pomocą następującego kodu:

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

CSS Mediaqueries to kolejna biblioteka, która robi to samo. Kod dodawania tej biblioteki do kodu HTML będzie identyczny :

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

Alternatywa

Jeśli nie podoba Ci się rozwiązanie oparte na JS, powinieneś również rozważyć dodanie arkusza stylów tylko dla IE

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

Uwaga:

Technicznie jest to jeszcze jedna alternatywa: użycie CSS hacks do celu IE
 6
Author: John Slegers,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-07 11:37:21

Przed Internet Explorerem 8 nie było obsługi zapytań o Media. Ale w zależności od przypadku możesz spróbować użyć komentarzy warunkowych, aby kierować tylko Internet Explorer 8 i niższe. Wystarczy użyć odpowiedniej architektury plików CSS.

 5
Author: user1105491,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-07 14:21:20
 4
Author: sgarbesi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-18 06:35:24

IE nie dodało obsługi zapytań o media aż do IE9. Więc z IE8 masz pecha.

 3
Author: Boris Zbarsky,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-24 14:01:11