国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
當前位置: 首頁 - 科技 - 知識百科 - 正文

BFC(Blockformattingcontexts)初探_html/css

來源:懂視網 責編:小采 時間:2020-11-27 16:36:59
文檔

BFC(Blockformattingcontexts)初探_html/css

BFC(Blockformattingcontexts)初探_html/css_WEB-ITnose:前端工程師求職面試的時候,或多或少都會問到一點BFC(Block formatting contexts)相關的知識。在平時的開發中我也遇到過BFC方面的問題,但是沒有好好整理過這方面的知識,所以別人問我的時候,我都不敢說自己知道這么個概念o(╯□╰)o。這兩天,我仔細閱
推薦度:
導讀BFC(Blockformattingcontexts)初探_html/css_WEB-ITnose:前端工程師求職面試的時候,或多或少都會問到一點BFC(Block formatting contexts)相關的知識。在平時的開發中我也遇到過BFC方面的問題,但是沒有好好整理過這方面的知識,所以別人問我的時候,我都不敢說自己知道這么個概念o(╯□╰)o。這兩天,我仔細閱

前端工程師求職面試的時候,或多或少都會問到一點BFC(Block formatting contexts)相關的知識。在平時的開發中我也遇到過BFC方面的問題,但是沒有好好整理過這方面的知識,所以別人問我的時候,我都不敢說自己知道這么個概念o(╯□╰)o。這兩天,我仔細閱讀了一些文章來填補這塊知識漏洞。

什么是BFC?

在理解BFC是什么之前,需要了解Box、Formatting Context的概念

Box:CSS布局的基本單位

