问题描述
我有以下代码:
<div class="table">
<div class="row">
<div class="cell">Cell</div>
<div class="cell">Cell</div>
</div>
<div class="row">
<div class="cell colspan2">Cell</div>
</div>
</div>
<style>
.table {
display: table;
}
.row {
display: table-row;
}
.cell {
display: table-cell;
}
.colspan2 {
/* What to do here? */
}
</style>
很简单如何使用 display: table-cell
为元素添加 colspan(或相当于 colspan)?
最佳解决方案
据我所知,缺少 colspan /rowspan 只是 display:table
的局限性之一。看到这个帖子
http://www.onenaught.com/posts/201/use-css-displaytable-for-layout
次佳解决方案
由于 OP 没有明确规定该解决方案必须是纯 CSS,所以我会固执地扔在我今天想到的解决方法中,特别是因为它比表格中的表更加优雅。
示例等于< table> 每行和两行有两个单元格,第二行中的单元格与 colspan = “2” 是一个 td 。
我已经用 Iceweasel 20,Firefox 23 和 IE 10 进行了测试。
CSS:
div.table
{
display:table;
width:100px;
background-color:lightblue;
border-collapse:collapse;
border:1px solid red;
}
div.row
{
display:table-row;
}
div.cell
{
display:table-cell;
border:1px solid red;
}
div.colspan,div.colspan+div.cell
{
border:0;
}
div.colspan>div
{
width:1px;
}
div.colspan>div>div
{
position:relative;
width:99px;
overflow:hidden;
}
HTML:
<div class="table">
<div class="row">
<div class="cell">cell 1</div>
<div class="cell">cell 2</div>
</div>
<div class="row">
<div class="cell colspan">
<div><div>
cell 3
</div></div>
</div>
<div class="cell"></div>
</div>
</div>
实时动作 (演示)here 。
编辑:我将代码更改为 printer-friendly,默认情况下离开 background-colors 。我也创造了 rowspan-demo,灵感来自迟到的答案。
第三种解决方案
一种在 Chrome 30 中适用于我的更简单的解决方案:
Colspan 可以使用 display: table
而不是 display: table-row
进行仿真:
.table {
display: block;
}
.row {
display: table;
width: 100%;
}
.cell {
display: table-cell;
}
.row.colspan2 {/* You'll have to add the 'colspan2' class to the row, and remove the unused <div class=cell> inside it */
display: block;
}
唯一的缺陷是,堆叠行的单元格不会垂直对齐,因为它们来自不同的表。
第四种方案
只需使用 table
。
当用于布局时,桌子只会皱起眉头。
这似乎是表格数据 (行/列的数据) 。因此,我建议使用 table
。
有关更多信息,请参阅 this question 的答案:
creating the same thing with divs as tables
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。