0

有这个设置:

<div>
    <label>...</label><br />
    <!-- repeat several times -->
</div>
div {
    display:inline-block;
    overflow:auto;

    max-height:3em; /* short enough to cause overflow */
    /* or, in Chrome, this works too: */
    padding:1ex;
}

会导致 Chrome 和 Firefox 产生水平滚动条:

JSFiddle

三个浏览器的截图

Opera 是 Opera Presto,而不是 Opera Blink。可惜已经废弃了。

max-height无论如何,为什么会发生这种情况,如果我需要(因此自动溢出)和 ,我将如何摆脱水平滚动条padding

PS 我使用的是 XP 机器(公司限制),如果这很重要的话。

PS#2 进一步测试显示,margin<label>s 上禁用 Firefox 中的水平滚动条会消失,但内容会很粗糙减少到 3 个字符长度(最短的标签)减少大约 2 个字符(滚动条的宽度)。


更新#2:

如果人们感到模棱两可:

为什么容器会<div> 缩小到其孩子的最短长度(在本例中为 3 个字符)在 Chrome 和 Firefox 中扩展不超过内容的宽度,不包括滚动条,让长子溢出?
任何地方都没有长度信息,那么这里的逻辑是什么?我故意添加了“零”,所以第一个孩子不是最短的,但仍然得到相同的结果。

Opera Presto 似乎按我的预期工作,但这似乎不是事实上的标准。

我怎么能要求<div>扩展到尽可能宽,同时仍然保持最大高度和自动滚动?


更新#1:

滚动条的直接原因当然是内容横向溢出了,所以如果我粗暴地套用overflow-x:hidden<div>结果简直就是这样:

截图#2


更新#3:

感谢@SergiyT.,事实证明这是 Chrome 和 Firefox 处理滚动条的方式,而不是最短的孩子:

JSFiddle

截图#3

我不确定这是否“正确”(在最长的孩子出现之前内容已经溢出),但这似乎是一个死胡同。

4

3 回答 3

2

也许这就是浏览器使用滚动条的方式。看起来歌剧(也许还有 IE)考虑没有滚动条的宽度/高度,但 Firefox 和 Chrome 考虑了滚动条。在您的屏幕截图上,Opera 中的 div 宽度比 Firefox 和 Chrome 中的大。

于 2013-07-18T11:10:33.443 回答
1

This might help you

div.listbox {    
    overflow-x: hidden;
}
于 2013-07-18T10:30:33.707 回答
0

尝试

div.listbox{
...
vertical-align: bottom;
}
于 2013-07-18T10:34:58.023 回答