溢出:滚动;在 <td>

Posted

技术标签:

【中文标题】溢出:滚动;在 <td>【英文标题】:overflow:scroll; in <td> 【发布时间】:2010-11-15 17:28:04 【问题描述】:

为什么 CSS 属性 overflow:scroll; 不能在 &lt;td&gt; 中工作,而 overflow:hidden; 工作得很好?

<table border="1" style="table-layout:fixed; width:100px">
  <tr>
    <td style="overflow:scroll; width:50px;">10000000000000000000000000000000000</td>
    <td>200</td>
    <td>300</td>
  </tr>
</table>

根据 CSS 规范1,2,我不明白为什么。

【问题讨论】:

令人惊讶的是,最佳答案(恕我直言)是最后一个。对 TD 元素应用高度,然后将其向左浮动。这允许垂直滚动,而无需像其他答案所建议的那样在代码中添加其他元素。 【参考方案1】:

<table border="1" style="table-layout:fixed; width:500px">
  <tr>
    <td style="width:100px;"><div style="overflow:scroll; width:100%">10000000000000000000000000000000000</div></td>
    <td>200</td>
    <td>300</td>
  </tr>
</table>

【讨论】:

【参考方案2】:

首先为 td 提供所需的高度,然后将“float: left”属性应用到您希望滚动条出现的相应“td”。

【讨论】:

我很惊讶看到这项工作,但它提供了我正在寻找的确切行为。这应该是公认的解决方案。【参考方案3】:

我得到了一些东西from here!

Andrew Fedoniouk 写道:

这实际上是我的问题: “一个技术原因是溢出属性不适用于 表。” - 为什么?这是什么原因?

我不是专家,但我相信这是 只是为了向后兼容 遗留表行为。你可以检查 “自动”表格布局 规范中的算法。我很漂亮 确保此布局算法是 与溢出不兼容 财产(或更准确地说, 布局算法永远不会导致 需要任何溢出值 除了“可见”)。

是的,这就是我问的原因。好像没有正式的理由 为什么或不应该是可滚动的,但看起来像 UA 供应商在这方面达成了一些默契。也是如此 问题。

规范同意你的尊重 到元素。表格单元格是 应该尊重溢出,虽然 至少,Mozilla 似乎没有这样做 所以。我无法回答你的问题 这个例子,虽然我仍然会 猜猜答案仍然与 旧版渲染。

main thread is here。

【讨论】:

好吧,如果你给它一个固定的布局或者一个宽度并且不换行等等,它可以......但是,将它包装到一个 div 在每个浏览器中都很好,即使在 IE6 中也是如此. 感谢 Kirtan,您的信息很有价值。所以这是一个实现限制,而不是规范问题,我没有误读或误解。但是,很遗憾没有关于该线程的进一步讨论,而且在我看来,这个问题不会很快在任何浏览器上得到解决。此外,我延迟接受这个答案,希望有更多关于这个问题的新鲜信息,因为我知道你 ***er 是溢出专家:) 请务必查看最底部的解决方案(即设置高度并将 td 元素向左浮动)。这对我来说效果很好,无需添加任何额外的 div 元素。【参考方案4】:

你必须将它包装在一个 div 中,这样才能工作:

<table border="1" style="table-layout:fixed; width:500px">
  <tr>
    <td style="width:100px;"><div style="overflow:scroll; width:100%">10000000000000000000000000000000000</div></td>
    <td>200</td>
    <td>300</td>
  </tr>
</table>

【讨论】:

我知道 包装器会起作用,但你不觉得你回答的不是我问的吗? 是的,你是对的......我有点快。但是,这可能对任何正在寻找解决方法的人有用,而不是原因。 该变通方法仅适用于溢出 x。你不能做 div height = 100%.... @Shawn:我不明白,你是什么意思?您想要 td 高度为 100% 的解决方法吗? 是的,所以如果表格说是 500px 高,并且您希望 td 占据尽可能高的高度

以上是关于溢出:滚动;在 <td>的主要内容,如果未能解决你的问题,请参考以下文章

有一个引导表单元格填充可用区域,溢出时滚动

溢出:自动在 Firefox 中不起作用

内容溢出时无法滚动

html 文字溢出标签

使用“溢出:自动”滚动div的位置

溢出:在 Chrome、IE 中自动添加滚动条