如何理解CSS中BFC?css
定义: 块格式化上下文(Block Formatting Context,BFC) 是Web页面的可视化CSS渲染的一部分,是块盒子的布局过程发生的区域,也是浮动元素与其余元素交互的区域。
代码理解布局
<style> div{ width: 100px; height: 100px; background: red; margin: 100px; } </style> //两个 div 元素都处于同一个 BFC 容器下 (这里指 body 元素) 因此第一个 div 的下边距和第二个 div 的上边距发生了重叠,两个盒子之间距离只有 100px,而不是 200px <body> <div></div> <div></div> </body> // 这不是 CSS 的 bug,咱们能够理解为一种规范,若是想要避免外边距的重叠,能够将其放在不一样的 BFC 容器中
咱们都知道,浮动的元素会脱离普通文档流,来看下下面一个例子学习
// 因为容器内元素浮动,脱离了文档流,因此容器只剩下 2px 的边距高度。若是使触发容器的 BFC,那么容器将会包裹着浮动元素 <div style="border: 1px solid #000;"> <div style="width: 100px;height: 100px;background: red;float: left;"></div> </div> // 下面咱们将其清除浮动触发BFC,将可包裹浮动元素 <div style="border: 1px solid #000;overflow:hidden"> <div style="width: 100px;height: 100px;background: red;float: left;"></div> </div>
这里有一个经典的css布局试题(两列自适应布局)就是应用的BFC特性flex
<div style="float:left; width:200px; background:blue">left</div> <div style="height:100%; background: red">right</div>
下列方式会触发BFC(摘抄自MDN)spa
BFC概念不少同窗都没有什么概念,不知道为何须要清除浮动,margin重叠等等系列骚操做,看完这篇我想应该有个大概了code
再来回顾一个BFC的特性orm
JS每日一题能够当作是一个语音答题社区
天天利用碎片时间采用60秒内的语音形式来完成当天的考题
群主在第二天0点推送当天的参考答案cdn
点击加入答题文档