【发布时间】:2019-10-16 15:12:10
【问题描述】:
我必须只使用 CSS 重新排列这样的表格。
<head>
<style>
table, th, td {border: 1px solid black; border-collapse: collapse; }
th, td {padding: 5px;}
th {text-align: left;}
</style>
</head>
<body>
<table>
<tr>
<th>H1</th>
<th>H2</th>
<th>H3</th>
<th>H4</th>
<th>H5</th>
<th>H6</th>
<th>H7</th>
<th>H8</th>
<th>H9</th>
<th>H10</th>
</tr>
<tr>
<td class="col-A1">A1</td>
<td class="col-A2">A2</td>
<td class="col-A3">A3</td>
<td class="col-A4">A4</td>
<td class="col-A5">A5</td>
<td class="col-A6">A6</td>
<td class="col-A7">A7</td>
<td class="col-A8">A8</td>
<td class="col-A9">A9</td>
<td class="col-A10">A10</td>
</tr>
<tr>
<td class="col-B1">B1</td>
<td class="col-B2">B2</td>
<td class="col-B3">B3</td>
<td class="col-B4">B4</td>
<td class="col-B5">B5</td>
<td class="col-B6">B6</td>
<td class="col-B7">B7</td>
<td class="col-B8">B8</td>
<td class="col-B9">B9</td>
<td class="col-B10">B10</td>
</tr>
</table>
</body>
我怎样才能得到这样的布局? 我最初的想法是使用 CSS flexbox,但我不知道如何将行重新排列到这种布局中,尤其是 A2 到 A7 部分,其中有两列。
因此,正如 cmets 对原始帖子的建议,我会选择 CSS 网格布局。
【问题讨论】:
-
是否允许更改 HTML 结构?
-
不,我不是,只有 CSS。
-
这将是 CSS Grid 的一个很好的候选,但它肯定需要一些 HTML 更改来制作嵌套网格。我并不是说这是不可能的,但我想不出一个不需要更多容器用于“A”部分的 flexbox 解决方案。为什么不能编辑 HTML?是任务吗?如果是这样,这是一个艰难的。我想您绝对可以定位每个单独的单元格
-
我同意@RutherfordWonkington,它是一个理想的网格布局。如果没有绝对定位,在
table上获取此布局不是前进的方向。 -
这对于 css 表来说是不可能的,即使你重新排列行,因为
col-A9和col-A10每个占据 2.5 列......使用 flexbox 你会发现困难 跨越行(例如col-A2)并且只有嵌套更多容器才能解决......但是使用css网格这实际上很容易......