日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

BFC与IFC概念理解+布局规则+形成方法+用处

發布時間:2025/3/19 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 BFC与IFC概念理解+布局规则+形成方法+用处 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

想要理解BFC與IFC,首先要理解另外兩個概念:Box 和 FC(即 formatting context)。

Box

一個頁面是由很多個 Box 組成的,元素的類型和 display 屬性決定了這個 Box 的類型。不同類型的 Box,會參與不同的 Formatting Context。

Block level的box會參與形成BFC,比如display值為block,list-item,table的元素。

Inline level的box會參與形成IFC,比如display值為inline,inline-table,inline-block的元素。

參考:W3C文檔block-level

FC(Formatting Context)

它是W3C CSS2.1規范中的一個概念,定義的是頁面中的一塊渲染區域,并且有一套渲染規則,它決定了其子元素將如何定位,以及和其他元素的關系和相互作用

常見的Formatting Context 有:Block Formatting Context(BFC | 塊級格式化上下文) 和 Inline Formatting Context(IFC |行內格式化上下文)。

下面就來介紹IFC和BFC的布局規則。

IFC布局規則:

在行內格式化上下文中,框(boxes)一個接一個地水平排列,起點是包含塊的頂部。水平方向上的 margin,border 和 padding在框之間得到保留。框在垂直方向上可以以不同的方式對齊:它們的頂部或底部對齊,或根據其中文字的基線對齊。包含那些框的長方形區域,會形成一行,叫做行框。

BFC布局規則:

W3C原文:

Floats, absolutely positioned elements, block containers (such as inline-blocks, table-cells, and table-captions) that are not block boxes, and block boxes with 'overflow' other than 'visible' (except when that value has been propagated to the viewport) establish new block formatting contexts for their contents.

In a block formatting context, boxes are laid out one after the other, vertically, beginning at the top of a containing block. The vertical distance between two sibling boxes is determined by the 'margin' properties. Vertical margins between adjacent block-level boxes in a block formatting context collapse.

In a block formatting context, each box's left outer edge touches the left edge of the containing block (for right-to-left formatting, right edges touch). This is true even in the presence of floats (although a box's line boxes may shrink due to the floats), unless the box establishes a new block formatting context (in which case the box itself may become narrower due to the floats).

