布局中的BFC 重點是前言

2022-06-02 18:27:12 字數 1712 閱讀 7596

一、前言

說實話,聽到bfc這個概念我心裡一陣咯噔,這到底是什麼?有種似曾相識的感覺,但是又很模糊。問了一下度娘,看到張鑫旭的《css深入理解流體特性和bfc特性下多欄自適應布局》。呀,原來是這東東啊。bfc應該是前端的基礎知識,也許很多前端er工作中經常用到,但是未必真的歸納總結過(自己躺槍),反正能完成工作就好了,沒必要非得腦海中有bfc這概念。不過我覺得,知識掌握一定的知識之後終究應該要善於總結,歸納成為體系,最後才能回歸本真,站在一定的高度去看待乙個問題。

二、言歸正傳

先看乙個例子,相信大家都用過。經典的兩欄布局方法。

方法很多,下面是其中一種:

說明:left不會浮動在right上面,主要是因為right樣式中新增了overflow:hidden,這方法我也用過,但是也沒想那麼多,就知道新增overflow:hidden能撐起來僅此而已;

三、開始

1、概念

css布局時,我們常常需要確定乙個元素時block型別的塊元素還是inline型別的內聯元素。fc、bfc這些概念就和這些元素型別相關。fc:formatting context,格式化上下文,指頁面中乙個渲染區域,擁有一套渲染規則,它決定了其子元素如何定位,以及與其他元素的相互關係和作用。

bfc:block formatting context,塊級格式化上下文,乙個獨立的塊級渲染區域,該區域擁有一套渲染規則來約束塊級盒子的布局,且與區域外部無關。表現原則就是,內部子元素再怎麼翻江倒海,翻雲覆雨都不會影響外部的元素。所以,避免margin穿透啊,清除浮動什麼的也好理解了。

2、bfc生成

① float的值不為none。

② overflow的值為auto,scroll或hidden。

③ display的值為table-cell, table-caption, inline-block中的任何乙個。

④ position的值為absolute或fixed

3、bfc約束規則:

1.生成bfc元素的子元素會乙個接著乙個防止。垂直方向上他們的起點事乙個包含塊的頂部,兩個相鄰子元素之間的垂直距離取決於元素的margin特性。在bfc中相鄰的塊級元素外邊距會摺疊,同屬乙個bfc的兩個相鄰box的margin會發生重疊。

2.生成bfc元素的子元素中,每乙個子元素左外邊距與包含塊的左邊界接觸,即使浮動元素也是如此(除非這個子元素自身也是乙個浮動元素)。

3.bfc的區域不會與float的元素區域重疊。

4.計算bfc高度時,浮動元素也參與計算。

5.bfc就是頁面上乙個隔離的獨立容器,容器裡面的子元素不會影響到外面元素,反之亦然。

我們在寫css常見的一些問題都可以由上面兩條推出,例如:

1.block元素與父元素同寬,所以block元素豎直方向上垂直排列。

2.豎直方向上有的block元素margin會重疊,水平方向不會。

3.浮動元素會盡量接近左上方或右上方。

4.為父元素設定overflow:hidden或浮動父元素,則父元素會包含其浮動的子元素。

4、應用

上面知道了bfc的約束規則之後,我們可以利用(觸發)它來做點事情;

1、防止margin重疊,

2、清除內部浮動

3、自適應多欄布局

簡歷的重點是抓人

亂象,印跡 簡歷的重點是抓人 我有時會幫朋友們做些工作引薦,所以經常見到一種可惜的情況 有些人明明素質很好 專業很過硬 經驗很豐富,偏偏簡歷做得太過敷衍潦草,一眼看去泯然眾人 毫無亮點,甚至讓希望引薦的我感到汗顏。看來,有必要認真談談簡歷這件事情。要想找到好工作,簡歷是敲門磚,所以怎麼重視都不為過,...

用牛頓法求方程的根(重點是平方根)

牛頓迭代法 newton s method 又稱為牛頓 拉夫遜方法 newton raphson method 它是牛頓在17世紀提出的一種在實數域和複數域上近似求解方程的方法。多數方程不存在求根公式,因此求精確根非常困難,甚至不可能,從而尋找方程的近似根就顯得特別重要。方法使用函式f x 的泰勒級...

RSA 如果你的安全計畫的重點是合規性,那就錯了

rsa總裁amit yoran在本週舉行的rsa大會開幕式上說 如果你的安全計畫的重點是合規性,那就錯了 相反,企業應該通過僱傭安全 獵人 出去尋找那些正變得越來越複雜及有組織的敵人來提公升安全性。他說 我們應該利用起有創造力,好奇,有問題解決能力的分析師,並讓他們自由跟蹤你的敵人。yoran承認這...