美文网首页
CSS知识点----BFC

CSS知识点----BFC

作者: AuglyXu | 来源:发表于2018-11-01 14:15 被阅读0次

BFC(块级格式化上下文)

  • 块格式化上下文(Block Formatting Context,BFC) 是Web页面的可视化CSS渲染的一部分,是布局过程中生成块级盒子的区域,也是浮动元素与其他元素的交互限定区域。
  • 下列方式会创建块格式化上下文(常用的):
  • 根元素或包含根元素的元素
  • 浮动元素(元素的 float 不是 none
  • 绝对定位元素(元素的 positionabsolutefixed
  • 行内块元素(元素的 displayinline-block
  • overflow 值不为 visible 的块元素
  • display 值为 [flow-root](https://drafts.csswg.org/css-display/#valdef-display-flow-root) 的元素
  • contain 值为 layoutcontentstrict 的元素
  • 弹性元素(displayflexinline-flex元素的直接子元素)
  • 网格元素(displaygridinline-grid 元素的直接子元素)

BFC的作用

清除浮动
  • 两个同级元素同时像一个方向浮动,在宽度够的情况下会显示在同一行,我们通常使用给父元素添加overflow:hidden来触发BFC
  • 原理:块格式化上下文对浮动定位(参见 float)与清除浮动(参见 clear)都很重要。浮动定位和清除浮动时只会应用于同一个BFC内的元素。浮动不会影响其它BFC中元素的布局,而清除浮动只能清除同一BFC中在它前面的元素的浮动。
   <style>
       *{
            margin:0;padding:0
        }
        .box1{
            background-color: red;
            overflow: hidden;
            *zoom:1;
        }
        .box2{
            background-color: green;
        }
        .box1 p{
            width: 100px;
            background-color: blue;
        }
        .box2 p{
            width: 100px;
            background-color: yellow;
        }
        p{
            float: left;
        }
  </style>
<body>
<div class="box1">
    <p>我是文字1</p>
    <p>我是文字1</p>
    <p>我是文字1</p>
</div>
<div class="box2">
    <p>我是文字2</p>
    <p>我是文字2</p>
    <p>我是文字2</p>
</div>
</body>
  • 解释: box1的overflow:hidden触发了BFC,box1内两个p在同一个BFC内浮动定位,紧贴在一起.box2内的p和box1的p不在同一个BFC内,所以box2内的p浮动定位的时候就不会找box1的p,就达到了清除浮动的效果
外边距折叠以及margin-top失效的问题
  • 外边距折叠(Margin collapsing)也只会发生在属于同一BFC的块级元素之间。
<style>
        *{
            margin:0;padding:0
        }
        .box1{
            margin-bottom:10px
        }
        .box2{
           margin-top:15px
        }
</style>
<body>
<div class="box1">
</div>
<div class="box2">
</div>
</body>
  • 此时两盒子间距15px,而不是25px
  • 为了解决如下问题,我们可以在box1中嵌套一个盒子,并给盒子添加一个overflow:hidden来触发BFC,两个盒子不在同一个BFC中就可以

  • margin-top失效问题
<style>
            .box1{
                width: 200px;
                height: 200px;
                background-color: red;
                border: 1px solid #000;
                overflow: hidden;//如果不添加overflow:hidden,两盒子会被一起顶下去
            }
            .box2 {
                width: 100px;
                height: 100px;
                background-color: blue;
                margin-top: 20px;
            }
</style>
<body>
<div class="box1">
</div>
<div class="box2">
</div>
</body>
  • overflow:hidden触发了外盒子的BFC,成为了一个独立的区域,所以内盒子的margin-top不会把外盒子一起顶下来

相关文章

  • 前端知识点之谈一谈css盒模型、BFC

    知识点:--css 盒模型--标准模型和 IE 模型--BFC 谈一谈 css 盒模型、BFC 是面试中常见的问题...

  • 扯淡BFC - 地震的故事

    BFC算是css基础知识中比较抽象的一个知识点。BFC的全称是 Block Format Content,块级元素...

  • CSS知识点----BFC

    BFC(块级格式化上下文) 块格式化上下文(Block Formatting Context,BFC) 是Web页...

  • CSS清除浮动的方法

    BFC CSS中的BFC BFC:block formatting context块级格式化上下文; BFC 与清...

  • CSS BFC和CSS hack

    简述CSS BFC和CSS hack BFC BFC定义:浮动元素和绝对定位元素,非块级盒子的块级容器(例如inl...

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

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

  • 快速弄懂 BFC

    参考 BFC 是什么 css 2.1 规范。BFC(Block formatting context)直译为"块级...

  • CSS-BFC的理解

    简介在使用CSS的过程中,经常会听到触发BFC,但是何为BFC。BFC(Block formatting cont...

  • 前端面试基础题

    BFC、IFC、GFC、FFC CSS2.1中只有BFC和IFC, CSS3中才有GFC和FFC。 到底什么是BF...

  • CSS中重要的BFC

    CSS中有个重要的概念BFC,搞懂BFC可以让我们理解CSS中某些原本诡异(??)的地方。 1. 简介 在解释BF...

网友评论

      本文标题:CSS知识点----BFC

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