BFC(Block Formatting Contexts)(块级格式化上下文)

    技术2022-07-11  103

    了解BFC之前先了解一下普通流的概念

    元素按照在HTML中的位置至上而下的顺序进行布局,行内元素水平排列,直到行内被占满后换行,块级元素则会渲染成一个新行

    通俗来说可以把BFC理解成一个封闭的箱子,箱子内部的元素无论如何变化,都不会影响到箱子外部

    BFC的特性

    1.上下边距的堆叠 举个栗子

    <head> div{ width: 100px; height: 100px; background: lightblue; margin: 100px; } </head> <body> <div></div> <div></div> </body>

    两个div都处于同一个BFC容器下,所以第一个div的下边距与第二个div的上边距发生了堆叠,两个div的margin距离只有100px而不是我们想要的200px

    如果想要避免这种情况,可以将两个div放到不同的BFC容器中

    <div class="container"> <div></div> </div> <div class="container"> <div></div> </div>

    2.BFC清除浮动 首相要明确一个定义

    浮动的元素都会脱离普通的文档流

    举个栗子

    <div style="border: 1px solid #000;"> <div style="width: 100px;height: 100px;background: #eee;float: left;"></div> </div>

    div产生的浮动,所以容器只剩下2px的高度,这时如果我们触发容器的BFC特性,容器则会继续包裹着浮动元素

    <div style="border: 1px solid #000;overflow: hidden"> <div style="width: 100px;height: 100px;background: #eee;float: left;"></div> </div>

    3.BFC防止遮盖

    <div style="height: 100px;width: 100px;float: left;background: lightblue">我是一个左浮动的元素</div> <div style="width: 200px; height: 200px;background: #eee">我是一个没有设置浮动, 也没有触发 BFC 元素, width: 200px; height:200px; background: #eee;</div>

    第二个元素部分被浮动元素所遮盖,想避免这种情况,可以触发第二个元素的BFC特性,加入overflow:hidden 文章参考: 链接:https://zhuanlan.zhihu.com/p/25321647

    Processed: 0.011, SQL: 9