我在表容器中有不确定数量的表单元元素。
<div style="display:table;">
<div style="display:table-cell;"></div>
<div style="display:table-cell;"></div>
</div>
有没有一种纯粹的CSS方法可以使表格单元格具有相等的宽度,即使表格单元格中的内容大小不同也是如此?
谢谢。
编辑:具有最大宽度将需要知道我有多少个单元格?
我在表容器中有不确定数量的表单元元素。
<div style="display:table;">
<div style="display:table-cell;"></div>
<div style="display:table-cell;"></div>
</div>
有没有一种纯粹的CSS方法可以使表格单元格具有相等的宽度,即使表格单元格中的内容大小不同也是如此?
谢谢。
编辑:具有最大宽度将需要知道我有多少个单元格?
Answers:
这是工作单元数不确定的工作提琴:http : //jsfiddle.net/r9yrM/1/
您可以为每个父对象固定一个宽度div
(表格),否则它将像往常一样是100%。
诀窍是使用table-layout: fixed;
每个单元格上的一定宽度触发它,此处为2%。这将触发另一个表算法,浏览器在此努力尝试遵循指示的尺寸。
请使用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 */
}
编辑(2013):当心OS X上的Safari 6,它有table-layout: fixed;
错误(或者可能与其他浏览器不同,或者非常不同。我没有校对CSS2.1 REC表布局;))。为不同的结果做好准备。
div
s,display:table
就像它们是行一样,而不是display:tabl-row
某些预期的。这里的例子。
.my-cell { width: 100%; }; @media screen and (min-width:0\0) { .my-cell { width: 1%; } }
的CSS hack :CSS hack来自此处:stackoverflow.com/a/24321386/6962
的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;
}
只是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>
0px
不是有效单位。应该是0
。
更换
<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>
查看围绕使div像表一样执行的所有问题。他们必须添加table-xxx来模仿表格布局
支持表并在所有浏览器中都很好地工作。为什么要抛弃他们?他们必须模仿他们的事实证明他们做得很好。
在我看来,使用最好的工具来完成这项工作,如果您希望使用表格数据或类似于表格数据表的东西就可以使用。
我知道很晚的回复,但值得发言。
<nav>
,<ul>
等等
display: table-etc
(很自然)。我不会花很多时间在链接上模仿div或div模仿表,范围或输入:我只是使用CSS进行样式设计。最后,祝您好运IE9可以将display
属性的任何其他值应用于表,tr,td元素。
干得好:
http://jsfiddle.net/damsarabi/gwAdA/
您不能使用width:100px,因为显示是表格单元格。但是,您可以使用最大宽度:100像素。那么您的框将永远不会大于100px。但是您需要添加overflow:hidden,以确保该接触不流到其他单元格。您还可以添加空格:nowrap如果希望不增加高度。
可以通过将表格单元格样式设置为width: auto
,并将内容设置为空来完成此操作。现在,这些列的宽度相等,但是没有内容。
要将内容插入单元格,请添加div
带有CSS的:
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
您还需要添加 position: relative
到单元格。
现在,您可以将实际内容放入上述div中。