是否有一种方法可以将水平滚动条添加到HTML表中?我实际上需要它是可滚动的,垂直和水平取决于表如何增长,但我不能得到任何滚动条出现。
当前回答
这是对Serge Stroobandt的答案的改进,效果非常好。它解决了表没有填充整个页面宽度的问题,如果它有较少的列。
<style>
.table_wrapper{
display: block;
overflow-x: auto;
white-space: nowrap;
}
</style>
<div class="table_wrapper">
<table>
...
</table>
</div>
其他回答
我也遇到了同样的问题。我发现了下面的解决方案,它只在Chrome v31中测试过:
table {
table-layout: fixed;
}
tbody {
display: block;
overflow: scroll;
}
不管怎样,我找到的最好答案是: https://github.com/filamentgroup/tablesaw/issues/58#issuecomment-63966574
table.tablesaw
{
table-layout: fixed;
max-width: none;
width: auto;
min-width: 100%;
}
这解决方案似乎有点过头了。最简洁的方法是像这样用div来包装:
<div style="overflow-x:auto;">
<table>
...
</table>
</div>
https://www.w3schools.com/howto/howto_css_table_responsive.asp
我尝试了以上所有的解决方案,但都有一些问题。
如果我们添加display: 'block'到表格中,单元格不会占用整个宽度。 如果我们将它添加到表包装器中,你的自定义表头,如搜索,过滤器等也会滚动,这看起来很糟糕。
我能够通过将overflow-x: auto添加到表的主体包装器来实现预期的行为。
单元格采用全宽度,即使列较少,滚动条也会根据需要自动出现。
Edit: @WickyNilliams注意到,在表体上设置display: block将剥夺表的语义,因此由于可访问性问题,这不是一个很好的解决方案。
我对@Serge Stroobandt提出的解决方案取得了很好的成功,但我遇到了@Shevy的问题,这些单元格没有填满表的全宽度。我能够通过向tbody添加一些样式来修复这个问题。
table {
display: block;
overflow-x: auto;
white-space: nowrap;
}
table tbody {
display: table;
width: 100%;
}
我在Mac上的火狐、Chrome和Safari浏览器上都能使用这种方法。