Css中的float和BFC(Block Formatting Context)《一》

css中的float(浮動(dòng)):

在css中浮動(dòng)的作用可讓元素脫離文檔流,從而達(dá)到某種布局效果

  • float:left鸳君,可以讓元素向左浮動(dòng),元素會(huì)浮動(dòng)到父元素的左邊緣,由于脫離了文檔流皆的,所以處于正常文檔流內(nèi)的元素會(huì)后來(lái)居上,相應(yīng)的浮動(dòng)元素會(huì)蓋在位于它之后蹋盆,且和它處于同一父元素內(nèi)的元素上面费薄。
    <pre>
    <code><div class="container"></code>
    <code><div class="elem-1"></div></code>
    <code><div class="elem-2"></div></code>
    <code><div class="elem-3"></div></code>
    <code></div></code>
    </pre><pre>// float 1
    .container {
    border: 3px solid blue;
    padding: 10px;
    }
    .elem-1 {
    width: 80px;
    height: 80px;
    background-color: green;
    }
    .elem-2 {
    width: 100px;
    height: 100px;
    background-color: yellow;
    }
    .elem-3 {
    width: 120px;
    height: 120px;
    background-color: red;
    }
    // float 2
    .elem-1 {
    width: 80px;
    height: 80px;
    float: left;
    background-color: green;
    }
    </pre>
    當(dāng)我給elem-1加上float:left之后硝全,elem-1脫離文檔流,且浮動(dòng)于elem-2之上
    float-1 添加float之前.png

    float-2 加上float之后.png

    如果我給所有elem都加上float:left之后楞抡,它們都會(huì)脫離文檔流伟众,且會(huì)按照浮動(dòng)方向依次排列,一個(gè)元素內(nèi)部所有子元素都處于浮動(dòng)狀態(tài)時(shí)召廷,父元素會(huì)出現(xiàn)塌陷的情況凳厢,也就是身體被掏空
    <pre>// float 3
    .elem-2 {
    width: 100px;
    height: 100px;
    float: left;
    background-color: yellow;
    }
    .elem-3 {
    width: 120px;
    height: 120px;
    float: left;
    background-color: red;
    }
    </pre>
    float-3.png

    但注意到元素float:left之后,雖然脫離文檔流竞慢,但還是會(huì)浮動(dòng)到content的邊緣先紫,并不會(huì)超出padding
  • 浮動(dòng)的結(jié)果
    元素的浮動(dòng)會(huì)在頁(yè)面布局的過(guò)程中很方便,但造成的影響有時(shí)也會(huì)讓人很頭疼筹煮,元素塌陷就是其中一個(gè)弊端遮精。
    由上面的例子可以看出,元素的浮動(dòng)败潦,會(huì)影響到其后相鄰的元素(elem1浮動(dòng)于elem2上本冲,蓋住了elem2的內(nèi)容),同時(shí)浮動(dòng)會(huì)造成的一個(gè)結(jié)果就是<u>產(chǎn)生一個(gè)BFC的context</u>, 這個(gè)我們之后在繼續(xù)說(shuō)明BFC是個(gè)什么鬼
  • 清除浮動(dòng)
    為了處理由于用了浮動(dòng)劫扒,一時(shí)開(kāi)心而埋下的隱患檬洞,你就必須得知道清除浮動(dòng)的一些方法。
    常用的一些方法有
  1. 在其相鄰元素上加上<code>clear:left/right/both;</code>這個(gè)css樣式沟饥,
    <pre>
    <div class="container">
    <code> ...</code>
    <code> ...</code>
    <code> ...</code>
    <code> <div class="elem-4" style="clear:left"></div></code>
    </div>
    </pre>
    這種清除浮動(dòng)的方式很容易理解添怔,浮動(dòng)會(huì)給緊鄰的元素造成布局影響,那我在它的緊鄰元素上清除掉浮動(dòng)就好了
    float-4.png

    所以這樣贤旷,浮動(dòng)造成的塌陷問(wèn)題就被解決了澎灸,同時(shí),內(nèi)部的浮動(dòng)元素還能享受到浮動(dòng)帶來(lái)的不一樣的橫向block排列方式遮晚,而不用你去設(shè)置<code>display: inline-block;</code>這個(gè)屬性了性昭,而且inline-block 的設(shè)置會(huì)有個(gè)小缺陷,并排的行內(nèi)塊級(jí)元素中間會(huì)有大約4px的間距县遣,所以通常又需要<code>margin-right: -4px;</code>來(lái)解決這一問(wèn)題糜颠,并不是特別方便,而浮動(dòng)能幫你輕易的實(shí)現(xiàn)這種布局效果
  2. 在浮動(dòng)元素的父元素上添加偽元素清除浮動(dòng)
    <pre>
    .container:after {
    content: '';
    display: table;
    clear: both;
    }
    </pre>
    這種方法相比較上一種添加一個(gè)沒(méi)太大意義的html元素來(lái)說(shuō)更合理一些萧求,它采用給父元素加偽類的方法來(lái)清除子元素浮動(dòng)帶來(lái)的布局影響其兴,同樣能夠達(dá)到圖float-4的效果,這里需要注意的有兩點(diǎn)夸政,1?? content元旬,是偽元素中必須的一個(gè)屬性,但你可以設(shè)一個(gè)空值。2?? display的設(shè)置匀归,display可以設(shè)置成block也可以設(shè)制成table坑资,都會(huì)有清除浮動(dòng)的效果,但通常情況下都會(huì)設(shè)置table穆端,因?yàn)橄啾萣lock袱贮,table不容易影響其他頁(yè)面元素的布局。

