Scroll CSS最大高度和溢出自动始终显示垂直滚动

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都出现了这种情

我使用以下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都出现了这种情况。

事实证明,另一种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
        ,并且仍然总是看到滚动条。请不要盲目投票。