有这个设置:
<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 产生水平滚动条:
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>
结果简直就是这样:
更新#3:
感谢@SergiyT.,事实证明这是 Chrome 和 Firefox 处理滚动条的方式,而不是最短的孩子:
我不确定这是否“正确”(在最长的孩子出现之前内容已经溢出),但这似乎是一个死胡同。