中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

BFC和IFC怎么在CSS中使用

發布時間:2021-04-02 15:39:33 來源:億速云 閱讀:205 作者:Leah 欄目:web開發

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

一 什么是 BFC

和之前所有博文一樣,還是先從What的角度開始介紹,由淺入深的理解BFC。

所謂的 Formatting context(格式化上下文), 它是 W3C CSS2.1 規范中的一個概念。

它是頁面中的一塊渲染區域,并且有一套渲染規則.

它決定了其子元素將如何定位,以及和其他元素的關系和相互作用。

而 Block Formatting Contexts (BFC,塊級格式化上下文),就是 一個塊級元素 的渲染顯示規則。通俗一點講,可以把 BFC 理解為一個封閉的大箱子,,容器里面的子元素不會影響到外面的元素,反之也如此。

BFC的布局規則如下:

1 內部的盒子會在垂直方向,一個個地放置;
2 BFC是頁面上的一個隔離的獨立容器;
3 屬于同一個BFC的 兩個相鄰Box的 上下margin會發生重疊 ;
4 計算BFC的高度時,浮動元素也參與計算
5 每個元素的左邊,與包含的盒子的左邊相接觸,即使存在浮動也是如此;
6 BFC的區域不會與float重疊;

那么如何觸發 BFC呢?只要元素滿足下面任一條件即可觸發 BFC 特性:

  1. body 根元素;

  2. 浮動元素:float 不為none的屬性值;

  3. 絕對定位元素:position (absolute、fixed)

  4. display為: inline-block、table-cells、flex

  5. overflow 除了visible以外的值 (hidden、auto、scroll)

二 BFC的特性及應用

接下來介紹BFC常見的特性和應用,這一部分 在解釋原因時,會用到上文的布局規則 和 觸發條件,所以需要注意一下。

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>

效果圖是:

BFC和IFC怎么在CSS中使用

根據BFC規則的第3條:

盒子垂直方向的距離由margin決定,

屬于 同一個BFC的 + 兩個相鄰Box的 + 上下margin 會發生重疊。

上文的例子 之所以發生外邊距折疊,是因為他們 同屬于 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;

效果圖是:

BFC和IFC怎么在CSS中使用

2 BFC可以包含浮動的元素(清除浮動)

正常情況下,浮動的元素會脫離普通文檔流,所以下面的代碼里:

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

外層的div會無法包含 內部浮動的div,效果見下圖:

BFC和IFC怎么在CSS中使用

但如果我們 觸發外部容器的BFC,根據BFC規范中的第4條:計算BFC的高度時,浮動元素也參與計算,那么外部div容器就可以包裹著浮動元素,所以只要把代碼修改如下:

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

就可以完成以下效果:

BFC和IFC怎么在CSS中使用

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;  
}

效果圖是:

BFC和IFC怎么在CSS中使用

之所以是這樣,是因為上文的 規則5: 每個元素的左邊,與包含的盒子的左邊相接觸,即使存在浮動也是如此;

所以要想改變效果,使其互補干擾,就得利用規則6 :BFC的區域不會與float重疊,讓 <div class="main"> 也能觸發BFC的性質,即:

.main {  
  overflow:hidden;  
  height:200px;  
  background-color:red;  
}

通過這種方法,就能 用來實現 兩列的自適應布局。

三 簡要介紹IFC

IFC布局規則:

1 框會從包含塊的頂部開始,一個接一個地水平擺放。

2 擺放這些框時,它們在水平方向的 內外邊距+邊框 所占用的空間都會被考慮;在垂直方向上,這些框可能會以不同形式來對齊:水平的margin、padding、border有效,垂直無效。不能指定寬高;

3 行框的寬度是 由包含塊和存在的浮動來決定;行框的高度 由行高來決定

以上就是BFC和IFC怎么在CSS中使用,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

额敏县| 咸阳市| 通州区| 咸丰县| 大埔县| 长丰县| 邵阳市| 布尔津县| 佳木斯市| 长岛县| 宁明县| 三门峡市| 保靖县| 西畴县| 邯郸县| 德兴市| 林口县| 新巴尔虎左旗| 肇源县| 灵寿县| 铜川市| 黎川县| 佛教| 永新县| 精河县| 梁平县| 土默特右旗| 英吉沙县| 济南市| 商洛市| 西青区| 宁阳县| 万安县| 微山县| 遂平县| 濉溪县| 荆州市| 胶州市| 塔河县| 司法| 抚顺市|