IE7 думает, что это IE8?

#css #internet-explorer #internet-explorer-7 #conditional #conditional-comments

#css #internet-explorer #internet-explorer-7 #условные операторы #условные комментарии

Вопрос:

Я пытаюсь использовать условные комментарии, чтобы заставить IE7 вести себя как настоящий браузер.

Но последние несколько дней IE7 игнорирует ссылающиеся на него условные обозначения и отвечает только на условные обозначения, предназначенные для IE8.

Мой заголовок имеет:

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1    /DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=8" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  

Условия следующие:

 <!--[if IE 7]>
<link rel="stylesheet" href="/css/ieHacks.css" type="text/css" media="screen" />
<![endif]-->
  

Который НЕ распознается ни в IE7, ни в 8. Но если это

 <!--[if IE 8]>
<link rel="stylesheet" href="/css/ieHacks.css" type="text/css" media="screen" />
<![endif]-->
  

Затем таблица стилей отображается как в IE7, так и в IE8.

Есть идеи? Я в тупике.

Комментарии:

1. Звучит как странная проблема. У вас есть живой пример?

2. У меня нет IE для тестирования, но вы пробовали удалять пробел между IE и 8 ? (Конечно, это чистое предположение и дикая догадка.)

3. @David Thomas: Как ни странно, пробел должен быть там.

4. @BoltClock, спасибо! (Я предполагал так, но не был уверен …) =)

5. Могу я спросить, как вы тестируете разные версии? Отдельные компьютеры, виртуальные машины, средства разработки IETester или IE8 или 9 переключились в режим совместимости / старые режимы документирования.

Ответ №1:

У меня были проблемы с тем, что IE8 не читал таблицу стилей IE, поэтому теперь я предпочитаю добавить класс для IE в мою основную таблицу стилей. В любом случае, проще поддерживать код с одной таблицей стилей. Пол Айриш объясняет это лучше, но в основном вы ставите это:

 <!--[if IE]> <html class="ie"> <![endif]-->
  

где была ваша ссылка на условную таблицу стилей, а затем в вашем css вы добавляете класс ie для каждого изменения, специфичного для IE, которое вам нужно. Итак, допустим, ваше заполнение обычно составляет 6 пикселей, но для IE вам нужно, чтобы оно было 4 пикселя, ваш css для этого div будет выглядеть следующим образом:

 .someClass {padding: 6px;}
.ie .someClass {padding: 4px;}
  

Комментарии:

1. Я бы добавил класс к body элементу.

Ответ №2:

Вы также могли бы использовать CSS-хак для таргетинга на IE7 только из вашей основной таблицы стилей:

 *:first-child html { /* Apply IE7-only CSS here */ }