Ошибка с блочными ссылками в IE6

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

В IE6 содержится некоторое количество ошибок, так или иначе связанных со свойством hasLayout. Непосредственно установить его нельзя, но можно сделать это косвенно. Так что большинство проблем связанных с этим свойством можно исправить его установкой, добавляя в стилях элементу zoom: 1 или height: 1%. Эти свойства кроме своих непосредственных характеристик устанавливают hasLayout.

Блочные ссылки это приём, который активно используется в различных меню, таким способом повышается полезная площадь ссылки. В IE6 если ссылка установлена блочной с помощью display: block она не занимает доступное пространство родителя и ссылкой является только текст. Эта ошибка проявляется в том случае, когда к родителю добавляется свойство float (пример 1).

Пример 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>
  <title>Блочные ссылки</title>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <style type="text/css">
    DIV { 
     background: #ffc; padding: 1%; text-align: center; 
     float: left; width: 98%;
    }
    DIV A { display: block; } 
   </style>
  </head>
 <body>
  <div><a href="#">Ссылка на всю ширину</a></div>
 </body>
</html>

Проблема решается установкой hasLayout блочным тегам <a>, например, через zoom.

<!--[if IE 6]>
 <style type="text/css">
  DIV A { zoom: 1; }
 </style>
<![endif]-->

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