zoukankan      html  css  js  c++  java
  • 关于BFC的总结

    BFC就是(Block Format Context)的缩写,直译为“块级格式化上下文”。

    它有如下四个特点:

    1. 它的垂直外边距(top和bottom)会与相邻元素的垂直外边距发生重叠

    2. 它的内部元素不会对外部元素产生影响,外部元素也不会对它的内部元素产生影响

    3. 不会与浮动元素发生重叠

    4. 高度计算包括内部的浮动元素

    每个特点的分析:

    1. 只要是块级元素,它们的垂直外边距都会重叠,所以个人感觉这应该不算是特性。

    2. 举例:一个父元素里面包含着一个子元素(假设他们都是块级元素)当子元素设置了margin-top 的时候,向下偏移的不是子元素本身而是父元素。

    这是因为如果父元素没有设置 padding 同时也没有设置 border 的话,它的高度值等于第一个子元素的 border-top 到 最后一个子元素的 border-bottom 的这段距离。

    如果设置了padding  或 border其中一个值的时候,那么父元素高度值就等于第一个子元素的 margin-top 到 最后一个子元素的margin-bottom 的这段距离

    通俗的说,如果父元素没有设置padding 同时也没有设置 border 的话,它是不会把第一个子元素的 margin-top 和 最后一个子元素的 margin-bottom 包含在内的,这就演变成子元素的 margin 外露导致影响到了父元素外部的其他元素的排版

    要解决这个问题,可以有两种方法:

    第一可以设置父元素的padding或border的值大于0。

    第二可以将父元素转变为BFC,这样它内部元素就不能影响到外部布局,从而将子元素的margin包裹在父元素内部。

    3. 正常情况下浮动元素会脱离文档流浮动在其它元素上方,但是浮动元素遇到BFC元素会正常排列,不会重叠。

    4. 当父元素内部元素浮动之后,父元素的高度会塌缩,相当于子元素从父元素脱离。但是利用BFC这个特性可以将父元素设置为BFC,这样浮动的子元素还会包裹在父元素内部,避免了父元素的坍缩。就这样做到“清除浮动”的效果。

    可以通过四种方式将元素转换为BFC:

    1. 设置float不为none

    2. 设置position不为static和relative

    3. 设置overflow不为auto

    4. 设置display为inline-block或table或table-cell

    整体来看,主要通过使元素脱离文档流来使其成为BFC

  • 相关阅读:
    Spring AOP日志实现(一)
    ArrayList和LinkedList的区别
    webmagic保存数据
    Java静态代码块、构造代码块执行顺序问题
    为Spring Cloud Ribbon配置请求重试(Camden.SR2+)
    centos关机与重启命令
    解决win环境下访问本机虚拟机中centos7 ftp服务器的问题
    【MongoDB异常】Exception authenticating MongoCredential解决方法
    mongodb解决只能本地连接不能远程连接问题
    Windows Server 2008 R2提示api-ms-win-crt-runtime-l1-1-0.dll 丢失解决方法
  • 原文地址:https://www.cnblogs.com/zhaozhipeng/p/8406399.html
Copyright © 2011-2022 走看看