Проблема со списками в IE
08 Mar, 2008Настоящие верстальщики должны слегка поморщиться вспомнив об этом баге.
Проблема с которой сталкивался, наверное, каждый. Самая банальная ситуация, вертикальное меню, и в дизайне есть хавер-эффект для пунктов меню (или другая причина сделать их блочными).
html:
- <ul>
- <li><a href="#"></a></li>
- </ul>
- li a{
- display:block;
- }
Отступы между элементами списка в IE
Примеры решений
Чтобы разобраться с этой проблемой раз и навсегда, я перебрал все возможные рабочие варианты, из них отобрал 7 наиболее удачных на мой взгляд. Ими и хочу пользоваться в будущем. Решения обычно сводятся к haslayout для LI, A. Или свойству vertical-align, или удалению пробелов, или изменению line-height.Из этих вариантов у меня в ИЕ6 рабочими оказались такие: в первой колонке 3, 4, 5, 7, 8. Во второй: все кроме нулевого.
Колонки отличаются только размером line-height. Для первой это 1, для второй 1.4.
Значения 1.13-1.14 — являются граничными.
Резюме, или как с этим воевать
После кучи экспериментов пришел к тому же выводу, что и Bruno Fassino, глюки с непонятными отступами условно можно разделить на 3 категории:отступы | чем вызвано | чем лечить |
---|---|---|
Большие отступы | a{display:block} | удалить пробелы в коде или haslayout для a (этот баг исправлен в IE7) |
Маленькие отступы | li{haslayout} | li{vertical-align:top} |
Маленькие отступы (второй вид) | маленький line-height + haslayout для li или а | увеличить line-height |
IE8 (не повторять на живых проектах!)
Буквально сегодня, с подачи Thierry Koblentz, узнал хак для IE8. Это скорее любопытный факт, нежели то, что нужно использовать. Тем не менее этот CSS увидит только IE8:/*/ #nav a {position:relative;} /**/Фиксит проблему с отступами между элементами списка в ИЕ8. Исправить на стороне броузера, наверное, было очень трудно. Будем надеяться, что баг с отступами в списках исправят одновременно с этим хаком. Я лично отсабмитил эту проблему разработчикам.
Ссылки
- Примеры списков с разными решениями для ИЕ (смотреть имеет смысл только в ИЕ)
- Примеры бага с блочными ссылками в списках, и очень хорошо задокументированный эксперимент. Фактически вдохновивший меня на его повторение.
Если у вас есть чем дополнить, буду рад выслушать и проапдейтить пост!
P.S.: под haslayout я имею ввиду width, height, zoom, position. Любой из этих параметров является триггером этого свойства для блока.
display
иvisibility
). Ничего не помогало, пока не вспомнил про vertical-align. Наблюдал в IE6-7 (в 8RC1 — все в норме).