本篇文章給大家分享的是有關(guān)BFC和IFC怎么在CSS中使用,小編覺得挺實用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

一 什么是 BFC
和之前所有博文一樣,還是先從What的角度開始介紹,由淺入深的理解BFC。
所謂的 Formatting context(格式化上下文), 它是 W3C CSS2.1 規(guī)范中的一個概念。
它是頁面中的一塊渲染區(qū)域,并且有一套渲染規(guī)則.
它決定了其子元素將如何定位,以及和其他元素的關(guān)系和相互作用。
而 Block Formatting Contexts (BFC,塊級格式化上下文),就是 一個塊級元素 的渲染顯示規(guī)則。通俗一點講,可以把 BFC 理解為一個封閉的大箱子,,容器里面的子元素不會影響到外面的元素,反之也如此。
BFC的布局規(guī)則如下:
1 內(nèi)部的盒子會在垂直方向,一個個地放置;
2 BFC是頁面上的一個隔離的獨立容器;
3 屬于同一個BFC的 兩個相鄰Box的 上下margin會發(fā)生重疊 ;
4 計算BFC的高度時,浮動元素也參與計算
5 每個元素的左邊,與包含的盒子的左邊相接觸,即使存在浮動也是如此;
6 BFC的區(qū)域不會與float重疊;
那么如何觸發(fā) BFC呢?只要元素滿足下面任一條件即可觸發(fā) BFC 特性:
body 根元素;
浮動元素:float 不為none的屬性值;
絕對定位元素:position (absolute、fixed)
display為: inline-block、table-cells、flex
overflow 除了visible以外的值 (hidden、auto、scroll)
二 BFC的特性及應(yīng)用
接下來介紹BFC常見的特性和應(yīng)用,這一部分 在解釋原因時,會用到上文的布局規(guī)則 和 觸發(fā)條件,所以需要注意一下。
1 兩個 相鄰的普通流中的 塊元素垂直方向上的 margin會折疊
<head>
.p {
width:200px;
height:50px;
margin:50px 0;
background-color:red;
}
</head>
<body>
<div class="p"></div>
<div class="p"></div>
</body>效果圖是:

根據(jù)BFC規(guī)則的第3條:
盒子垂直方向的距離由margin決定,
屬于 同一個BFC的 + 兩個相鄰Box的 + 上下margin 會發(fā)生重疊。
上文的例子 之所以發(fā)生外邊距折疊,是因為他們 同屬于 body這個根元素, 所以我們需要讓 它們 不屬于同一個BFC,就能避免外邊距折疊:
<div class="p"></div> <div class="wrap"> <div class="p"></div> </div>
.wrap {
overflow:hidden;
.p {
width:200px;
height:50px;
margin:50px 0;
background-color:red;效果圖是:

2 BFC可以包含浮動的元素(清除浮動)
正常情況下,浮動的元素會脫離普通文檔流,所以下面的代碼里:
<div style="border: 1px solid #000;"> <div style="width: 50px; height: 50px; background: #eee; float: left;"> </div> </div>
外層的div會無法包含 內(nèi)部浮動的div,效果見下圖:

但如果我們 觸發(fā)外部容器的BFC,根據(jù)BFC規(guī)范中的第4條:計算BFC的高度時,浮動元素也參與計算,那么外部div容器就可以包裹著浮動元素,所以只要把代碼修改如下:
<div style="border: 1px solid #000;overflow: hidden"> <div style="width: 100px;height: 100px;background: #eee;float: left;"></div> </div>
就可以完成以下效果:

3 BFC可以阻止元素被浮動元素覆蓋
先看一個例子:
<div class="aside"></div>
<div class="main"></div>
div {
width:300px;
}
.aside {
width: 100px;
height: 150px;
float: left;
background: black;
}
.main {
height:200px;
background-color:red;
}效果圖是:

之所以是這樣,是因為上文的 規(guī)則5: 每個元素的左邊,與包含的盒子的左邊相接觸,即使存在浮動也是如此;
所以要想改變效果,使其互補干擾,就得利用規(guī)則6 :BFC的區(qū)域不會與float重疊,讓 <div class="main"> 也能觸發(fā)BFC的性質(zhì),即:
.main {
overflow:hidden;
height:200px;
background-color:red;
}通過這種方法,就能 用來實現(xiàn) 兩列的自適應(yīng)布局。
三 簡要介紹IFC
IFC布局規(guī)則:
1 框會從包含塊的頂部開始,一個接一個地水平擺放。
2 擺放這些框時,它們在水平方向的 內(nèi)外邊距+邊框 所占用的空間都會被考慮;在垂直方向上,這些框可能會以不同形式來對齊:水平的margin、padding、border有效,垂直無效。不能指定寬高;
3 行框的寬度是 由包含塊和存在的浮動來決定;行框的高度 由行高來決定
以上就是BFC和IFC怎么在CSS中使用,小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降摹OM隳芡ㄟ^這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
本文名稱:BFC和IFC怎么在CSS中使用-創(chuàng)新互聯(lián)
本文鏈接:http://chinadenli.net/article44/ddpiee.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗、App開發(fā)、小程序開發(fā)、外貿(mào)建站、網(wǎng)頁設(shè)計公司、標(biāo)簽優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容