我有一个使用以下CSS样式设置的div类:
div.multiple_choice{
border: 1px solid black;
max-width: 300px;
max-height: 200px;
overflow: auto;
}
问题是,当里面的文字没有强制DIV达到200px的最大高度时,垂直滚动条仍然显示出来。我可以点击向上和向下箭头,但它只会将内容上下移动大约一两个像素。
这是在谷歌Chrome(版本18.0)和Iceweasel 11中发生的。
答案 0 :(得分:10)
答案 1 :(得分:8)
我遇到过这个问题。但我解决了这个使用以下css样式:
div.yourcontainer{overflow-y:auto;}
如果容器高于最大高度,则垂直滚动条将显示。
答案 2 :(得分:4)
我遇到了这个问题,我发现在子元素上使用position: relative
导致了问题。显然这不是每个人的解决方案,尤其是在使用position: absolute
的情况下,但对我来说它有效。
答案 3 :(得分:3)
只是为了证明 @Kuba Orlik 的解决方案(他作为对已接受答案的评论发布)这是唯一对我有用的解决方案。
在内部元素上添加:
line-height: normal;
注意:明确normal
不是1
,因为它是不同的
答案 4 :(得分:1)
我今天早些时候遇到过这个错误。在我的例子中,显示了一个子元素列表:inline-block而不是display:block。切换到显示:截断div中我的子元素列表的块为我修复了问题。
答案 5 :(得分:1)
就我而言,问题出在字体上。我们使用 font-family: Galano Grotesque
。显然,此字体呈现得高于计算出的高度。
<div>
<p>some text</p>
</div>
所以即使没有max-height
,当内部p
和外部div
都计算为20px
高度时,仍然有一个滚动条(overflow: auto
}}) 因为字体比预期的高1px
。
所以解决方案可以是以下任何一种:
padding
添加到外部 div
。这样它就会足够大以覆盖来自字体的额外像素。就我而言,在底部添加一个填充像素,在顶部添加一个像素解决了问题。line-height
设置为大一点的值(在我的例子中,从 1.25
到 1.4
),这样它就不会干扰字体。line-height
设置为 normal
,因为这样实际值会受到字体的影响。但是,according to Mozilla,这不是首选方式。答案 6 :(得分:0)
我使用Bootstrap和nav也遇到了这个问题。这是因为bootstrap将nav-tabs中的li定义为:.nav-tabs > li { margin-bottom:-1px; }
。要抵消这种情况,您还必须:
.nav-tabs > li:last-child {
margin-bottom:0;
}
无需设置last-child,以下示例将始终显示滚动,无论列表中有多少内容:
<ul class="navs nav-tabs nav-stacked" style="max-height:80px;overflow:auto;">
<li></li>
...
</ul>
答案 7 :(得分:0)