Box是CSS布局的對象和基本單位,直觀點來說,就是一個頁面是由很多個Box組成的。元素的類型和display屬性,決定了這個Box的類型。不同類型的Box,會參與不同的Formatting Context(一個決定如何渲染文檔的容器),因此Box內的元素會以不同的方式渲染。盒子分類:

  • block-level box:display屬性為block, list-item, table的元素,會生成block-level box。并且參與block formatting context;

  • inline-level box:display屬性為inline, inline-block, inline-table的元素,會生成inline-level box。并且參與inline formatting context;

  • run-in box:display屬性為run-in的元素,根據上下文決定對象是內聯對象還是塊級對象。CSS3屬性!

  • Formatting Context

    Formatting Context是W3C CSS2.1規范中的一個概念。它是頁面中的一塊渲染區域,并且有一套渲染規則,它決定了其子元素將如何定位,以及和其他元素的關系和相互作用。最常見的Formatting Context有Block Formatting Context(BFC)和Inline Formatting Context(IFC)。

    BFC定義

    BFC(Block Formatting Context)塊級格式化上下文,它是一個的渲染區域,只有Block-level box參與,它規定了內部的Block-level Box如何布局,并且與這個區域外部毫不相干。

    BFC布局規則

  • 內部的Box會在垂直方向,一個接一個地放置

  • Box垂直方向的距離由margin決定,屬于同一個BFC的兩個相鄰Box的margin會發生重疊

  • 每個元素的margin box的左邊,與包含塊border box的左邊相接觸(對于從左往右的格式化,否則相反)

  • BFC的區域不會與float box重疊

  • BFC就是頁面上的一個隔離的容器,容器里面的子元素不會影響到外面的元素。反之也如此

  • 計算BFC的高度時,浮動元素也參與計算

  • 哪些元素會生成BFC

  • 根元素

  • float屬性不為none

  • position為absolute或fixed

  • display為inline-block, table-cell, table-caption, flex, inline-flex

  • overflow不為visible

  • BFC作用與原理

    1. 自適應兩欄布局

     

    顯示效果:

    根據BFC布局規則第3條:

    每個元素的margin box的左邊, 與包含塊border box的左邊相接觸(對于從左往右的格式化,否則相反)。即使存在浮動也是如此。

    因此,雖然存在浮動的元素aside,但main的左邊依然會與包含塊的左邊相接觸

    根據BFC布局規則第四條:

    BFC的區域不會與float box重疊

    我們可以通過通過觸發main生成BFC, 來實現自適應兩欄布局:

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

    當觸發main生成BFC后,這個新的BFC不會與浮動的aside重疊。因此會根據包含塊的寬度,和aside的寬度,自動變窄。效果如下:

    2. 清除內部浮動

     

    顯示效果:

    根據BFC布局規則第六條:

    計算BFC的高度時,浮動元素也參與計算

    為達到清除內部浮動,我們可以觸發par生成BFC,那么par在計算高度時,par內部的浮動元素child也會參與計算

    .par { border: 5px solid #fcc; width: 300px; overflow: hidden; }

    效果如下:

    3. 防止垂直margin重疊

     

    heihei

    gagaga

    顯示效果

    兩個p之間的距離為100px,發生了margin重疊

    根據BFC布局規則第二條:

    Box垂直方向的距離由margin決定。屬于同一個BFC的兩個相鄰Box的margin會發生重疊margin重疊規則:* 兩個相鄰的外邊距都是正數時,折疊結果是它們兩者之間較大的值* 兩個相鄰的外邊距都是負數時,折疊結果是兩者絕對值的較大值* 兩個外邊距一正一負時,折疊結果是兩者的相加的和

    我們可以在p外面包裹一層容器,并觸發該容器生成一個BFC。那么兩個P便不屬于同一個BFC,就不會發生margin重疊了

     

    heihei

    gagaga

    顯示效果:

    總結

    其實以上的幾個例子都體現了BFC布局規則第五條:

    BFC就是頁面上的一個隔離的容器,容器里面的子元素不會影響到外面的元素。反之也如此!

    因為BFC內部的元素和外部的元素絕對不會互相影響,因此, 當BFC外部存在浮動時,它不應該影響BFC內部Box的布局,BFC會通過變窄,而不與浮動有重疊。同樣的,當BFC內部有浮動時,為了不影響外部元素的布局,BFC計算高度時會包括浮動的高度。避免margin重疊也是這樣的一個道理。

    參考

  • 前端精選文摘:BFC 神奇背后的原理

  • 我對BFC的理解

  • 談外margin collapsing(外邊距疊加)

  • 聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    BFC(Blockformattingcontexts)初探_html/css

    BFC(Blockformattingcontexts)初探_html/css_WEB-ITnose:前端工程師求職面試的時候,或多或少都會問到一點BFC(Block formatting contexts)相關的知識。在平時的開發中我也遇到過BFC方面的問題,但是沒有好好整理過這方面的知識,所以別人問我的時候,我都不敢說自己知道這么個概念o(╯□╰)o。這兩天,我仔細閱
    推薦度:
    標簽: html css web
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top 主站蜘蛛池模板: 亚洲色图国产精品 | 国产欧美久久一区二区 | 久久国产精品最新一区 | 欧美阿v | 精品国产亚一区二区三区 | 黄网站在线观看 | 国产成人久久精品二区三区 | 视频一区二区免费 | 欧美精品日韩 | 色精品一区二区三区 | 欧美日韩一区二区三区在线观看 | 国产日韩欧美精品一区二区三区 | 91欧美一区二区三区综合在线 | 日韩另类在线 | 色妞综合网 | 国产成人99久久亚洲综合精品 | 美女全黄网站 | 伊人久久亚洲综合天堂 | 欧美精品首页 | 欧美视频在线观看免费 | 国产一区在线观看视频 | 精品久久久久中文字幕日本 | 欧美中出在线 | 国产2区| 国产69精品久久 | 在线精品欧美日韩 | a一区二区三区视频 | 欧美另类图片亚洲偷 | 一本久久精品一区二区 | 91麻豆精品国产91久久久 | 九草伊人 | 亚洲欧美综合图区官网 | 欧美成人性色生活18黑人 | 国产视频一区二区三区四区 | 国产激情视频一区二区三区 | 在线永久免费观看的毛片 | 欧美日韩国产一区二区三区在线观看 | 欧美极品尤物在线播放一级 | 亚洲欧美日韩网站 | 亚洲欧美国产精品第1页 | 麻豆系列|