将水平滚动条添加到html表

Tsu*_*oku 120 html css html-table scrollbar

有没有办法将水平滚动条添加到HTML表?我实际上需要它可以垂直和水平滚动,这取决于表的增长方式,但我不能让滚动条出现.

Ser*_*ndt 197

首先,做一个display: block你的桌子

然后,设置overflow-x:auto.

table {
    display: block;
    overflow-x: auto;
    white-space: nowrap;
}
Run Code Online (Sandbox Code Playgroud)

干净整洁.没有多余的格式.

以下是我网站上页面滚动表格标题的更多参与示例.

  • 我之前尝试过这个.唯一的问题是表格单元格不再填满表格的整个宽度. (24认同)
  • 正如其他人所说,这不能正常工作:表格行不填充表格宽度. (4认同)
  • 这对我来说适用于Chrome,但只有在将所有内容压缩在一起之后.`white-space:nowrap;`有助于立即看到滚动条. (3认同)
  • 如果您使用 <thead></thead> 并且规则“table tbody, table thead”列和标题不匹配。我没有使用“display:table”声明并将列大小放在 <th> 中(在 <thead> 内)。 (3认同)
  • 很好的技巧兄弟...它对我来说很好. (2认同)
  • @collimarco注意我必须使用max-width:100%作为内联块选项. (2认同)

pas*_*ine 68

你尝试过CSS overflow属性吗?

overflow: scroll; /* Scrollbar are always visible */
overflow: auto;   /* Scrollbar is displayed as it's needed */
Run Code Online (Sandbox Code Playgroud)

更新
正如其他用户指出的那样,这还不足以添加滚动条.
所以请在下面查看并提出评论和答案.

  • @bloudermilk你可以添加`display:block`. (18认同)
  • 根据我自己的尝试和我在互联网上阅读的其他一切,这根本行不通.你可以溢出一个包装元素,当然不是表本身. (13认同)
  • 不要在表上设置“display: block”——令人惊讶的是,它剥夺了它们的语义!这会损害可访问性,并使屏幕阅读器用户的生活变得困难。请参阅此处https://developer.paciellogroup.com/blog/2018/03/short-note-on-what-c​​ss-display-properties-do-to-table-semantics/ (7认同)

Col*_*n M 37

将表包装在DIV中,使用以下样式进行设置:

div.wrapper {
  width: 500px;
  height: 500px;
  overflow: auto;
}
Run Code Online (Sandbox Code Playgroud)

  • 似乎这里的`overflow:auto`是不必要的.你知道无论如何在没有设置宽度的情况下实现这一点......这似乎总是在html的解决方案 - 硬编码一些宽度或高度但这似乎打败了布局引擎的点! (8认同)

Rog*_*cks 16

为此使用CSS属性" overflow ".

简短的摘要:

overflow: visible|hidden|scroll|auto|initial|inherit;
Run Code Online (Sandbox Code Playgroud)

例如

table {
    display: block;
    overflow: scroll;
}
Run Code Online (Sandbox Code Playgroud)


小智 8

我遇到了同样的问题.我发现了以下解决方案,该解决方案仅在Chrome v31中进行了测试:

table {
    table-layout: fixed;
}

tbody {
    display: block;
    overflow: scroll;
}
Run Code Online (Sandbox Code Playgroud)


小智 8

这是对Serge Stroobandt答案的改进,并且效果很好。它解决了如果列数较少的表无法填充整个页面宽度的问题。

<style> 
 .table_wrapper{
    display: block;
    overflow-x: auto;
    white-space: nowrap;
}
</style>

<div class="table_wrapper">
<table>
...
</table>
</div>
Run Code Online (Sandbox Code Playgroud)

  • “空白:nowrap;”似乎是可选的。 (2认同)

mpe*_*pen 7

我无法获得上述任何解决方案.但是,我找到了一个黑客:

body {
  background-color: #ccc;
}

.container {
  width: 300px;
  background-color: white;
}

table {
  width: 100%;
  border-collapse: collapse;
}

td {
  border: 1px solid black;
}

/* try removing the "hack" below to see how the table overflows the .body */
.hack1 {
  display: table;
  table-layout: fixed;
  width: 100%;
}

.hack2 {
  display: table-cell;
  overflow-x: auto;
  width: 100%;
}
Run Code Online (Sandbox Code Playgroud)
<div class="container">

  <div class="hack1">
    <div class="hack2">

      <table>
        <tr>
          <td>table or other arbitrary content</td>
          <td>that will cause your page to stretch</td>
        </tr>
        <tr>
          <td>uncontrollably</td>
          <td>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</td>
        </tr>
      </table>

    </div>
  </div>

</div>
Run Code Online (Sandbox Code Playgroud)


小智 5

我在@Serge Stroobandt提出的解决方案上取得了很好的成功,但是我遇到了@Shevy单元格存在的问题,因此没有填充表格的整个宽度。我可以通过向中添加一些样式来解决此问题tbody

table {
  display: block;
  overflow-x: auto;
  white-space: nowrap;
}

table tbody {
  display: table;
  width: 100%;
}
Run Code Online (Sandbox Code Playgroud)

这在Mac上的Firefox,Chrome和Safari中为我工作。

  • 不要在表上设置“display: block”——令人惊讶的是,它剥夺了它们的语义!这会损害可访问性,并使屏幕阅读器用户的生活变得困难。请参阅此处https://developer.paciellogroup.com/blog/2018/03/short-note-on-what-c​​ss-display-properties-do-to-table-semantics/ (5认同)

小智 5

将表格插入 div 内,以便表格具有完整长度

超文本标记语言

<div class="scroll">
 <table>  </table>
</div>   
Run Code Online (Sandbox Code Playgroud)

CSS

.scroll{
    overflow-x: auto;
    white-space: nowrap;
}
Run Code Online (Sandbox Code Playgroud)

  • 这对我有用。我通常会避免更改 HTML,但在这种情况下会容易得多 (2认同)

小智 5

.wrapper {
  width: 0;
  min-width: 100%; //width 0, but min-width 100?? yes, I know...
  overflow: auto;
}
Run Code Online (Sandbox Code Playgroud)
<div class="wrapper">
  <table></table>
</div>
Run Code Online (Sandbox Code Playgroud)

table可以有任何width。我通常将100%ormax-content用于表。