html - 当 tbody 设置为其容器的宽度时,我可以在 tbody 的溢出上实现水平滚动吗?

标签 html css

我正在努力实现以下目标:

  1. 包含 div
  2. 内的 table 元素
  3. table 没有设置width(可以是 100%),但它不能比包含的 div
  4. table 的单元格是固定宽度的(使用 width 和/或 max/min 宽度)
  5. table 单元格的 width 比包含 div 的宽度宽
  6. table中的tbody元素需要水平滚动

这可能吗?在下面的代码片段中,您可以看到我想要实现的目标。容器的宽度为 200pxtable 有 3 列,每列 100px(总宽度为 300px)。您可以看到容器的背景是红色的,并且比 table 宽度短。我的目标是让 tbody 的宽度保持在容器的宽度 (200px) 并水平滚动溢出。

但是,我知道 tabletbody 元素的默认行为有一些规则可以防止这种情况发生。有没有一种方法可以配置它,以便 tbody 水平滚动溢出,无需在 tbody 元素中指定硬 width ?

.container-container {
  background-color:#ccffcc;
}
.container {
  background-color:#ffcccc;
  width: 200px;
}
table {
  border-collapse: collapse;
}
td {
  width: 100px;
  min-width: 100px;
  background-color: #e0e0e0;
}
tbody {
  display: block;
  margin-top: 29px;
  width:100%;
  overflow: auto;

}
  <div class="container">
    <table id="callLogExplorer">
      <tbody>
        <tr>
          <td>asdfasd fas</td>
          <td>asdfasd fas</td>
          <td>asdfasd fas</td>
        </tr>
        <tr>
          <td>asdfasd fas</td>
          <td>asdfasd fas</td>
          <td>asdfasd fas</td>
        </tr>
        <tr>
          <td>asdfasd fas</td>
          <td>asdfasd fas</td>
          <td>asdfasd fas</td>
        </tr>
        <tr>
          <td>asdfasd fas</td>
          <td>asdfasd fas</td>
          <td>asdfasd fas</td>
        </tr>
        <tr>
          <td>asdfasd fas</td>
          <td>asdfasd fas</td>
          <td>asdfasd fas</td>
        </tr>
        <tr>
          <td>asdfasd fas</td>
          <td>asdfasd fas</td>
          <td>asdfasd fas</td>
        </tr>
        <tr>
          <td>asdfasd fas</td>
          <td>asdfasd fas</td>
          <td>asdfasd fas</td>
        </tr>
        <tr>
          <td>asdfasd fas</td>
          <td>asdfasd fas</td>
          <td>asdfasd fas</td>
        </tr>
        <tr>
          <td>asdfasd fas</td>
          <td>asdfasd fas</td>
          <td>asdfasd fas</td>
        </tr>
        <tr>
          <td>asdfasd fas</td>
          <td>asdfasd fas</td>
          <td>asdfasd fas</td>
        </tr>
        <tr>
          <td>asdfasd fas</td>
          <td>asdfasd fas</td>
          <td>asdfasd fas</td>
        </tr>
        <tr>
          <td>asdfasd fas</td>
          <td>asdfasd fas</td>
          <td>asdfasd fas</td>
        </tr>
      </tbody>
    </table>

  </div>

最佳答案

不要设置 display:blocktbody .只需将溢出放在 <table> 上parent,就像 Twitter Bootstrap 那样。它适用于跨浏览器/跨设备:

.tableResponsive {
  background-color:#ffcccc;
  overflow-x: auto;
  width: 200px; /* or set max-width on it max-width: 100vw; */
}
#callLogExplorer {
  margin-top: 29px;
}
table {
  border-collapse: collapse;
}
td {
  min-width: 100px;
  background-color: #e0e0e0;
}
<div class="tableResponsive">
    <table id="callLogExplorer">
      <tbody>
        <tr>
          <td>asdfasd fas</td>
          <td>asdfasd fas</td>
          <td>asdfasd fas</td>
        </tr>
        <tr>
          <td>asdfasd fas</td>
          <td>asdfasd fas</td>
          <td>asdfasd fas</td>
        </tr>
        <tr>
          <td>asdfasd fas</td>
          <td>asdfasd fas</td>
          <td>asdfasd fas</td>
        </tr>
        <tr>
          <td>asdfasd fas</td>
          <td>asdfasd fas</td>
          <td>asdfasd fas</td>
        </tr>
        <tr>
          <td>asdfasd fas</td>
          <td>asdfasd fas</td>
          <td>asdfasd fas</td>
        </tr>
        <tr>
          <td>asdfasd fas</td>
          <td>asdfasd fas</td>
          <td>asdfasd fas</td>
        </tr>
        <tr>
          <td>asdfasd fas</td>
          <td>asdfasd fas</td>
          <td>asdfasd fas</td>
        </tr>
        <tr>
          <td>asdfasd fas</td>
          <td>asdfasd fas</td>
          <td>asdfasd fas</td>
        </tr>
        <tr>
          <td>asdfasd fas</td>
          <td>asdfasd fas</td>
          <td>asdfasd fas</td>
        </tr>
        <tr>
          <td>asdfasd fas</td>
          <td>asdfasd fas</td>
          <td>asdfasd fas</td>
        </tr>
        <tr>
          <td>asdfasd fas</td>
          <td>asdfasd fas</td>
          <td>asdfasd fas</td>
        </tr>
        <tr>
          <td>asdfasd fas</td>
          <td>asdfasd fas</td>
          <td>asdfasd fas</td>
        </tr>
      </tbody>
    </table>

  </div>

关于html - 当 tbody 设置为其容器的宽度时,我可以在 tbody 的溢出上实现水平滚动吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44767832/

相关文章:

javascript - 实际上不向服务器提交任何内容的 HTML 表单(JavaScript 中的客户端处理)

javascript - 具有关联切换可见性的翻转 div 的多个实例

javascript - 使用 javascript 检测浏览器和平台

html - Colspan 不适用于 html 中的输入字段

css - 伪 CSS 元素不显示在父 div 之外

php - 将一个对象切成 3 block 并在 Blade 中查看它们 - Laravel - chunk 方法

jquery - 自定义单选按钮需要显示值作为原始输入

php - 如何从字符串中删除不需要的字符?

jquery - 如何创建带有百分比计数器的 jQuery 预加载器?

css - 禁用 primefaces 数据表的选择样式