溢出:在 Chrome、IE 中自动添加滚动条

Posted

技术标签:

【中文标题】溢出:在 Chrome、IE 中自动添加滚动条【英文标题】:overflow:auto adding scrollbars in Chrome, IE 【发布时间】:2012-08-03 13:13:36 【问题描述】:

我曾经添加一个<div style='clear:both'></div> 来清除之前段中的浮点数,但有人建议我应该在<div> 上使用overflow:auto 和浮点数,因为它更简单、更干净。

问题是,我收到报告说我的网站中有一些奇怪的“阴影”。经过调查,事实证明它发生在 Chrome 中,而不是 Firefox 中,并且那些“阴影”实际上是非常小的滚动条。

我试图将这个 jsfiddle http://jsfiddle.net/57HM3/4/ 中的部分减少到最低限度。请注意,它们在最右边(在显示“结果”的位置)。它似乎与行高有关,如果我将其设置为 1.2 而不是 1.1,它就会消失。这是某种已知问题(我不知道)吗?

我知道还有其他方法可以清除它们,但它们涉及到 IE 特定的代码,而不是什么。我想保持原样,只是将带有浮动的 div 设置为 overflow:auto (如果这不起作用,我宁愿回去添加额外的 <div>

【问题讨论】:

【参考方案1】:

添加 overflow:hidden 而不是。这将清除您的两者并且不会添加任何滚动

【讨论】:

但它会增长以容纳浮动(没有我指定高度)吗?既然我没有限制任何地方的高度,为什么overflow:auto 还要添加滚动条? 是的,它可以在小提琴中使用。我仍然不知道为什么overflow:auto 会添加它们,因为没有指定高度,这是一个错误吗? div 的默认高度约为 20px。因此,如果 div 包含大于 20px 的高度,那么它将滚动。【参考方案2】:

不要胡思乱想溢出。我会推荐一个“clearfix”解决方案。这是我使用的,我把它放在每个项目开始时所有样式表的顶部:

/* CLEAR-FIX */
.clearfix:after  
    visibility: hidden; display: block; font-size: 0; 
    content: " "; clear: both; height: 0; 

*:first-child+html .clearfix  zoom: 1;  /* IE7 */

...很久以前从博客上看到的,我不记得在哪里了。

任何需要与浮动一起增长的容器只需要添加“clearfix”类:

<div class="test" class="clearfix">
    <div style="float:left">Hello</div>
    <div style="float:left">World</div>
</div>

顺便说一句,如果你想知道 为什么 CSS 是这样的,浮动通常不计入父母身高的一部分,请参阅:Why do non-floating parents of floating elements collapse?

【讨论】:

【参考方案3】:

如果您想为容器div 保留overflow:auto 规则,可以尝试从.test 类中删除line-height 规则。

【讨论】:

以上是关于溢出:在 Chrome、IE 中自动添加滚动条的主要内容,如果未能解决你的问题,请参考以下文章

Flexbox 溢出滚动条显示在正文而不是内部元素上

chrome,firefox,safari,firefox,ie隐藏滚动条

溢出-y:滚动未在 Chrome 中显示滚动条

前端(浏览器兼容性Ie与chrome)之滚动条的隐藏

前端-解决IE浏览器下iframe中出现多余的滚动条问题

IE+溢出:隐藏