Сегодня в NETTUTS появилась коротенький совет для верстальщиков – как различать в CSS IE6 и IE7 с помощью всего двух символов * и _. Это самый просто хак для ИЕ. Надеюсь понятно что эти два правила нужно располагать именно в таком порядке – сначала правило с “*”, потом “_”.
#someElement {
background: red; /* нормальные браузеры */
*background: green; /* IE7 и ниже */
_background: yellow; /* только IE6 */
}
Однако всё это не способствует прохождению валидации файла стилей. Честно говоря в своих немногочисленных работах никогда не пользуюсь хаками – либо использую условные комментарии (для IE), либо “не судьба” – точнее приходится решать проблемы другими способами или отказываться от чего-то.
Условные комментарии для IE стали доступны с 5-й версии Internet Explorer и поддерживаются только Internet Explorer-ом.
<!--[if IE 6]>
Код только для IE6 - любой html, css, javacsript
<![endif]-->
Официальная документация – условные комментарии на MSDN.
Синтаксис условных комментариев
| Элемент | Пример | Комментарий |
|---|---|---|
| ! | [if !(IE 6)] | Оператор НЕ (NOT). Небольшое обновление – раньше тут в качестве примера было указано следующее [if !IE] – что в общем-то глупо писать, поскольку кроме IE условные комментарии больше никто не поддерживает. |
| lt | [if lt IE 5.5] | Оператор “меньше чем” (less-than). Возвращает true если первый аргумент меньше чем второй. [if lt IE 5] писать абсолютно бессмысленно – код в такой секции не выполнится никем и никогда – условные комментарии работают только с версии IE5. |
| lte | [if lte IE 6] | Оператор “меньше или равно” (less-than or equal). Возвращает true если первый аргумент меньше или равен второму. |
| gt | [if gt IE 5] | Оператор “больше чем” (greater-than). Возвращает true если первый аргумент больше второго. |
| gte | [if gte IE 7] | Оператор “больше или равно ” (greater-than or equal). Возвращает true если первый аргумент больше или равен второму. |
| ( ) | [if !(IE 7)] | Подвыражение. Используется для создания сложных выражений. |
| & | [if (gt IE 5)&(lt IE 7)] | Оператор И (AND). Возвращает true, если все подвыражения равны true |
| | | [if (IE 6)|(IE 7)] | Оператор ИЛИ (OR). Возвращает true, если любое из подвыражений равно true. |

