Условный CSS не загружается IE7 и IE8 - PullRequest
5 голосов
/ 18 мая 2011

У меня написано несколько CSS, которые сначала ориентируют мой сайт на Mobile, затем я использую CSS Media Queries, чтобы загрузить другую таблицу стилей для настольных браузеров. Я делаю это, поскольку существует очень много мобильных браузеров, которые не понимают CSS Media Queries, и более вероятно, что пользователи настольных компьютеров имеют современные браузеры, которые поддерживают это.

У меня есть следующий CSS, который работает во всех современных браузерах (IE9, Chrome, Firefox 3.6+, Safari 4 + 5):

Затем я понял, что IE7 и IE8 не поддерживают CSS Media Queries, поэтому вышеприведенное не сработает. Поэтому я добавил условное выражение, чтобы загрузить его:

<link rel="Stylesheet" type="text/css" href="/css/mobile.css" media="all"/>
<!-- [if lt IE 9]>
<link rel="Stylesheet" type="text/css" href="/css/desktop.css" media="all" />
<! [endif] -->  
<link rel="Stylesheet" type="text/css" href="/css/desktop.css" media="only screen and (min-width: 640px)" />

Однако, используя IE Tester и Browsershots, я подтвердил, что desktop.css не загружается в IE 7 и 8. Кажется, что эта таблица стилей полностью игнорируется.

Затем я попытался изменить условное выражение на <!-- [if IE 8]>, но это не имело никакого эффекта.

Наконец, я полностью удалил оператор условия, что привело к следующему коду:

<link rel="Stylesheet" type="text/css" href="/css/mobile.css" media="all"/>
<link rel="Stylesheet" type="text/css" href="/css/desktop.css" media="all" />

Эта последняя попытка приводит к загрузке моего desktop.css в IE7 и IE8. Так что это доказывает, что CSS в порядке. Похоже, мое условное утверждение не сработало.

Есть идеи, что я делаю не так?

1 Ответ

8 голосов
/ 18 мая 2011

Убрать пробелы.Это нарушает условный синтаксис .В противном случае IE воспринимает это как обычный комментарий.

<!--[if IE 8]>
...
<![endif]-->
...