当容器具有dispay:block属性时,Overflow-x:auto停止工作

时间:2018-08-02 00:12:34

标签: css html-table flexbox overflow scrollable

我在父表中嵌套了两个表,它们都在同一表行中。

我希望第二个表可滚动,第一个表固定。

如果没有display: block,第二张表将与第一张表重叠,但是如果使用display: block,第二张表将不再可滚动。

当表头/内容较小时,根本没有问题。

这是我的代码:

table {
  border-collapse: collapse;
  border-spacing: 0;
  width: 100%;
  border: 1px solid #ddd;
  display: block;
  border-collapse: separate;
  border-spacing: 10px;
  *border-collapse: expression('separate', cellSpacing='10px');
}

.test {}

th,
td {
  text-align: left;
  padding: 0px;
}

tr:nth-child(even) {
  background-color: #f2f2f2
}
<table style="width:100%; table-layout:fixed">
  <tr>
    <td>

      <table>
        <tr>
          <th>Jogger_123</th>
          <th>Sprinter_123</th>
          <th>Swimmer_321</th>
          <th>Dancer_321</th>
          <th>Fisher_567</th>
        </tr>
        <tr>
          <td><input type='text'></td>
          <td><input type='text'></td>
          <td><input type='text'></td>
          <td><input type='text'></td>
          <td><input type='text'></td>
        </tr>
        <tr>
          <td><input type='text'></td>
          <td><input type='text'></td>
          <td><input type='text'></td>
          <td><input type='text'></td>
          <td><input type='text'></td>
        </tr>
        <tr>
          <td><input type='text'></td>
          <td><input type='text'></td>
          <td><input type='text'></td>
          <td><input type='text'></td>
          <td><input type='text'></td>
        </tr>
      </table>
    </td>

    <td>

      <div style="overflow-x:auto;">
        <table class='test'>
          <tr>
            <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>
            <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><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
          </tr>
          <tr>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
          </tr>
          <tr>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
          </tr>
        </table>
      </div>
    </td>
  </tr>
</table>

1 个答案:

答案 0 :(得分:0)

您已将表格元素设置为width: 100%

但是表单元格溢出了容器的大小。

因此,可以看到默认设置为td的第一个overflow: visible与第二个td和容器重叠。

第二个td非常适合容纳在容器中,因为它具有overflow-x: auto

table {
  border-collapse: collapse;
  border-spacing: 0;
  width: 100%;
  border: 1px solid #ddd;
  border-collapse: separate;
  border-spacing: 10px;
}

th,
td {
  text-align: left;
  padding: 0px;
}

tr:nth-child(even) {
  background-color: #f2f2f2
}

#table1 {
  border: 2px dashed red;
}

#table2 {
  border: 2px dashed blue;
}
<table style="width:100%; table-layout:fixed; border: 2px solid black;">
  <tr>
    <td>
      <table id="table1">
        <tr>
          <th>Jogger_123</th>
          <th>Sprinter_123</th>
          <th>Swimmer_321</th>
          <th>Dancer_321</th>
          <th>Fisher_567</th>
        </tr>
        <tr>
          <td><input type='text'></td>
          <td><input type='text'></td>
          <td><input type='text'></td>
          <td><input type='text'></td>
          <td><input type='text'></td>
        </tr>
        <tr>
          <td><input type='text'></td>
          <td><input type='text'></td>
          <td><input type='text'></td>
          <td><input type='text'></td>
          <td><input type='text'></td>
        </tr>
        <tr>
          <td><input type='text'></td>
          <td><input type='text'></td>
          <td><input type='text'></td>
          <td><input type='text'></td>
          <td><input type='text'></td>
        </tr>
      </table>
    </td>

    <td>

      <div style="overflow-x:auto;">
        <table class='test' id="table2">
          <tr>
            <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>
            <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><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
          </tr>
          <tr>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
          </tr>
          <tr>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
          </tr>
        </table>
      </div>
    </td>
  </tr>
</table>

您需要问自己的问题是如何处理第一个td的溢出。还有overflow-x吗?

table {
  border-collapse: collapse;
  border-spacing: 0;
  width: 100%;
  border: 1px solid #ddd;
  border-collapse: separate;
  border-spacing: 10px;
}

th,
td {
  text-align: left;
  padding: 0px;
}

tr:nth-child(even) {
  background-color: #f2f2f2
}

#table1 { border: 2px dashed red;  }
#table2 { border: 2px dashed blue; }
<table style="width:100%; table-layout:fixed; border: 2px solid black;">
  <tr>
    <td style="overflow: auto">
      <table id="table1">
        <tr>
          <th>Jogger_123</th>
          <th>Sprinter_123</th>
          <th>Swimmer_321</th>
          <th>Dancer_321</th>
          <th>Fisher_567</th>
        </tr>
        <tr>
          <td><input type='text'></td>
          <td><input type='text'></td>
          <td><input type='text'></td>
          <td><input type='text'></td>
          <td><input type='text'></td>
        </tr>
        <tr>
          <td><input type='text'></td>
          <td><input type='text'></td>
          <td><input type='text'></td>
          <td><input type='text'></td>
          <td><input type='text'></td>
        </tr>
        <tr>
          <td><input type='text'></td>
          <td><input type='text'></td>
          <td><input type='text'></td>
          <td><input type='text'></td>
          <td><input type='text'></td>
        </tr>
      </table>
    </td>

    <td>

      <div style="overflow-x:auto;">
        <table class='test' id="table2">
          <tr>
            <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>
            <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><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
          </tr>
          <tr>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
          </tr>
          <tr>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
            <td><input type='text'></td>
          </tr>
        </table>
      </div>
    </td>
  </tr>
</table>