上述兩種方法都是比較常規(guī)的利用clear屬性來(lái)清除浮動(dòng)的不同做法体啰,但清除浮動(dòng)還有的一種做法是構(gòu)造一個(gè)BFC(Block Formatting Context)容器攒巍,聽(tīng)起來(lái)似乎會(huì)比較麻煩,好像很難的樣子荒勇,但實(shí)際并非如此柒莉,在下一節(jié)會(huì)給大家做BFC的介紹,以及用它清除浮動(dòng)的辦法沽翔。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末兢孝,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子搀擂,更是在濱河造成了極大的恐慌,老刑警劉巖卷玉,帶你破解...
    沈念sama閱讀 211,123評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件哨颂,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡相种,警方通過(guò)查閱死者的電腦和手機(jī)威恼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)寝并,“玉大人箫措,你說(shuō)我怎么就攤上這事〕牧剩” “怎么了斤蔓?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,723評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)镀岛。 經(jīng)常有香客問(wèn)我弦牡,道長(zhǎng),這世上最難降的妖魔是什么漂羊? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,357評(píng)論 1 283
  • 正文 為了忘掉前任驾锰,我火速辦了婚禮,結(jié)果婚禮上走越,老公的妹妹穿的比我還像新娘椭豫。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布赏酥。 她就那樣靜靜地躺著喳整,像睡著了一般。 火紅的嫁衣襯著肌膚如雪今缚。 梳的紋絲不亂的頭發(fā)上算柳,一...
    開(kāi)封第一講書(shū)人閱讀 49,760評(píng)論 1 289
  • 那天,我揣著相機(jī)與錄音姓言,去河邊找鬼瞬项。 笑死,一個(gè)胖子當(dāng)著我的面吹牛何荚,可吹牛的內(nèi)容都是我干的囱淋。 我是一名探鬼主播,決...
    沈念sama閱讀 38,904評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼餐塘,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼妥衣!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起戒傻,我...
    開(kāi)封第一講書(shū)人閱讀 37,672評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤税手,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后需纳,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體芦倒,經(jīng)...
    沈念sama閱讀 44,118評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評(píng)論 2 325
  • 正文 我和宋清朗相戀三年不翩,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了兵扬。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,599評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡口蝠,死狀恐怖器钟,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情妙蔗,我是刑警寧澤傲霸,帶...
    沈念sama閱讀 34,264評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站眉反,受9級(jí)特大地震影響狞谱,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜禁漓,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評(píng)論 3 312
  • 文/蒙蒙 一跟衅、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧播歼,春花似錦伶跷、人聲如沸掰读。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,731評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)蹈集。三九已至,卻和暖如春雇初,著一層夾襖步出監(jiān)牢的瞬間拢肆,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,956評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工靖诗, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留郭怪,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,286評(píng)論 2 360
  • 正文 我出身青樓刊橘,卻偏偏與公主長(zhǎng)得像鄙才,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子促绵,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 各種純css圖標(biāo) CSS3可以實(shí)現(xiàn)很多漂亮的圖形攒庵,我收集了32種圖形,在下面列出败晴。直接用CSS3畫(huà)出這些圖形浓冒,要比...
    劍殘閱讀 9,506評(píng)論 0 8
  • 1.浮動(dòng)產(chǎn)生負(fù)作用 背景不能顯示由于浮動(dòng)產(chǎn)生,如果對(duì)父級(jí)設(shè)置了(CSS background背景)CSS背景顏色或...
    莫失丿莫忘閱讀 397評(píng)論 0 1
  • 一僚祷、在什么場(chǎng)景下會(huì)出現(xiàn)外邊距合并佛致?如何合并贮缕?如何不讓相鄰元素外邊距合并?給個(gè)父子外邊距合并的范例 在CSS當(dāng)中俺榆,相...
    dengpan閱讀 569評(píng)論 0 0
  • 問(wèn)答題47 /72 常見(jiàn)瀏覽器兼容性問(wèn)題與解決方案感昼? 參考答案 (1)瀏覽器兼容問(wèn)題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,734評(píng)論 1 92
  • 1.英語(yǔ) 我們從初中,有的從幼兒園就開(kāi)始學(xué)英語(yǔ)罐脊,學(xué)了幾十年定嗓,聽(tīng)了幾十年,寫(xiě)了幾十年萍桌,背了幾十年宵溅,卻仍然沒(méi)能開(kāi)得了口...
    質(zhì)D有升閱讀 274評(píng)論 0 1