Scroll CSS最大高度和溢出自动始终显示垂直滚动
我使用以下CSS样式设置了一个div类:Scroll CSS最大高度和溢出自动始终显示垂直滚动,scroll,overflow,css,Scroll,Overflow,Css,我使用以下CSS样式设置了一个div类: div.multiple_choice{ border: 1px solid black; max-width: 300px; max-height: 200px; overflow: auto; } 问题是,当里面的文本没有强制DIV达到200px的最大高度时,垂直滚动条仍然显示。我可以点击上下箭头,但它只会将内容上下移动一两个像素 Google Chrome(18.0版)和Iceweasel 11都出现了这种情
div.multiple_choice{
border: 1px solid black;
max-width: 300px;
max-height: 200px;
overflow: auto;
}
问题是,当里面的文本没有强制DIV达到200px的最大高度时,垂直滚动条仍然显示。我可以点击上下箭头,但它只会将内容上下移动一两个像素
Google Chrome(18.0版)和Iceweasel 11都出现了这种情况。事实证明,另一种CSS风格导致了这个问题:
body{
line-height: 1;
}
任何有兴趣了解这将如何以及为什么会导致问题的人,都可以阅读有关line height属性的内容。我遇到了这个问题。但我使用以下css样式解决了这个问题:
div.yourcontainer{overflow-y:auto;}
如果容器高于最大高度,垂直滚动条将显示。我在使用引导和导航时也遇到了这个问题。这是因为引导程序将导航选项卡中的li定义为:
.nav tabs>li{margin bottom:-1px;}
。要解决此问题,您还必须执行以下操作:
.nav-tabs > li:last-child {
margin-bottom:0;
}
在不设置最后一个子项的情况下,以下示例将始终显示scroll,无论列表中有多少内容:
<ul class="navs nav-tabs nav-stacked" style="max-height:80px;overflow:auto;">
<li></li>
...
</ul>
...
我今天早些时候遇到了这个错误。在我的例子中,子元素的列表具有display:inline块而不是display:block。切换到display:block以显示截断div中的子元素列表,解决了我的问题。我对此有问题,我发现子元素上的位置:相对导致了问题。显然,这并不是每个人都能解决的问题,尤其是在使用position:absolute
的情况下,但对我来说,这是可行的 我在尝试将react组件的列表(弹性列)包装到div中时遇到了这个问题,我通过将每个列表项中元素的边距更改为0来解决这个问题
对我来说,解决这个问题的方法是检查列表项(可能是OP中的每个
),看看是什么样式让div认为每个列表项都比人眼看到的要大
以下是检查我的项目中列表项中图标上的恶意边距的示例:
解决方案是将该图标的样式设置为垂直边距为0,尽管在我的应用程序中,我只是将所有边距设置为0,并添加了一些正确的填充
在我的例子中,问题在于字体。我们使用字体系列:Galano Grotesque
。显然,此字体的渲染高度高于计算的高度
<div>
<p>some text</p>
</div>
一些文本
因此,即使没有max height
,当内部p
和外部div
都被计算为20px
高度时,仍然有一个滚动条(带有溢出:auto
),因为字体比预期的高约1px
因此,解决方案可以是以下任意一种:
- 使用不同的字体
- 将
padding
添加到外部div
。这样,它将足够大,以涵盖额外的像素来自字体。在我的例子中,在底部添加一个填充像素,在顶部添加一个填充像素解决了这个问题
- 将
行高
设置为稍大一点的值(在我的例子中,从1.25
到1.4
),这样它就不会干扰字体
- 将
行高
设置为正常
,因为实际值将受到字体的影响。然而,这不是首选的方式
只是为了证明@Kuba Orlik的解决方案(他在接受的答案上发表评论)是唯一对我有效的解决方案
将此添加到内部元素:
line-height: normal;
注意:显式正常
不1
,因为它不同需要查看测试用例。我无法在Firefox的测试页面上验证这一点(除非Iceweasel使用的是一个非常古老的Gecko版本)。@BoltClock'sAnuicorn Iceweasel的版本号与Firefox相同,所以11是最新版本。您的链接没有解释如何/为什么行高会导致此问题。@nuarpenguin,那么行高对滚动条有什么影响呢?你的林奇身上什么都没有我也经历过这个问题。将div内的元素设置为line height
至normal
。Kuba Orlik的解决方案(line height:normal
)是唯一对mei有效的解决方案。mei面临同样的问题,将元素设置为line height解决了我的问题,谢谢你的建议!设置边距:0对我有效。我已经为子项设置了边距底部为负值,这就是为什么会出现这个错误。我觉得奇怪的是,这是第二高投票率的答案。我知道它帮助了一些用户,但它完全没有抓住问题的关键:他们已经使用了overflow:auto
,并且仍然总是看到滚动条。请不要盲目投票。