前端BFC佈局學習

BFC,全稱爲(Block formatting context)。按照個人理解是咱們在某一條件下會觸發BFC佈局,會產生必定的效果。html

Block Formatting Contexts翻譯爲:塊級元素格式化上下文。它決定了塊級元素如何對它的內容進行佈局,以及與其餘元素的關係和相互做用。佈局

其中塊級元素能夠理解爲父級元素,內容便是子元素,子元素也爲塊元素,其餘元素指的是與內容同級別的兄弟元素,相互做用指的是BFC裏的元素與外面的元素不會發生影響。翻譯

而觸發BFC的條件是:code

一、float的值不爲none
二、overflow的值不爲visible
三、display的值爲table-cell、table-caption和inline-block之一
四、position的值不爲static或者releative中任何一個

普通文檔流的佈局規則(通常像我這種新手沒有佈局意識的,就應該是普通文檔流佈局了。。。)orm

一、浮動的元素是不會被父級計算高度
二、非浮動元素會覆蓋浮動元素的位置
三、margin會傳遞給父級
四、兩個相鄰的元素上下margin會重疊

BFC的佈局規則htm

一、浮動的元素會被父級計算高度(父級觸發了BFC)
二、非浮動元素不會覆蓋浮動元素的位置(非浮動元素觸發了BFC)
三、margin不會傳遞給父級(父級觸發了BFC)
四、兩個相鄰的元素上下margin不會重疊(給其中一個元素添加一個單獨的父級,而後讓他的父級觸發了BFC)

實例:文檔

<!--html代碼
BFC知足條件:display:inline-block;
因此會遵循BFC的佈局規則,使得其浮動元素會被父級計算高度,從而也就避免了高度塌陷。
-->
<div style="border: 1px solid #f00; display: inline-block;">
    <div style="width: 100px; height: 100px; background: green; float: left;"></div>
</div>
 <!--
BFC知足條件:overflow:hidden;兄弟元素之間不會相互覆蓋
-->
<div style="border: 1px solid #f00; margin-top: 100px;">
    <div style="width: 100px; height: 100px; background: green; float: left;">hello1</div>
    <div style="width: 100px; height: 100px; background: red; overflow: hidden;">helloagain</div>
</div>
 <!--
    BFC知足條件:overflow:hidden;使得父級元素與子集元素margin不會重疊
-->
<div style="background: blue; margin-top: 100px; overflow: hidden;">
    <div style="width: 100px; height: 100px; background: green; margin-top: 100px;">hello1</div>
    <div style="width: 100px; height: 100px; background: red;">helloagain</div>
</div>

<!--
    BFC知足條件:overflow:hidden;使得父級元素與子集元素margin不會重疊,以及同級元素的margin不會重疊
-->
<div style="margin-top: 100px;">
    <div style="width: 100px; height: 100px; background: green; margin: 100px 0;">hello1</div>
    <div style="overflow: hidden;">
        <div style="width: 100px; height: 100px; background: red; margin: 100px 0;">helloagain</div>
    </div>
</div>
相關文章
相關標籤/搜索