2010-11-05 4 views
6

Я хочу создать следующую таблицу, как элемент в моей странице: alt textCSS таблицы как стиль

я использовал, чтобы сделать это с помощью <table>...<table> тегов, но теперь я переключение на все мои сайты в CSS и я м с использованием DIV и т. д. Я хотел бы знать, что такое «лучший» способ достичь такого типа элемента (это все еще тег <table>?). Я не хочу создавать только 3 столбца и отдельные элементы в том же столбце с <BR />, так как я хотел бы контролировать расстояние между элементами в одном столбце (например, между Item1 и Item4).

Спасибо!

Joel

+7

CSS для макетов, табличный содержание должно/может по-прежнему отображаться в таблицах – Ross

+7

Использование таблиц для таблиц глупыми. – Petah

+0

Вы всегда можете подождать CSS3! http://www.interoperabilitybridges.com/css3-grid-align/ http://www.w3.org/TR/css3-grid/ –

ответ

1

Использование таблиц для создания вашего макет обычно неодобрительно. Использование divs вместе с CSS для таблиц данные также неодобрительны. Лучший способ - по вашему вопросу - использовать столы по этому поводу.

Если, конечно, элементы, представленные на вашем изображении, не являются табличными данными, а контейнерами/ящиками, которые, в свою очередь, будут содержать соответствующие данные. В этом случае я, вероятно, рекомендую CSS.

9

использование display:table, display:table-row, display:table-cell

#table {display:table;} 
 
.row {display:table-row; } 
 
.cell{display:table-cell;}
<div id="table"> 
 
    <div class="row"> 
 
    <div class="cell">Item 1</div> 
 
    <div class="cell">Item 2</div> 
 
    <div class="cell">Item 3</div> 
 
    </div> 
 
    <div class="row"> 
 
    <div class="cell">Item 4</div> 
 
    <div class="cell">Item 5</div> 
 
    <div class="cell">Item 6</div> 
 
    </div> 
 
    <div class="row"> 
 
    <div class="cell">Item 7</div> 
 
    <div class="cell">Item 8</div> 
 
    <div class="cell">Item 9</div> 
 
    </div> 
 
</div>

Живой пример http://jsbin.com/awagu4

... но я предлагаю вам использовать table HTML тег, если вам нужна таблица. По этой причине существуют, а затем вы можете изменить его с помощью css. В любом случае оба решения имеют одинаковый результат.

+4

, если вы используете 'div', это ваша цель/требование, а затем пойдите для этого. но я бы никогда не рекомендовал использовать div для создания табличного дизайна, когда '

' уже доступен в 'HTML '. –

+0

@ Zain Shaikh, я согласен, я прокомментировал это также после моего решения, но это то, что он спросил. – Sotiris

+0

Это была моя первая мысль, я просто боялся, что использование DIVs может быть синтаксически неправильным:/ – Joel

3

вы можете achive тот же эффект с использованием маркированного списка вложенных в сНу элемента

<div class="wrapper"> 
    <ul class="itemHolder"> 
     <li><div>item1</div></li> 
     <li><div>item2</div></li> 
     <li><div>item3</div></li> 
     <li><div>item4</div></li> 
     <li><div>item5</div></li> 
     <li><div>item6</div></li> 
     <li><div>item7</div></li> 
     <li><div>item8</div></li> 
     <li><div>item9</div></li> 
    </ul> 
</div> 

это будет ваш CSS

.wrapper{ 
    width:600px; 
} 
.itemHolder{ 
    margin:0; 
    padding:0; 
} 

.itemHolder li{ 
    float:left; 
    margin-bottom:10px; 
} 
.itemHolder li div{ 
    width:200px; 
} 

вы можете увидеть его жить here

+1

Легко самый эффективный способ, хотя вы можете просто поместить «width: 200px» на li и избавиться от divs – wheresrhys

+0

да или избавиться от UL/LI и просто сделать это с помощью DIV и «float: left; display: block;» – BerggreenDK

+0

@wheresrhys Правда это, но его безопаснее работать с элементами divs, по крайней мере для меня :) @BerggreenDK лучше всего сохранить их, а затем просто позволить им плавать вокруг :) – cac

0

Я лично предпочитаю использовать дизайн-сетку при выполнении макетов.

На данный момент, я бы рекомендовал эту «рамки»: http://960.gs/ Имя 960 является потому, что его дизайн, который имеет 960 пикселей в ширину, так что для просмотра на большинстве компьютеров, которая имеет минимум 1024 пикселей в ширину. 960 - это большое количество для разделения на столбцы и т. Д., Но посмотрите на веб-сайт для получения дополнительной информации.

0

Решая, какой метод следует использовать:

Если это чисто вопрос планировки и элементы не имеют никакого смыслового вопроса отношения я бы использовать в качестве контейнера, строки и позиции элементов.В этом случае используйте что-то вроде Sotiris' answer.

Если ваши предметы семантически связаны, посмотрите на кого они связаны. Если они семантически в группах, т. Е. Таблица использует таблицу, особенно если будет заголовок для каждого столбца. Если это всего лишь группа связанных элементов, используйте структуру списка, такую ​​как cac's answer (это, вероятно, потеряло бы внутренние div).

Есть также некоторые интересные варианты подхода к списку.

Удаляя обертку или ширину из обертки в ответе Cac, вы можете создать макет, который настраивает его самостоятельно на разную ширину браузера, поэтому для более широких экранов вы получите меньше строк элементов, так как вы получите больше элементов в строке.

Также не игнорируйте список определений, если это лучший семантический вариант для unordered list.

1

Вы также можете достичь этого с помощью flexbox.

.items { 
    width: 100%; 
    display: flex; 
    flex-direction: row; 
    flex-wrap: wrap; 
} 

Это создаст гибкую таблицу, подобную структуре.

0

Flex подходит для этого.

ul { 
 
    display: flex; 
 
    flex-flow: row wrap; 
 
} 
 

 
li { 
 
    flex-basis: 40%; 
 
}
<ul> 
 
    <li> item 1</li> 
 
    <li> item 2</li> 
 
    <li> item 3 </li> 
 
    <li> item 4 </li> 
 
</ul>

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