如何使一个网格布局与未知数量的列,每一列有相同的大小
How to make a grid layout with unknown number of columns and each column has equal size?
我需要制作一行列,其中列数可以从5到10,并且每列的宽度应该相等,我如何通过仅使用css而不使用<table>
来实现这一点?
现在我正在使用一个bootstrap,但它只有固定的大小。我通过谷歌找到的所有解决方案现在都在使用<table>
元素,但据我所知,这是错误的方法,我已经听过很多次不要使用<table>
作为模板。
我想到的最优雅的解决方案到目前为止(尚未测试)是通过javascript
动态计算宽度并在飞行中更改它,是否有另一种更好的方法?
谢谢。
使用flexbox.
父元素的CSS中应该有display: flex
。它的每一个子元素(列)都应该有flex: 1
(这允许元素尽可能地缩小和增长,而不管内容是什么)。
下面是一个例子:
.container {
display: flex;
}
.column {
flex: 1;
border: 1px solid #000;
}
<div class="container">
<div class="column">Contents don't matter for width.</div>
<div class="column"></div>
<div class="column"></div>
<div class="column"></div>
<div class="column"></div>
<div class="column"></div>
<div class="column"></div>
<div class="column"></div>
</div>
可以使用display,以兼容所有浏览器:
CSS: .table {
display: table;
width: 100%;
}
.table .row {
display: table-row;
}
.table .row .cell {
display: table-cell;
border: 1px solid red;
}
HTML <div class="table">
<div class="row">
<div class="cell"> </div>
<div class="cell"> </div>
</div>
</div>
<div class="table">
<div class="row">
<div class="cell"> </div>
<div class="cell"> </div>
<div class="cell"> </div>
</div>
</div>
<div class="table">
<div class="row">
<div class="cell"> </div>
<div class="cell"> </div>
<div class="cell"> </div>
<div class="cell"> </div>
</div>
</div>
测试它的jsfiddle: http://jsfiddle.net/4be2dhb2
祝你好运!
相关文章:
- 柱状图后面的一列
- 数据表通过分析一列的值对其进行排序
- Datatables-如何在未显示所有列的情况下禁用表中最后一列的排序
- 获取表中每行的一列的内容,然后循环访问每个内容
- 对象数组-与其他列数据相比,增加一列
- 在最初的查询/表格绘制中只提取谷歌电子表格的一列
- jQuery Datatables:单击一列时对另一列进行排序
- 我的砖石图像只显示在一列中
- 删除“;使用javascript从pentaho中的一列中选择“[”
- 使用 Javascript 在一列中更改属性内容
- jquery插件 - 已选择 - 多项选择不在一行中列出,而是列在一列中
- 单击包含按钮的最后一列时获取表的第一列值
- 如何隐藏除最后一列之外的数据网格列
- 剑道网格:如何从一列中远程过滤 2 个以上的值
- 剑道网格 - 如何使网格默认按一列显示分组数据 (init)
- 如何更改网格中一列的字体颜色
- 网格过滤只过滤最后一列
- 如何使一个网格布局与未知数量的列,每一列有相同的大小
- 剑道网格:一列两个字段
- Extjs网格面板一列背景另一列值的颜色变化