BFC布局

BFC(Block formatting context)直译为"块级格式化上下文"。它是一个独立的渲染区域,只有Block-level box参与, 它规定了内部的Block-level Box如何布局,并且与这个区域外部毫不相干。

BFC作用:

  1. BFC元素不与浮动元素相重叠(两栏布局)
  2. 清除内部浮动 (撑开高度)
    1. 原理: 触发父div的BFC属性,使下面的子div都处在父div的同一个BFC区域之内
  3. 分属于不同的BFC时,可以阻止margin重叠

如何生成BFC:(脱离文档流)

  1. 根元素,即HTML元素(最大的一个BFC)
  2. float的值不为none
  3. position的值为absolute或fixed
  4. overflow的值不为visible(默认值。内容不会被修剪,会呈现在元素框之外)
  5. display的值为inline-block、table-cell、table-caption

BFC布局规则:

  1. 内部的Box会在垂直方向,一个接一个地放置。
  2. 属于同一个BFC的两个相邻的Box的margin会发生重叠
  3. BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素。反之也如此, 文字环绕效果,设置float
  4. BFC的区域不会与float box重叠。
  5. 计算BFC的高度,浮动元素也参与计算
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>BFC自适应两栏布局</title>
  <style>
    .left {
      width: 200px;
      height: 500px;
      float: left;
      background: #999;
    }
    .main {
      height: 800px;
      background: #aaa;
      overflow: auto;
      color: #fff;
    }
  </style>
</head>
<body>
  <div class="left"></div>
  <div class="main">
    <h1>BFC 两栏布局</h1>
    <p>
      左侧块浮动到左边,但是因为是浮动块,右侧块高度一旦超过左侧块后文字就会出现在左侧的下方,因为没有块把它挡住。
    </p>
    <p>解决办法: 让右侧块变为BFC文字就不会横过去。因为BFC元素不与Float元素相重叠。</p>
  </div>
</body>
</html>
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 14,684评论 1 92
  • relative:生成相对定位的元素,通过top,bottom,left,right的位置相对于其正常位置进行定位...
    zx9426阅读 4,554评论 0 2
  • 先前在学习CSS float时,有同学提到了BFC这个词,作为求知好问的好学生,哪里不懂查哪里,那么今天就来研究一...
    这名字真不对阅读 11,579评论 3 19
  • 一,浮动元素有什么特征?对父容器、其他浮动元素、普通元素、文字分别有什么影响? 浮动模型是一种可视化格式模型,浮动...
    DeeJay_Y阅读 4,394评论 0 4
  • 曾经我们很相爱 我以为我们会一辈子在一起 可是你走了 没有理由 没有解释 后来你回来了 没有理由没有预兆 我又以为...
    宛若妮阅读 851评论 0 1