BFC

BFC定义:

块级格式化上下文,是一个独立的渲染区域,让处于BFC内部的元素与外部的元素相互隔离,使内外元素的定位不会互相影响。

IE下为layout,可用过zoom:1触发

在平常的css编写过程中,zoom;1能够比较神奇的解决ie下比较奇葩的bug。

譬如:外边距(margin的重叠)、清除浮动、触发ie的haslayout属性等。

.clearfix{zoom:1};/*触发haslayout*/

BFC原理:

  • BFC内部的盒子,会在垂直方向,一个接一个的放置,垂直方向上也会发生边距重叠。
  • BFC就是页面上的一个独立容器,容器内的子元素不会影响到外面的元素,外面的元素也不会影响到里面的元素。
  • BFC的区域不会与float box重叠。
  • 计算BFC的高度时,浮动元素也被计算在内。

BFC出发条件:

  • 根元素或其他包含元素;
  • 浮动元素:float:left/right
  • 绝对定位:position:absolute/fixed
  • 具有overflow且值不少visible的块元素,overflow:auto/hidden
  • 内联块:display:inline-block/table-cell/table-caption/flex/inline-flex

当属性值为上述情况时,都会让所属box产生BFC

BFC的应用

1.解决垂直边距重叠问题:这样就好出现第一个p标签的margin-bottom不会和第二个p标签的margin-top重叠,这也是BFC的另一个原则,不会影响到外边的box,是一个独立的区域。

<section id="margin">
  <style>
    #margin {
      background: pink;
      overflow: hidden;
    }
    #margin>p {
      margin: 5px auto 25px;
      background: red;
    }
    #margin>div>p {
      margin: 5px auto 20px;
      background: red;
    }
  </style>
  <p>1</p>
  <div style="overflow:hidden">
     <p>2</p>
  </div>
  <p>3</p>
</section>

2.清除浮动:BFC子元素即使是float也会参与计算

<section id="float">
  <style media="screen">
    #float{
      background: #434343;
      overflow: auto;
    }
    #float .float{
      float: left;
      font-size: 30px;
    }
  </style>
  <div class="float">我是浮动元素</div>
</section>

3.自适应布局:利用BFC的这一个原理就可以实现两栏布局,左边定宽,右边自适应。不会相互影响,哪怕高度不相等。

<section id="layout">
  <style media="screen">
    #layout{
      background: red;
    }
    #layout .left{
      float: left;
      width: 100px;
      height: 100px;
      background: #664664;
    }
    #layout .right{
      height: 110px;
      background: #ccc;
      overflow: auto;
    }
  </style>
  <div class="left"></div>
  <div class="right"></div>
</section>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值