您的位置:首页 > Web前端 > CSS

CSS中为什么overflow:hidden能清除浮动(float)的影响?原理是什么?

2016-08-10 20:34 701 查看
**

说法一:

**overflow:hidden 的意思是超出的部分要裁切隐藏掉

那么如果 float 的元素不占普通流位置

普通流的包含块要根据内容高度裁切隐藏

如果高度是默认值auto

那么不计算其内浮动元素高度就裁切

就有可能会裁掉float

这是反布局常识的

所以如果没有明确设定容器高情况下

它要计算内容全部高度才能确定在什么位置hidden

浮动的高度就要被计算进去

顺带达成了清理浮动的目标

同理

overflow 非默认值

position 非默认值

float 非默认值

等都是遵循这个布局计算思路.

作者:貘吃馍香

来源:知乎

说法二:

因为height: auto;的计算结果不是一定为0的。

正常父元素包含浮动子元素,父元素的高度确实为0。

但是父元素overflow:hidden;后,首先会计算height: auto;的真实高度,由于其触发了BFC,需要包含子元素,所以高度不是0,而是子元素高度。

这时overflow:hidden;才起到隐藏作用,不过父元素高度足够大,所以子元素没有被隐藏。

总之,是先计算真实高度,再去隐藏。如果是先直接隐藏了,再去计算高度也就没有意义了。

作者:hgm

来源:知乎

关于BFC,需要单独整理。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  css 布局 overflow
相关文章推荐