尽管出现溢出,但Div在宽度约束之外生长:auto

我试图在动态宽度表单元格中使用水平滚动(从左到右)的DIV(带有display:table-cell的DIV)。 应该允许滚动DIV占用包含元素的100%,而不会超出所有祖先的宽度。 我宁愿有一个纯粹的标记/ CSS修复这个问题,没有JavaScript或静态宽度。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<html>
<head>
<style>

#page
{
    width: 100%;
    max-width: 500px;
}

.tcell
{
    display: table-cell;
    min-width: 150px;
    padding: 10px;
}

#scrollbox
{
    width: 100%;
    height: 90px;
    background-color: red;
    overflow: auto;
}

#scrollcontent
{
    background-color: green;
    width: 900px;
    height: 50px;
    margin: 10px;
    white-space: nowrap;
}

</style>
</head>
<body style="width:100%;">

<div id="page">
    <div class="tcell" style="background-color: teal;">Hello world</div>

    <div class="tcell" style="background-color: yellow;">
        <div id="scrollbox">
            <div id="scrollcontent"></div>
        </div>
    </div>
</div>

</body>
</html>

JSFiddle:http://jsfiddle.net/L69qJ/

该问题在IE8,Chrome,Firefox和Safari中可见。

在这个例子中,黄色div被强制超出它的容器(我们预计整个页面不会大于500px,请参阅#page的最大宽度样式),因为红色DIV不符合溢出:auto和因此试图完全展开以展示绿色的DIV。

预期行为:我希望蓝绿色和黄色细胞的总数达到他们父母的100%( #page )。 绿色的细胞太宽了,它使得红色的细胞膨胀,这使得黄色的细胞膨胀。 预计红色单元会使用水平(从左到右)滚动条而不是使黄色单元格展开。


display:table;
table-layout:fixed;

到#page。

那里是:

http://jsfiddle.net/L69qJ/8/


要回答你的问题,问题是你正在使用表格单元格。 表格单元格固有地呈现了他们的孩子的形状,所以如果你在表格单元格内设置宽阔的东西,你不能只在表格单元格中添加一个宽度,并期望它遵循该规则。 您需要转换为使用百分比宽度的内嵌div或浮动来实现您的布局。

链接地址: http://www.djcxy.com/p/88415.html

上一篇: Div growing outside of width constraint despite overflow:auto

下一篇: CSS Nested Floats & Clears Behaving Inconsistently