【发布时间】:2019-06-18 05:08:26
【问题描述】:
我正在尝试使用现代浏览器的 HTML/CSS 复制此设计:
它本质上是一个包含行和列的表格,这意味着如果行的名称单元格变大,那么所有行的名称单元格都应该变大。我看到了两种可能性:表格和 CSS 网格。
据我所见,表格中的行不够风格,例如它们不能采用边框半径,我没有尝试过盒子阴影。
如果我使用 CSS 网格,我可以设置单元格的样式以在最后模拟边框半径,但是由于第二个单元格的盒子阴影覆盖了第一个单元格,所以盒子阴影变得不可能。
我认为问题归结为具有表示样式的行但仍在每个行内的元素,单元格应与其他行中的宽度相同,以表示列。
在 CSS 中有什么方法可以实现这一点吗?
例如,这里尝试使用 HTML 的 table 来执行此操作,其中边距和边框半径无效:
table {
border-collapse: collapse;
}
tr {
background-color: grey;
border-radius: 8px;
margin: 10px;
}
<table>
<tr>
<td>Eva Lee</td>
<td>Call back</td>
<td>15/02/19</td>
</tr>
<tr>
<td>Evelyn Allen</td>
<td>Call back</td>
<td>14/01/19</td>
</tr>
<tr>
<td>Slawomir Pelikan</td>
<td>Voicemail</td>
<td>14/01/19</td>
</tr>
<tr>
<td>Christopher Walken</td>
<td>Voicemail</td>
<td>14/01/19</td>
</tr>
</table>
这是另一个尝试,使用display: table,其作用与table相同:
.table {
display: table;
border-collapse: collapse;
}
.row {
display: table-row;
background-color: grey;
border-radius: 8px;
margin: 10px;
}
.cell {
display: table-cell;
}
<div class="table">
<div class="row">
<div class="cell">Eva Lee</div>
<div class="cell">Call back</div>
<div class="cell">15/02/19</div>
</div>
<div class="row">
<div class="cell">Evelyn Allen</div>
<div class="cell">Call back</div>
<div class="cell">14/01/19</div>
</div>
<div class="row">
<div class="cell">Slawomir Pelikan</div>
<div class="cell">Voicemail</div>
<div class="cell">14/01/19</div>
</div>
<div class="row">
<div class="cell">Christopher Walken</div>
<div class="cell">Voicemail</div>
<div class="cell">14/01/19</div>
</div>
</div>
【问题讨论】:
-
使用
display:table,您将避免使用表格,并且仍然可以使用您想要的样式进行表格布局 -
@TemaniAfif:我认为这与表格有相同的缺点。我更新了问题以包含示例。
-
我已经编辑了我的答案以包含所需的样式
标签: css html-table css-grid