我发现了一个烦人的情况:如果我有一个嵌套在 div 内的表格overflow: auto
(或overflow: none
或overflow: scroll
就此而言),并且表格的宽度超过了窗口的宽度,潜水将切断表格并添加滚动条......正如它应该。
但是,如果我采用完全相同的场景并将其放入(另一个)表中,那么该overflow
属性突然不再受到尊重。
作为我的意思的一个例子,这是一个工作案例:
<div style="border: 1px solid green; overflow: hidden">
<table><tr><td><div style="border: 1px solid red; width: 9999px;">a</div></td></tr></table>
</div>
如果你在浏览器中查看它,你会在右侧看到一个绿色边框,但不是红色边框,因为 div 隐藏了表格的溢出,所以你看到的只是它的边框。
将其与包含在表格中的完全相同的代码进行比较:
<table><tr><td>
<div style="border: 1px solid green; overflow: hidden">
<table><tr><td><div style="border: 1px solid red; width: 9999px;">a</div></td></tr></table>
</div>
</td></tr></table>
您会看到没有右边框,因为两个元素都溢出了页面;如果您向右滚动得足够远,您将看到两个边框,因为 div 从未限制过它的表格。
我知道这可能是因为 TD 计算其宽度的方式与其他元素不同,因此 TD 内的 div 不能正确溢出,因为它计算 100% 宽度“错误”(虽然不是真的错误,只是在术语上是错误的我想要的)。
鉴于此,谁能帮我弄清楚如何在“表内”的情况下获得正确的溢出行为?