整理為中文:

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

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

  • 每個元素的左外邊緣(margin-left), 與包含塊的左邊(contain box left)相接觸(對于從左往右的格式化,否則相反)。即使存在浮動也是如此。除非這個元素自己形成了一個新的BFC。

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

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

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

  • 參考:
    W3C文檔inline-formatting
    W3C文檔block-formatting

    怎樣形成一個BFC?

    塊級格式化上下文由以下之一創建:

  • 根元素或其它包含它的元素

  • 浮動 (元素的 float 不是 none)

  • 絕對定位的元素 (元素具有 position 為 absolute 或 fixed)

  • 非塊級元素具有 display: inline-block,table-cell, table-caption, flex, inline-flex

  • 塊級元素具有overflow ,且值不是 visible

  • 整理到這兒,對于上面第4條產生了一個small small的疑問:為什么display: inline-block;的元素是inline level 的元素,參與形成IFC,卻能創建BFC?

    后來覺得答案是這樣的:inline-block的元素的內部是一個BFC,但是它本身可以和其它inline元素一起形成IFC。

    BFC用處

    1. 清除浮動

    <div class="wrap"> <section>1</section> <section>2</section> </div> .wrap {border: 2px solid yellow;width: 250px; } section {background-color: pink;float: left;width: 100px;height: 100px; }

    可以看到,由于子元素都是浮動的,受浮動影響,邊框為黃色的父元素的高度塌陷了。

    解決方案:為 .wrap 加上 overflow: hidden;使其形成BFC,根據BFC規則第六條,計算高度時就會計算float的元素的高度,達到清除浮動影響的效果。

    2. 布局:自適應兩欄布局

    <div> <aside></aside> <main>我是好多好多文字會換行的那種蛤蛤蛤蛤蛤蛤蛤蛤蛤蛤蛤蛤蛤</main> </div> div {width: 200px;} aside {background-color: yellow;float: left;width: 100px;height: 50px; } main {background-color: pink; }

    可以看到右側元素的一部分跑到了左側元素下方。

    解決方案:為main設置 overflow: hidden; 觸發main元素的BFC,根據規則第4、5條,BFC的區域是獨立的,不會與頁面其他元素相互影響,且不會與float元素重疊,因此就可以形成兩列自適應布局

    3. 防止垂直margin合并

    <section class="top">1</section> <section class="bottom">2</section> section {background-color: pink;margin-bottom: 100px;width: 100px;height: 100px; } .bottom {margin-top: 100px; }

    可以看到,明明.top和.bottom中間加起來有200px的margin值,但是我們只能看到100px。這是因為他們的外邊距相遇發生了合并。

    怎樣解決:為其中一個元素的外面包裹一層元素。并為這個外層元素設置 overflow: hidden;,使其形成BFC。因為BFC內部是一個獨立的容器,所以不會與外部相互影響,可以防止margin合并。

    <section class="top">1</section> <div class="wrap"> <section class="bottom">2</section> </div> .wrap {overflow: hidden; }

    總結

    以上是生活随笔為你收集整理的BFC与IFC概念理解+布局规则+形成方法+用处的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 超碰caoporen| 性网爆门事件集合av | 伊人激情影院 | 男人的天堂亚洲 | 国产一区二区免费在线 | 天天爽夜夜爽视频 | 国产一区二区三区小说 | 国产不卡av在线播放 | 69国产在线 | chinesepron hd videos国产91 | 日韩av电影一区 | 成人午夜视频一区二区播放 | 在线不卡视频 | 日批网址 | 岛国av电影在线观看 | 2020av在线| 性欧美jzjz2| 国产大片一区二区 | 精品一区电影 | 亚洲天堂最新 | 久久久久人妻精品一区二区三区 | 国产一区二区日韩 | 亚洲精品国产片 | 香蕉国产精品 | 中国老熟妇自拍hd发布 | 91狠狠操| 在线看中文字幕 | 黄色1级片 | 人人妻人人做人人爽 | 三点尽露的大尺度国产 | 古代黄色片 | 国产高清久久 | 国产精品丝袜黑色高跟鞋 | 久操免费在线视频 | 狠狠撸在线观看 | 艳妇av | 国产精品国产三级国产aⅴ下载 | 激情欧美日韩 | 377p粉嫩大胆色噜噜噜 | www.精品| 日韩av在线免费播放 | 少妇人妻在线视频 | 精品国产免费视频 | 妹子干综合网 | 成人免费看aa片 | 欧美久久久影院 | 大香焦久久 | 精品中文字幕在线 | 华人永久免费 | 黑人巨大国产9丨视频 | 欧美大波大乳巨大乳 | 成人免费激情视频 | 尤物精品在线观看 | 精品国产aⅴ | 欧美久久激情 | 在线观看中文字幕av | 99久久精品国产一区二区三区 | 今天高清视频在线观看视频 | 午夜寻花 | 免费午夜人成电影 | 91资源在线播放 | 爱爱视频网站免费 | 日韩一区在线免费观看 | 9久久9毛片又大又硬又粗 | 国产99999 | 人人爽人人爽人人 | 精品视频99 | 星铁乱淫h侵犯h文 | 在线成人免费观看 | 亚洲经典一区二区三区 | 找个毛片看看 | 毛片内射久久久一区 | 国产理伦 | 欧美自拍色图 | 日韩最新中文字幕 | 欧美三级在线视频 | 国产精品久久欧美久久一区 | 97视频播放 | 波多野结衣50连登视频 | 色爱亚洲 | 中文字幕在线国产 | 久久av无码精品人妻系列试探 | 中字幕一区二区三区乱码 | 亚洲第一福利网站 | 国内精品久| av小说区| 国产精品视频一区二区三区在3 | 亚洲黄色在线 | 色一五月 | 欧洲黄色录像 | 熟妇的味道hd中文字幕 | 69视频一区二区三区 | 老女人乱淫 | 日韩av无码一区二区三区不卡 | 潘金莲一级淫片aaaaaaa | 久久白虎| 东方av在线播放 | 亚洲成人生活片 | 高清国产一区 |