Вёрстка « float + background не работают вместе (css)

Решил сделать вертикальное меню на базе ul/li. Теги li можно поместить горизонтально как минимум двумя простыми способами:

/** * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann * (http://qbnz.com/highlighter/ and http://geshi.org/) */ .css.geshi_code {font-family:monospace;} .css.geshi_code .imp {font-weight: bold; color: red;} .css.geshi_code .kw1 {color: #000000; font-weight: bold;} .css.geshi_code .kw2 {color: #993333;} .css.geshi_code .co1 {color: #a1a100;} .css.geshi_code .co2 {color: #ff0000; font-style: italic;} .css.geshi_code .coMULTI {color: #808080; font-style: italic;} .css.geshi_code .es0 {color: #000099; font-weight: bold;} .css.geshi_code .br0 {color: #00AA00;} .css.geshi_code .sy0 {color: #00AA00;} .css.geshi_code .st0 {color: #ff0000;} .css.geshi_code .nu0 {color: #cc66cc;} .css.geshi_code .re0 {color: #cc00cc;} .css.geshi_code .re1 {color: #6666ff;} .css.geshi_code .re2 {color: #3333ff;} .css.geshi_code .re3 {color: #933;} .css.geshi_code span.xtra { display:block; }
#top li {display:inline}


Этот вариант не подошёл из-за добавления Лисой (и возможно другими браузерами) пробелов между элементами.

/** * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann * (http://qbnz.com/highlighter/ and http://geshi.org/) */ .css.geshi_code {font-family:monospace;} .css.geshi_code .imp {font-weight: bold; color: red;} .css.geshi_code .kw1 {color: #000000; font-weight: bold;} .css.geshi_code .kw2 {color: #993333;} .css.geshi_code .co1 {color: #a1a100;} .css.geshi_code .co2 {color: #ff0000; font-style: italic;} .css.geshi_code .coMULTI {color: #808080; font-style: italic;} .css.geshi_code .es0 {color: #000099; font-weight: bold;} .css.geshi_code .br0 {color: #00AA00;} .css.geshi_code .sy0 {color: #00AA00;} .css.geshi_code .st0 {color: #ff0000;} .css.geshi_code .nu0 {color: #cc66cc;} .css.geshi_code .re0 {color: #cc00cc;} .css.geshi_code .re1 {color: #6666ff;} .css.geshi_code .re2 {color: #3333ff;} .css.geshi_code .re3 {color: #933;} .css.geshi_code span.xtra { display:block; }
#top li {float:left}


Этот вариант пробую применить, но когда я включаю это свойство — перестаёт учитываться фон родительского элемента (background: #353535;): jsfiddle.net/DDW8d/4/

Почему?

1 ответов


Назначая элементам списка свойство float: left, Вы выносите их из общего потока документа. В таком случае нужно использовать еще и clear. Это либо лишний несемантичный элемент со свойством clear:both, либо, например, Micro Clearfix Hack.

А вообще - лучше горизонтальное меню делать через display:inline-block, не забывая об IE6-7 (display:inline плюс какой-нибудь триггер hasLayout, обычно zoom:1)

Ваш пример с дописанным display:inline-block: http://jsfiddle.net/DDW8d/5/

upd: А насчет пробелов между элементами в браузере - ну так уберите пробелы между элементами в коде, и всё будет ок. Или, если уж так лень, и читабельность кода для Вас превыше всего, добавляйте margin-left:-.3em. Топик на эту тему.