PS: 下文所说的窄距设备可以泛指移动端设备

在窄距设备中,表格很难搞,水平方向上没有足够的空间来舒适地摆放元素。因此可以在窄距设备上将表格变成两行,将一行的行头和单元格变成列。

下面来实现这个功能

首先一个普通的表格

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
< table>
<thead>
<tr>
<th>Country</th>
<th>Desktop</th>
<th>Tablet</th>
<th>Mobile</th>
</tr>
</thead>
<tbody>
<tr>
<td data-th="Country">India</td>
<td data-th="Desktop">32%</td>
<td data-th="Table">1%</td>
<td data-th="Mobile">67%</td>
</tr>
<tr>
<td data-th="Country">GB</td>
<td data-th="Desktop">69%</td>
<td data-th="Table">13%</td>
<td data-th="Mobile">18%</td>
</tr>
</tbody>
</table>

它在桌面浏览器上是这样展示的

普通情况下表格样式

下面利用css3的媒体查询功能来实现表格的自适应。

这里我们设置的断点是600px

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
@media (max-width: 600px) {
table thead {
display: none;
}
table td {
display: block;
position: relative;
padding-left: 50%;
padding-bottom: 15px;
text-align: left;
}
table td:before {
content: attr(data-th) " :";
display: inline-block;
position: absolute;
top: 0;
left: 0;
bottom: 0;
width: 33%;
max-height: 100%;
}
}

它在窄距设备是这样展示的

修改后表格样式

这样就比较完整的展示的表格的内容。

当然这只是表格自适应的其中一种办法,还有更多的办法哦O(∩_∩)O~