【发布时间】:2020-07-02 04:23:52
【问题描述】:
我知道这种“将子 div 扩展到父高度”的东西已经过时了,今天我们可以使用 flexbox 和网格来解决问题。但我的问题有点不同。我需要具有动态宽度值的表格格式,具体取决于内容。所以每一行都应该根据那里的内容来决定它的高度和每一列的宽度。列数和行数也是可变的。
这就是为什么我不能使用 flexbox 或基于网格的布局。它们不依赖于彼此的宽度或高度,仅依赖于自己孩子的高度/宽度。
另外:表格里面还有一些其他的标签。不仅仅是文字!
因此我不能使用普通的<table> 标签。表格单元格标签内不允许使用其他html标签。
所以我决定使用<div>标签并通过css将它们设置为表格。
.table {
background: #bbbb;
display: table;
}
.table-row {
display: table-row;
}
.table-cell {
border: 1px solid black;
display: table-cell;
}
.content {
background: #f005;
}
<div class="table">
<div class="table-row">
<div class="table-cell"><div class="content">1 / 1</div></div>
<div class="table-cell"><div class="content">1 / 2</div></div>
<div class="table-cell"><div class="content">1 / 3</div></div>
</div>
<div class="table-row">
<div class="table-cell"><div class="content">2 / 1</div></div>
<div class="table-cell">
<div class="content">very long content <br /> with line break and all the stuff</div>
</div>
<div class="table-cell"><div class="content">2 / 3</div></div>
</div>
<div class="table-row">
<div class="table-cell"><div class="content">Another very long <br /> line <br /> breaking <br /> content and ither <span>html tags</span></div></div>
<div class="table-cell"><div class="content">3 / 2</div></div>
<div class="table-cell"><div class="content">3 / 3</div></div>
</div>
</div >
现在的挑战是将所有<div class="content"> 标签扩展到父/表格单元格的完整宽度和高度。
注意:我不能在这里使用 flexbox,因为 display: 已经用于将 div 显示为表格单元格。
【问题讨论】: