Хаки для IE6

Влад Мержевич

Браузер Internet Explorer 6 (IE6) содержит большое количество ошибок при работе с CSS и, несмотря на это, окончательно еще не сошел в утиль. Ошибки порой совершенно нелогичны и для их преодоления браузеру требуется «подкладывать» персональный стиль. Поэтому для разработчиков, которые по тем или иным причинам верстают под IE6 нужно знать, как это сделать. Способов несколько и они различаются подходом, а также насколько соответствуют спецификации CSS.

Использование !important

При добавлении !important к значению стилевого свойства его важность повышается. Если переопределить значение того же свойства без !important, оно будет игнорироваться браузерами. Но только не в Intenet Explorer версии 6 и ниже.

Пример 1

XHTML 1.0CSS 2.1IE 6IE 7+CrOpSaFx

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
   <title>Хаки</title>
   <style type="text/css">
    .hack {
     background: orange !important; /* Оранжевый цвет */
     background: green; /* Зеленый цвет */
     padding: 10px; color: #fff;
    }
   </style>
  </head> 
  <body> 
   <div class="hack">Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diem nonummy
   nibh euismod tincidunt ut lacreet dolore magna aliguam erat volutpat.</div>
  </body>
</html>

В данном примере IE6 цвет фона блока покажет зеленым, остальные браузеры — оранжевым.

Символ подчеркивания перед свойством

Если перед стилевым свойством добавить символ подчеркивания (_) или дефис (-), то оно будет пониматься только браузером Internet Explorer до 6 версии включительно. Этот хак приводит к невалидному коду CSS.

Пример 2

XHTML 1.0CSS 2.1IE 6IE 7+CrOpSaFx

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>Хаки</title>
  <style type="text/css">
   .hack {
    background: orange; /* Оранжевый цвет */
    _background: green; /* Зеленый цвет */
    color: #fff; padding: 10px;
   }
  </style>
 </head> 
 <body> 
   <div class="hack">
     Lorem ipsum dolor sit amet, consectetuer adipiscing elit, 
     sed diem nonummy nibh euismod tincidunt ut lacreet dolore magna 
     aliguam erat volutpat.
   </div>
 </body>
</html>

В данном примере в браузере Internet Explorer 6 цвет фона блока будет зеленым, в остальных браузерах — оранжевым.

Комбинация * html

Для обозначения любого элемента в CSS используется символ звездочки (*), который называется универсальным селектором. Его понимают все браузеры, но вот сочетание * HTML — только один Internet Explorer до 6 версии включительно. Добавляя эту комбинацию перед селектором, получим стиль, который работает только в одном браузере.

Пример 3

XHTML 1.0CSS 2.1IE 6IE 7+Cr 11OpSaFx

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>Хаки</title>
  <style type="text/css">
    * HTML DIV P {
      color: olive; /* Для IE6 */
    }
    DIV P {
      color: red; /* Для остальных браузеров */
    }
  </style>
 </head>
 <body>
  <div><p>Lorem ipsum dolor sit amet...</p></div>
 </body>
</html>

В данном примере в браузере Internet Explorer версии 6 и ниже текст отображается оливковым цветом, а в остальных браузерах — красным.

Также для изменения стиля только под Internet Explorer применяются условные комментарии, о которых речь пойдет в другой статье.

CSS по теме

Не выкладывайте свой код напрямую в комментариях, он отображается некорректно. Воспользуйтесь сервисом cssdeck.com или jsfiddle.net, сохраните код и в комментариях дайте на него ссылку. Так и результат сразу увидят.