如何理解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
點擊加入答題文檔