亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

10分鐘理解CSS BFC原理及其應(yīng)用

  發(fā)布時(shí)間:2018-02-01 14:36:40   作者:有酒   我要評論
這篇文章主要介紹了10分鐘理解BFC原理及其應(yīng)用的相關(guān)資料,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

一、常見定位方案

在講 BFC 之前,我們先來了解一下常見的定位方案,定位方案是控制元素的布局,有三種常見方案:

普通流 (normal flow)

在普通流中,元素按照其在 HTML 中的先后位置至上而下布局,在這個(gè)過程中,行內(nèi)元素水平排列,直到當(dāng)行被占滿然后換行,塊級元素則會被渲染為完整的一個(gè)新行,除非另外指定,否則所有元素默認(rèn)都是普通流定位,也可以說,普通流中元素的位置由該元素在 HTML 文檔中的位置決定。

浮動 (float)

在浮動布局中,元素首先按照普通流的位置出現(xiàn),然后根據(jù)浮動的方向盡可能的向左邊或右邊偏移,其效果與印刷排版中的文本環(huán)繞相似。

絕對定位 (absolute positioning)

在絕對定位布局中,元素會整體脫離普通流,因此絕對定位元素不會對其兄弟元素造成影響,而元素具體的位置由絕對定位的坐標(biāo)決定。

二、BFC 概念

Formatting context(格式化上下文) 是 W3C CSS2.1 規(guī)范中的一個(gè)概念。它是頁面中的一塊渲染區(qū)域,并且有一套渲染規(guī)則,它決定了其子元素將如何定位,以及和其他元素的關(guān)系和相互作用。

那么 BFC 是什么呢?

BFC 即 Block Formatting Contexts (塊級格式化上下文),它屬于上述定位方案的普通流。

具有 BFC 特性的元素可以看作是隔離了的獨(dú)立容器,容器里面的元素不會在布局上影響到外面的元素,并且 BFC 具有普通容器所沒有的一些特性。

通俗一點(diǎn)來講,可以把 BFC 理解為一個(gè)封閉的大箱子,箱子內(nèi)部的元素?zé)o論如何翻江倒海,都不會影響到外部。

三、觸發(fā) BFC

只要元素滿足下面任一條件即可觸發(fā) BFC 特性:

  1. body 根元素
  2. 浮動元素:float 除 none 以外的值
  3. 絕對定位元素:position (absolute、fixed)
  4. display 為 inline-block、table-cells、flex
  5. overflow 除了 visible 以外的值 (hidden、auto、scroll)

四、BFC 特性及應(yīng)用

1. 同一個(gè) BFC 下外邊距會發(fā)生折疊

<head>
div{
    width: 100px;
    height: 100px;
    background: lightblue;
    margin: 100px;
}
</head>
<body>
    <div></div>
    <div></div>
</body>

從效果上看,因?yàn)閮蓚€(gè) div 元素都處于同一個(gè) BFC 容器下 (這里指 body 元素) 所以第一個(gè) div 的下邊距和第二個(gè) div 的上邊距發(fā)生了重疊,所以兩個(gè)盒子之間距離只有 100px,而不是 200px。

首先這不是 CSS 的 bug,我們可以理解為一種規(guī)范,如果想要避免外邊距的重疊,可以將其放在不同的 BFC 容器中。

<div class="container">
    <p></p>
</div>
<div class="container">
    <p></p>
</div>
.container {
    overflow: hidden;
}
p {
    width: 100px;
    height: 100px;
    background: lightblue;
    margin: 100px;
}

這時(shí)候,兩個(gè)盒子邊距就變成了 200px

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

我們都知道,浮動的元素會脫離普通文檔流,來看下下面一個(gè)例子

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

由于容器內(nèi)元素浮動,脫離了文檔流,所以容器只剩下 2px 的邊距高度。如果使觸發(fā)容器的 BFC,那么容器將會包裹著浮動元素。

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

效果如圖:

3. BFC 可以阻止元素被浮動元素覆蓋

先來看一個(gè)文字環(huán)繞效果:

<div style="height: 100px;width: 100px;float: left;background: lightblue">我是一個(gè)左浮動的元素</div>
<div style="width: 200px; height: 200px;background: #eee">我是一個(gè)沒有設(shè)置浮動, 
也沒有觸發(fā) BFC 元素, width: 200px; height:200px; background: #eee;</div>

這時(shí)候其實(shí)第二個(gè)元素有部分被浮動元素所覆蓋,(但是文本信息不會被浮動元素所覆蓋) 如果想避免元素被覆蓋,可觸第二個(gè)元素的 BFC 特性,在第二個(gè)元素中加入 overflow: hidden,就會變成:

這個(gè)方法可以用來實(shí)現(xiàn)兩列自適應(yīng)布局,效果不錯(cuò),這時(shí)候左邊的寬度固定,右邊的內(nèi)容自適應(yīng)寬度(去掉上面右邊內(nèi)容的寬度)。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 淺析CSS里的BFC和IFC的用法

    這篇文章主要介紹了淺析CSS里的BFC和IFC的用法的相關(guān)資料,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-01-30
  • 淺談CSS潛藏著的BFC

    這篇文章主要介紹了淺談CSS潛藏著的BFC的相關(guān)資料,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-12-08
  • css布局之BFC模式(block formatting context)

    這篇文章主要介紹了css布局之BFC模式(block formatting context),通過BFC盒子的一些特性和應(yīng)用場景解釋了BFC模式,具體操作步驟大家可查看下文的詳細(xì)講解,感興趣的小伙
    2017-08-16
  • CSS布局基礎(chǔ)BFC

    這篇文章主要介紹了CSS布局基礎(chǔ)BFC 的相關(guān)資料,需要的朋友可以參考下
    2016-07-14
  • CSS使用BFC規(guī)則布局引發(fā)外層div包裹內(nèi)層div的處理方法

    BFC情況下人們通常在div中使用float和margin,這會經(jīng)常出現(xiàn)一些問題,這里就來看一下CSS使用BFC規(guī)則布局引發(fā)外層div包裹內(nèi)層div的處理方法,需要的朋友可以參考下.
    2016-06-03
  • CSS理解塊級格式上下文(BFC)

    BFC(Block formatting context)直譯為"塊級格式化上下文"。它規(guī)定了內(nèi)部的Block-level Box如何布局,并且與這個(gè)區(qū)域外部毫不相干.接下來通過本文給大家介紹CSS理
    2018-02-22

最新評論