表溢出的水平滚动

Anc*_*end 54 html css usability styling css3

我在容器中有一个基本表.该表将有大约25列.我试图在桌面溢出时添加一个水平滚动条,我正在度过一段非常艰难的时光.

现在发生的是,表格单元通过自动调整单元格的高度并保持固定的表格宽度来容纳单元格内容.

我很感激为什么我的方法没有解决这个问题的任何建议.

提前谢谢了!

CSS

.search-table-outter {margin-bottom:30px; }
.search-table{table-layout: fixed; margin:40px auto 0px auto;  overflow-x:scroll; }
.search-table, td, th{border-collapse:collapse; border:1px solid #777;}
th{padding:20px 7px; font-size:15px; color:#444; background:#66C2E0;}
td{padding:5px 10px; height:35px;}
tr:nth-child(even)  {background: #f5f5f5;}
tr:nth-child(odd)   {background: #FFF;}
Run Code Online (Sandbox Code Playgroud)

HTML

<div class="search-table-outter wrapper">
    <table class="search-table inner">
        <tr>
            <th>Col1</th>
            <th>col2</th>
            <th>col3</th>
            <th>col4</th>
            <th>col5</th>
            <th>col5</th>
        </tr>
        <?php echo $rows; ?>
    </table>
</div>
Run Code Online (Sandbox Code Playgroud)

JS小提琴(注意:如果可能的话,我希望水平滚动条位于带红色边框的容器中):http: //jsfiddle.net/ZXnqM/3/

may*_*lle 103

我认为你的溢出应该在外部容器上.您还可以显式设置列的最小宽度.像这样:

.search-table-outter { overflow-x: scroll; }
th, td { min-width: 200px; }
Run Code Online (Sandbox Code Playgroud)

小提琴:http://jsfiddle.net/5WsEt/

  • 大!那就是我完全需要的!谢谢您的解决方案 (2认同)

Kas*_*ter 36

对于那些不能或不想table用 a包装div(例如,如果 HTML 是从 Markdown 生成的)但仍然想要滚动条的人的解决方案:

table {
  display: block;
  max-width: -moz-fit-content;
  max-width: fit-content;
  margin: 0 auto;
  overflow-x: auto;
  white-space: nowrap;
}
Run Code Online (Sandbox Code Playgroud)
<table>
  <tr>
    <td>Especially on mobile, a table can easily become wider than the viewport.</td>
    <td>Using the right CSS, you can get scrollbars on the table without wrapping it.</td>
  </tr>
</table>

<table>
  <tr>
    <td>A centered table.</td>
  </tr>
</table>
Run Code Online (Sandbox Code Playgroud)

说明:display: block;使滚动条成为可能。默认情况下(与表格不同),块跨越父元素的整个宽度。这可以通过 防止max-width: fit-content;,它允许您仍然使用 将内容较少的表格水平居中margin: 0 auto;white-space: nowrap;是可选的(但对本演示有用)。

  • 请注意,此解决方案不利于可访问性([解释](https://www.tpgi.com/short-note-on-what-c​​ss-display-properties-do-to-table-semantics/)) (4认同)
  • 请记住,将显示从“table”更改为“block”可能会影响表的子项。例如,我遇到了孩子没有占据整个容器宽度的问题。 (4认同)
  • 这确实非常适合降价,而无需像其他答案一样使用表格包装器。 (2认同)

The*_*ear 7

没有人提到的解决方案是white-space: nowrap用于表并添加overflow-x到包装器中。

( http://jsfiddle.net/xc7jLuyx/11/ )

CSS

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

HTML

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

如果您不想要多行的行,这是一个理想的方案。
要添加中断线,您需要使用<br/>
.


Tre*_*ree 6

除非我严重误解了你的问题,移动overflow-x:scroll.search-table.search-table-outter.

http://jsfiddle.net/ZXnqM/4/

.search-table-outter {border:2px solid red; overflow-x:scroll;}
.search-table{table-layout: fixed; margin:40px auto 0px auto;   }
Run Code Online (Sandbox Code Playgroud)

据我所知,你不能给桌子本身提供滚动条.