На Главную

ul li баг в IE

January 23rd, 2008 by Yuriy Drozdov

Статью решил назвать "ul li баг в IE", хотя под это описание могут попасть много багов. Речь сегодня пойдет лишь об одном из них. А именно о непонятных отступах между элементами li. Рассмотрим следующий CSS и HTML код, который представляет из себя простое меню.

Сначала CSS:

CSS:
  1. #menu {
  2.      list-style: none;
  3.      padding:0;
  4.      margin:0;
  5.      font-family: Georgia;
  6.   }
  7.   #menu li {
  8.      width:100px;
  9.      border-bottom: solid 1px #ccc;
  10.      height:18px;
  11.   }
  12.   #menu a {
  13.      padding-left:5px;
  14.      display:block;
  15.      text-decoration: none;
  16.      font-size:14px;
  17.      line-height:18px;
  18.      color:#848388;
  19.      background-color:#e6e6e6;
  20.   }
  21.   #menu a:hover {
  22.     padding-left:10px;
  23.     color:#000;
  24.   }

HTML код выглядит так:

HTML:
  1. <ul id="menu">
  2.   <li><a href ="http://blog.sribna.com">Menu item #1</a></li>
  3.   <li><a href ="http://blog.sribna.com/avtoryi/">Menu item #2</a></li>
  4.   <li><a href ="http://blog.sribna.com/map/">Menu item #3</a></li>
  5. </ul>

В действии:

Теперь посмотрим данный код в браузере Firefox. Увидим:
ul li bug ie ff

В тоже время в браузере Internet Explorer 6.0 (в простонародье просто, IE) картина будет немного отличаться от увиденного нами в Firefox и, собственно, от ожидаемой.
ul li bug ie

Как это исправить? Оказывается, очень просто. Достаточно для li указать CSS свойство vertical-align: bottom. Изменим CSS код:

CSS:
  1. #menu {
  2.      list-style: none;
  3.      padding:0;
  4.      margin:0;
  5.      font-family: Georgia;
  6.   }
  7.   #menu li {
  8.      width:100px;
  9.      border-bottom: solid 1px #ccc;
  10.      height:18px;
  11.      vertical-align:bottom;
  12.   }
  13.   #menu a {
  14.      padding-left:5px;
  15.      display:block;
  16.      text-decoration: none;
  17.      font-size:14px;
  18.      line-height:18px;
  19.      color:#848388;
  20.      background-color:#e6e6e6;
  21.   }
  22.   #menu a:hover {
  23.     padding-left:10px;
  24.     color:#000;
  25.   }

Теперь меню будет выглядеть и в Firefox и в IE одинаково.
ul li bug ie ff

Автор: Yuriy Drozdov

Похожие статьи:

  • Нет похожих статей

RSS комментариев | Trackback URI

24 Комментариев

Comment by Dimox Subscribed to comments via email
2008-01-23 15:00:56

Отлично! Наконец-то нашлось достойное решение этого бага, а не то раньше приходилось использовать zoom:1 или задавать высоту. Спасибо! Будем использовать :)

Comment by Yuriy Drozdov
2008-01-23 15:09:49

Очень приятно получать похвалы от такого замечательного человека!

Comment by Dimox Subscribed to comments via email
2008-01-23 17:11:12

Ну прямо засмущали :) . Интересно, в чем это я такой замечательный?

Comment by Yuriy Drozdov
2008-01-24 14:34:19

Замечателен в ведении своего блога :)

(Вложеность комментариев заканчивается на этом уровне)
Comment by Dimox Subscribed to comments via email
2008-01-24 14:56:48

Вот как :) . Спасибо! Тоже очень приятно ;)

 
 
 
 
Comment by agat
2008-01-27 13:19:57

А чем плох zoom: 1; вынесенный в отдельный файл для включения hasLayout у IE?

Comment by Yuriy Drozdov
2008-01-29 14:59:28

Для меня интуитивно понятней все-таки vertical-align

 
 
 
Comment by Alex Subscribed to comments via email
2008-01-23 16:57:12

Спасибо, давно искал решение этой проблемы.

Comment by Yuriy Drozdov
2008-01-24 14:34:46

Рад, что пригодилось!

 
 
Comment by Nikita Subscribed to comments via email
2008-01-24 10:41:09

Хорошее, эфективное решение. Спасибо.

Я раньше использовал такой способ:

#menu li {
.....................
clear: left;
float: left;
}

Баг исправляется, но тогда следующему за ul элементу следует добавить «clear: left;»

:)

Comment by Yuriy Drozdov
2008-01-24 14:44:07

Да, я тоже как-то таким способом боролся :)

 
 
Comment by Aшветия Subscribed to comments via email
2008-01-25 05:18:20

Yuriy Drozdov
скажите пожалуйста, а с вордпрессом это будет работать? А то недавно с ужасом заметил, что некоторые мои блоги в IE ужасно криво изображаются…

Comment by Yuriy Drozdov
2008-01-25 14:39:39

не вижу причин, по которым бы css не работал в вордпрессе.

 
 
2008-02-07 17:35:27

[...] Как избавиться от отступов между элементами списка Прочитал что-то новое и полезное? Тогда подпишись [...]

 
Comment by Пинк
2008-02-07 18:58:16

IE это сплошной баг а не браузер :)

 
Comment by 4ebur
2008-02-09 17:18:37

попробуйте убрать переносы строк между элементами списка, и вы приятно удивитесь :) вот так:


Menu item #1
Menu item #2Menu item #3

Comment by Yuriy Drozdov
2008-02-09 20:44:49

Попробовал убрать переносы :) Отступ в IE 6 стал меньше, но он все равно есть :( Поэтому - это не выход.

 
 
Comment by ImNotDead_yet Subscribed to comments via email
2008-02-10 02:06:19

Вот более рациональное решение данной проблемы, парни, ибо баг давно известен))))

li {
display: inline;
}

Блин, да это и не баг вовсе…это недостаток css 2…как говориться ничего идеального не бывает! =)

Comment by Yuriy Drozdov
2008-02-10 18:26:28

Спасибо, за комментарий. Но display:inline, тут не подойдет, мне не нужно, чтобы элементы меню были в линию. Все-таки это баг IE 6, т.к. в остальных браузерах меню отображается корректно.

 
 
Comment by vrang
2008-02-13 13:24:53

Спасибо, пригодилось :)
У меня был способ:
ul li a{margin-top: -2px;}

Comment by Yuriy Drozdov
2008-02-13 13:30:11

В таком случае прийдется использовать условные комментарии для IE, чтобы это не отразилось на остальных браузерах

 
Comment by klay Subscribed to comments via email
2008-03-29 14:57:38

Я тоже использовал этот способ :)

 
 
Comment by Z-Den
2008-05-13 13:43:06

Я пишу списки в одну строку и никогда никаких переносов небыло.

Comment by Yuriy Drozdov
2008-05-13 13:54:08

А если список довольно большой?

 
 

Извините, комментарии закрыты.