html - 多列时表换行
问题描述
我们有一个表,列由数据填充,每个表都不同,我们不知道我们将拥有多少列。
当有太多列时,表格会变长。因此,当列数超过 4 时,表应该开始一个新行。每行的标题也应复制。
这张图片应该清楚地表明:
注意:表格没有固定宽度,宽度取决于您使用的设备,因此宽度应为 100%,而不是固定像素宽度。
所有列都具有相同的高度和宽度,但不是固定值,这些也取决于所使用设备的宽度。
当红色块要换行时,所有行都应该堆叠在一起。可以这么说,这 3 行应该被视为 1 行。
解决方案
它仍然有一些错误小心
溢出时需要使用 JS/jQuery 创建新标头
像这样!
//Put to document ready
checktable();
$(window).on('resize', function() {
checktable();
});
function checktable() {
if ($(window).width() < $(document).width()) {
if ($('tr.extended').length < 1) {
$('tr').not('.extended').each(function(i, e) {
$(document.createElement('tr'))
.addClass('extended')
.append($(e).html())
.appendTo('#table');
$(e).children('td').each(function(j, ele) {
var eot = +$(ele).offset().left +
+$(ele).width();
if ($(window).width() < eot) {
$(ele).hide();
$('tr.extended').eq(i)
.children('td').eq(j)
.show();
} else {
$(ele).show();
$('tr.extended').eq(i)
.children('td').eq(j)
.hide();
}
});
});
}
} else {
$('td').not('.extended').show();
$('.extended').remove();
}
}
td,
th {
white-space: nowrap;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table id="table" border=1>
<tr>
<th>
head
</th>
<td>
so long data 1
</td>
<td>
so long data 2
</td>
<td>
so long data 3
</td>
<td>
so long data 4
</td>
<td>
so long data 5
</td>
<td>
so long data 6
</td>
</tr>
<tr>
<th>
head2
</th>
<td>
much long data 1
</td>
<td>
much long data 2
</td>
<td>
much long data 3
</td>
<td>
much long data 4
</td>
<td>
much long data 5
</td>
</tr>
</table>
推荐阅读
- java - 如何将字符串添加到文件的第 n 行
- date - 如何在datastage中将天转换为年月和日?
- django - 在 Django 中未经授权的 Rest_framework_swagger
- android - 有没有更好的方法来调试 gradle build
- python - 如何量化 pandas 中的 bin 迁移?
- javascript - 从导出菜单打印高图时隐藏滚动条
- r - 如何将矩阵的每个位置与R中的变量值匹配
- java - oracle java 8 安装程序通过 dockerfile 在 ubuntu 18.04 上失败
- powershell - 处理包含带括号的路径的变量
- c++ - 链接时部分垃圾收集对链接时优化有用吗?