BFC布局

作者: 前端二营长 | 来源:发表于2019-02-26 11:13 被阅读0次

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>

相关文章

  • 2019-07-03

    BFC 是什么,BFC布局规则是?哪些元素会生成BFC?

  • 什么是BFC

    BFC:即“块级格式化上下文” BFC是在传统布局中实现自适应布局,所产生的一种布局。 那如何触发BFC呢? 下面...

  • 面试题

    1.Bfc 1、BFC是一个独立的布局环境,BFC内部的元素布局与外部互不影响;2、可以通过一些条件触发BFC,从...

  • CSS进阶(二)

    BFC 渐进增强和优雅降级 CSS验证 / 压缩 圣杯布局与双飞翼布局 BFC(块级格式化上下文) BFC(Blo...

  • BFC

    什么是 BFC Block Formatting Contexts(BFC):块级元素格式化上下文 BFC布局规则...

  • 关于 BFC 的布局应用:清除浮动、文字环绕

    关于 BFC 的布局应用:清除浮动、文字环绕 参考文档:理解CSS中BFC BFC(Block Formattin...

  • CSS中的BFC

    个人理解 1、BFC是一个独立的布局环境,BFC内部的元素布局与外部互不影响; 2、可以通过一些条件触发BFC,从...

  • 一文搞懂CSS中的BFC是什么?

    个人理解 1、BFC是一个独立的布局环境,BFC内部的元素布局与外部互不影响; 2、可以通过一些条件触发BFC,从...

  • 多列布局思路

    首先阅读:BFC与多列布局 通过BFC特性:float + BFC盒子 通过margin回拉(用到float)或绝...

  • 布局

    两栏布局(bfc)demo 原理:BFC的区域不会与float box重叠。通过触发main生成BFC, 来实现自...

网友评论

      本文标题:BFC布局

      本文链接:https://www.haomeiwen.com/subject/zptayqtx.html