CSS против IE6/7/8

Сегодня в 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.

Leave a Reply

Your email address will not be published. Required fields are marked *