在没有 JS 的情况下调整溢出 div 内的表格大小

Posted

技术标签:

【中文标题】在没有 JS 的情况下调整溢出 div 内的表格大小【英文标题】:Resize table inside overflowing divs without JS 【发布时间】:2018-04-28 19:27:49 【问题描述】:

当所有列的宽度比包含表格的 div 像素多时,是否可以调整可滚动表格中的列大小。问题是我有 20 列之类的东西,我需要让我的表格可以滚动,并且可以调整列的大小。我使用 JS mousemove、mouseup 和 mousedown 事件成功地做到了,但我试图用 CSS 来做到这一点,它将花费用户更少的资源。示例如下:

<div style="overflow-x:scroll;overflow-y:scroll;max-height:300px;max-width:500px;background-color:gray;">
  <table>
    <thead>
      <tr>
          <th style="resize:horizontal;overflow: auto;">TESTTESTESTEST</th>
          <th style="resize:horizontal;overflow: auto;">TESTTESTESTEST</th>
          <th style="resize:horizontal;overflow: auto;">TESTTESTESTEST</th>
          <th style="resize:horizontal;overflow: auto;">TESTTESTESTEST</th>
          <th style="resize:horizontal;overflow: auto;">TESTTESTESTEST</th>
          <th style="resize:horizontal;overflow: auto;">TESTTESTESTEST</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td>TESTTESTESTESTESTSTETSET</td>
        <td>TESTTESTESTESTESTSTETSET</td>
        <td>TESTTESTESTESTESTSTETSET</td>
        <td>TESTTESTESTESTESTSTETSET</td>
        <td>TESTTESTESTESTESTSTETSET</td>
        <td>TESTTESTESTESTESTSTETSET</td>
      </tr>
    </tbody>
  </table>
</div>

【问题讨论】:

【参考方案1】:

如果这是您要查找的内容,请检查此代码:

<!DOCTYPE html>
<html>
<head>
<style>
table 
    border-collapse: collapse;
    border-spacing: 0;
    width: 100%;
    border: 1px solid #ddd;


th, td 
    text-align: left;
    padding: 8px;


tr:nth-child(even)background-color: #f2f2f2
</style>
</head>
<body>

<h2>Table which can scroll and column will automatically resize</h2>
<div style="overflow-x:auto;">
  <table>
    <tr>
      <th>First Name</th>
      <th>Last Name</th>
      <th>Points</th>
      <th>Points</th>
      <th>Points</th>
      <th>Points</th>
      <th>Points</th>
      <th>Points</th>
      <th>Points</th>
      <th>Points</th>
      <th>Points</th>
      <th>Points</th>
    </tr>
    <tr>
      <td>hello</td>
      <td>bye</td>
      <td>50</td>
      <td>50</td>
      <td>50</td>
      <td>50</td>
      <td>50</td>
      <td>50</td>
      <td>50</td>
      <td>50</td>
      <td>50</td>
      <td>50</td>
    </tr>
    <tr>
      <td>Abc</td>
      <td>xyz</td>
      <td>94</td>
      <td>94</td>
      <td>94</td>
      <td>94</td>
      <td>94</td>
      <td>94</td>
      <td>94</td>
      <td>94</td>
      <td>94</td>
      <td>94</td>
    </tr>
    <tr>
      <td>Arun</td>
      <td>Kumar</td>
      <td>67</td>
      <td>67</td>
      <td>67</td>
      <td>67</td>
      <td>67</td>
      <td>67</td>
      <td>67</td>
      <td>67</td>
      <td>67</td>
      <td>67</td>
    </tr>
  </table>
</div>

</body>
</html>

【讨论】:

我做到了!可调整大小列的代码:&lt;th&gt; &lt;div style="resize:horizontal;overflow: auto;"&gt;TESTTESTESTEST&lt;/div&gt;&lt;/th&gt; 太好了!如果您发现执行上述代码有任何困难,请发布。

以上是关于在没有 JS 的情况下调整溢出 div 内的表格大小的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有固定高度的情况下使动态div溢出

html表格内的自动滚动文本

当内容溢出浏览器窗口时,用 div 替换 html 表格布局

如何使用flexbox包含网格内的内容?

表格溢出到 div 之外

如何在没有绝对定位的情况下将主体元素内的 div 垂直和水平居中? [复制]