CSS-таблица с ячейкой равной ширины
У меня есть неопределенное количество элементов таблицы в контейнере таблицы.
<div style="display:table;">
<div style="display:table-cell;"></div>
<div style="display:table-cell;"></div>
</div>
Есть ли чистый способ CSS, чтобы заставить таблицы-ячейки быть одинаковой шириной, даже если они имеют в них контент различного размера?
Спасибо.
Изменить: наличие max-width повлечет за собой знание того, сколько ячеек у вас есть?
Ответы
Ответ 1
Вот рабочая скрипка с неопределенным количеством ячеек: http://jsfiddle.net/r9yrM/1/
Вы можете исправить ширину для каждого родителя div
(таблица), иначе она будет на 100%, как обычно.
Трюк заключается в использовании table-layout: fixed;
и некоторой ширины для каждой ячейки, чтобы вызвать его, здесь 2%. Это вызовет другой стол algorightm, тот, где браузеры очень стараются уважать указанные размеры.
Пожалуйста, проверьте Chrome (и IE8 - при необходимости). Это нормально с недавним Safari, но я не могу вспомнить совместимость этого трюка с ними.
CSS (соответствующие инструкции):
div {
display: table;
width: 250px;
table-layout: fixed;
}
div > div {
display: table-cell;
width: 2%; /* or 100% according to OP comment. See edit about Safari 6 below */
}
EDIT (2013): Остерегайтесь Safari 6 в OS X, у него есть table-layout: fixed;
неправильный (или, может быть, просто отличный, очень отличный от других браузеров). Я не проверял CSS2.1., Будьте готовы к разным результатам.
Ответ 2
HTML
<div class="table">
<div class="table_cell">Cell-1</div>
<div class="table_cell">Cell-2 Cell-2 Cell-2 Cell-2Cell-2 Cell-2</div>
<div class="table_cell">Cell-3Cell-3 Cell-3Cell-3 Cell-3Cell-3</div>
<div class="table_cell">Cell-4Cell-4Cell-4 Cell-4Cell-4Cell-4 Cell-4Cell-4Cell-4Cell-4</div>
</div>
CSS
.table{
display:table;
width:100%;
table-layout:fixed;
}
.table_cell{
display:table-cell;
width:100px;
border:solid black 1px;
}
DEMO.
Ответ 3
Просто используя max-width: 0
в элементе display: table-cell
, работал у меня:
.table {
display: table;
width: 100%;
}
.table-cell {
display: table-cell;
max-width: 0px;
border: 1px solid gray;
}
<div class="table">
<div class="table-cell">short</div>
<div class="table-cell">loooooong</div>
<div class="table-cell">Veeeeeeery loooooong</div>
</div>
Ответ 4
Заменить
<div style="display:table;">
<div style="display:table-cell;"></div>
<div style="display:table-cell;"></div>
</div>
с
<table>
<tr><td>content cell1</td></tr>
<tr><td>content cell1</td></tr>
</table>
Посмотрите на все проблемы, связанные с попыткой заставить divs работать как таблицы. Им нужно было добавить table-xxx для имитации табличных макетов
Таблицы поддерживаются и работают очень хорошо во всех браузерах. Зачем бросать их? факт, что они должны были имитировать их, - доказательство того, что они выполняли свою работу и хорошо.
По-моему, используйте лучший инструмент для задания, и если вы хотите работать с табличными данными или что-то похожее на табличные таблицы данных.
Очень Поздний ответ, который я знаю, но заслуживаю внимания.
Ответ 5
Здесь вы идете:
http://jsfiddle.net/damsarabi/gwAdA/
Вы не можете использовать width: 100px, потому что дисплей является табличной ячейкой. Однако вы можете использовать Max-width: 100px. то ваша коробка никогда не будет больше 100px. но вам нужно добавить переполнение: скрытый, чтобы убедиться, что этот контект не истекает в другие ячейки. вы также можете добавить белое пространство: nowrap, если вы хотите, чтобы высота не увеличивалась.
Ответ 6
Это можно сделать, установив стиль table-cell в width: auto
, а содержимое пустым. Столбцы теперь равны по ширине, но не содержат содержимого.
Чтобы вставить содержимое в ячейку, добавьте div
с помощью css:
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
Вам также нужно добавить position: relative
в ячейки.
Теперь вы можете поместить фактический контент в div, о котором говорилось выше.
https://jsfiddle.net/vensdvvb/