zoukankan      html  css  js  c++  java
  • CSS中为什么overflow:hidden能清除浮动(float)的影响?原理是什么?

    http://www.zhihu.com/question/30938856

    父块没有设置指定的高宽,当子块设置为浮动后,原本包裹子块的父块的高度塌陷消失,这时给父块设置overflow:hidden就能清楚浮动造成的影响,使父块重新包裹子块。

    但这个有个本质问题,当父块高度塌陷消失,这时给父块设置overflow:hidden,按照这个属性的本意,本应该是切掉超出父块的内容,也就是应该将父块之外的浮动的子块切除隐藏。

    但为什么,这时没有切除隐藏超出边界的子块,反而恰恰让父块重新有了高度包裹子块,这难道不是和overflow:hidden的本意相背离了吗?

    为什么效果里是没有切除隐藏,反而是重新让父块生成高度包裹子块以达到清楚浮动的影响。

    请哪位高手能否从本质和根源上分析在这个效果里overflow:hidden背离其属性本意的问题,从本质和根源上分析为什么overflow:hidden背离其本意没有切除隐藏反而产生了清楚浮动的影响。

    著作权归作者所有。
    商业转载请联系作者获得授权,非商业转载请注明出处。
    作者:貘吃馍香
    链接:http://www.zhihu.com/question/30938856/answer/50036974
    来源:知乎
     
     
     
     
     
     

    泻药
    不说BFC什么的了
    就“分析”下本意

    overflow:hidden 的意思是超出的部分要裁切隐藏掉
    那么如果 float 的元素不占普通流位置
    普通流的包含块要根据内容高度裁切隐藏
    如果高度是默认值auto
    那么不计算其内浮动元素高度就裁切
    就有可能会裁掉float
    这是反布局常识的

    所以如果没有明确设定容器高情况下
    它要计算内容全部高度才能确定在什么位置hidden
    浮动的高度就要被计算进去
    顺带达成了清理浮动的目标
    同理
    overflow 非默认值
    position 非默认值
    float 非默认值
    等都是遵循这个布局计算思路

    随便瞎扯
  • 相关阅读:
    python 学习之集合 三元运算 深浅拷贝
    python 学习之数据类型和for循环
    python 学习之运算符
    python 学习之编码转换和pycharm设置
    python 学习之python数据类型和流程控制
    Django实现下载文件名称为中文的处理
    递归删除postgresql数据库中所有表
    GO编程(打卡)-Task13: 并发编程
    GO编程(打卡)-Task12: 单元测试
    GO编程(打卡)-Task11: 反射机制
  • 原文地址:https://www.cnblogs.com/vertko/p/5019393.html
Copyright © 2011-2022 走看看