2012-01-18 2 views
0

Я хочу создать меню, используя списки (ul и li).
Что касается того, что использование свойства table-cell не является перекрестным браузером, как стилизовать li s, чтобы фиксировать с помощью подобных ячеек таблицы, подходящих для его контейнера?Как установить LI, чтобы вести себя как ячейка таблицы

----------------------------------------------------------------------------- 
|  Item 1  |  Item 2  |  Item 3  |  Item 7  | 
----------------------------------------------------------------------------- 

Примечание:
1. Я вынужден использовать список и не могу использовать таблицу
2. Мы не знаем, сколько элементов существует
3. Я хочу сделать это без JavaScript
4. Мы не знаем, как ширина контейнера
5. родитель ul должна быть шириной только 100%, не используйте статическую ширину пожалуйста

+0

Почему вы вынуждены не использовать таблицу? –

+0

Это менеджерский заказ – Omid

ответ

2

семантически, меню представляет собой список, поэтому использование <li> является более подходящим, чем <table>. WC3 имеет достойный план, как это сделать here. Чтобы зафиксировать ширину, установите как ширины <ul>, так и <li> s.

4
ul li {float: left; width: 100px;} 

Что-то вроде этого?

Или так: http://jsfiddle.net/qLxSh/

+1

Это определенно, как вы это делаете. Один вопрос заключается в том, что если вы плаваете в div и вы не знаете, сколько у вас есть, вам может понадобиться запустить вторую строку. Если вы делаете это динамически с помощью PHP, вы можете очистить строку после заполнения определенного количества ячеек. Если нет, вы можете выбрать селектор CSS для очистки каждой строки после их заполнения. – ckaufman

+0

Я не хочу начинать второй ряд – Omid

+0

Вам не нужно это делать. Мой пример показывает, что произойдет, если у вас будет много элементов - они перейдут на следующую строку, если будет недостаточно места. – giker

1

Я боюсь, что слишком много донгов, чтобы сделать это столь же гибким, как и должно быть.

1
ul li { float: left; } 

или

ul li { display: inline-block; } 

Обратите внимание, что "дисплей: встроенный блок;" не работает на IE6 и IE7. В этих браузерах, вы должны заменить

ul li { display: inline-block; } 

с

ul li { display: inline; zoom: 1; } 
0

Вот лучший способ, с помощью опции отображения CSS: jsFiddle demo

Смежные вопросы