什么時(shí)候需要清除浮動(dòng)堪置,清除浮動(dòng)都有哪些方法

什么時(shí)候要清除浮動(dòng)

其實(shí)浮動(dòng)float最開(kāi)始出現(xiàn)的意義只是為了讓文字環(huán)繞圖片而已张惹。但人們發(fā)現(xiàn),如果想要三個(gè)塊級(jí)元素并排顯示坎匿,都給它們加個(gè)float來(lái)得會(huì)比較方便雷激。但這樣做也會(huì)帶來(lái)問(wèn)題......

我們希望看到這樣的效果:

希望看到的效果

但結(jié)果卻是這樣:

實(shí)際的效果

這個(gè)時(shí)候,我們就要清除浮動(dòng)帶來(lái)的影響——父元素高度塌陷了承桥。

這里引用張?chǎng)涡翊笊?a target="_blank" rel="nofollow">觀點(diǎn):

撇開(kāi)浮動(dòng)的“破壞性”根悼,浮動(dòng)就是個(gè)帶有方位的display:inline-block屬性。

一目了然:如果我們給上面的三個(gè)綠顏色的方塊設(shè)置display:inline-block也能達(dá)到讓它們并排顯示的效果挤巡。并且父元素的高度也不會(huì)塌陷。只不過(guò)無(wú)法控制是居左還是居右襟衰,display:inline-block只能從左往右粪摘。


來(lái)看看我們?nèi)绾吻宄?dòng)

我們說(shuō)的清除浮動(dòng)是指清除由于子元素浮動(dòng)帶來(lái)父元素高度塌陷的影響

  1. 為父元素設(shè)置高度
    為父元素定高徘意,簡(jiǎn)單粗暴,壞處不用多說(shuō)吧椎咧,沒(méi)有人會(huì)這么干的..._

  2. 在父元素的最后設(shè)置clear:both

<div class="p">
        <div class="c"></div>
        <div class="c"></div>
        <div class="c"></div>
        <div style="clear:left;"></div> <!--冗余的子元素-->
</div>

當(dāng)添加了最后一個(gè)冗余元素(未設(shè)置clear:both)時(shí)把介;父元素和此冗余元素的高度都為0蟋座,并且三個(gè)浮動(dòng)的元素都浮在了它們的上方蓋住了它們(可以把它們看成PS中的圖層)。現(xiàn)在巢墅,給這個(gè)冗余元素添加clear:bothclear屬性介紹)券膀,它便要躲開(kāi)這三個(gè)浮動(dòng)元素,因此芹彬,一直往下跑,直到?jīng)]有被浮動(dòng)元素蓋住才停下來(lái)会喝。而父元素看到這個(gè)子元素跑開(kāi)了会前,自然想要包裹住它好乐。

加了`clear`后冗余元素由位置1跑到了位置2

這樣就能看到我們想要的結(jié)果了——父元素高度被撐開(kāi)了。
大功告成

貌似不錯(cuò)岭妖,不過(guò)似乎有點(diǎn)問(wèn)題——我們有必要在頁(yè)面中添加這么多沒(méi)有意義的冗余元素嗎?顯然這樣太麻煩假夺,而且不符合語(yǔ)義化斋攀。
還好有偽元素,這里我們使用::after淳蔼。添加一個(gè)類(lèi)fix

.fix::after { 
        content:"."; 
        display:block; 
        height:0; 
        visibility:hidden; 
        clear:both;
}

在我們需要清除浮動(dòng)時(shí),只需要給父元素追加fix類(lèi)就能達(dá)到清除浮動(dòng)的效果讳癌,既方便又符合語(yǔ)義化存皂。

<div class="p fix">
        <div class="c"></div>
        <div class="c"></div>
        <div class="c"></div>
</div>

當(dāng)然,大神的fix類(lèi)這么寫(xiě):

.fix::after { 
        content:""; 
        display:table; 
        clear:both;
}

大師手筆,看起來(lái)更清爽了......

  1. 給父元素添加overflow:hidden
    這里有必要了解一下BFC塊級(jí)格式化上下文它改,只說(shuō)結(jié)論:

創(chuàng)建了 BFC的元素就是一個(gè)獨(dú)立的盒子商乎,不過(guò)只有Block-level box可以參與創(chuàng)建BFC, 它規(guī)定了內(nèi)部的Block-level Box如何布局截亦,并且與這個(gè)獨(dú)立盒子里的布局不受外部影響,當(dāng)然它也不會(huì)影響到外面的元素崩瓤。它具有以下特征:

  1. 內(nèi)部的Box會(huì)在垂直方向,從頂部開(kāi)始一個(gè)接一個(gè)地放置境输。
  2. Box垂直方向的距離由margin決定颖系。屬于同一個(gè)BFC的兩個(gè)相鄰Box的margin會(huì)發(fā)生疊加。
  3. 每個(gè)元素的margin box的左邊嘁扼, 與包含塊border box的左邊相接觸(對(duì)于從左往右的格式化,否則相反)趁啸。即使存在浮動(dòng)也是如此。
  4. BFC的區(qū)域不會(huì)與float box疊加旅掂。
  5. BFC就是頁(yè)面上的一個(gè)隔離的獨(dú)立容器访娶,容器里面的子元素不會(huì)影響到外面的元素,反之亦然崖疤。
  6. 計(jì)算BFC的高度時(shí),浮動(dòng)元素也參與計(jì)算鲫尊。

看到第六條沦偎,如獲至寶疫向。只需給父元素創(chuàng)建塊級(jí)格式化上下文,就可以讓浮動(dòng)的元素參與高度計(jì)算谈火,這樣一來(lái)舌涨,父元素的高度就有了糯耍。
不單單只有給父元素添加overflow:hidden才可以創(chuàng)建塊級(jí)格式化上下文囊嘉,下列方法都可以:

  • 浮動(dòng) (元素的 float不為 none
  • 絕對(duì)定位元素 (元素的 positionabsolutefixed)
  • 行內(nèi)塊 inline-blocks (元素的 display: inline-block)
  • 表格單元格 (元素的 display: table-cell,HTML表格單元格默認(rèn)屬性)
  • 表格標(biāo)題 (元素的 display: table-caption舵鳞,HTML表格標(biāo)題默認(rèn)屬性)
  • overflow的值不為 visible的元素
  • 彈性盒子 flex boxes (元素的 display: flexinline-flex)

overflow:hidden較多的原因是不會(huì)帶來(lái)其它的布局問(wèn)題琢蛤。

題外話(huà):其實(shí)用塊級(jí)上下文解釋清除浮動(dòng)個(gè)人感覺(jué)牽強(qiáng),但也解釋的過(guò)去哈博其。開(kāi)拓下思維,看下知乎的問(wèn)題CSS中為什么overflow:hidden能清除浮動(dòng)(float)的影響背伴?原理是什么峰髓?,或許能找到你想要的儿普。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末掷倔,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子浪汪,更是在濱河造成了極大的恐慌凛虽,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,544評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件凯旋,死亡現(xiàn)場(chǎng)離奇詭異钉迷,居然都是意外死亡钠署,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)舰蟆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)狸棍,“玉大人,你說(shuō)我怎么就攤上這事草戈。” “怎么了猾瘸?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,764評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵牵触,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我揽思,道長(zhǎng),這世上最難降的妖魔是什么钉汗? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,193評(píng)論 1 292
  • 正文 為了忘掉前任损痰,我火速辦了婚禮,結(jié)果婚禮上卢未,老公的妹妹穿的比我還像新娘。我一直安慰自己辽社,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布戳葵。 她就那樣靜靜地躺著汉匙,像睡著了一般生蚁。 火紅的嫁衣襯著肌膚如雪邻梆。 梳的紋絲不亂的頭發(fā)上守伸,一...
    開(kāi)封第一講書(shū)人閱讀 51,182評(píng)論 1 299
  • 那天尼摹,我揣著相機(jī)與錄音剂娄,去河邊找鬼蠢涝。 笑死阅懦,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的耳胎。 我是一名探鬼主播,決...
    沈念sama閱讀 40,063評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼废登,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼郁惜!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起兆蕉,我...
    開(kāi)封第一講書(shū)人閱讀 38,917評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤虎韵,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后包蓝,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,329評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評(píng)論 2 332
  • 正文 我和宋清朗相戀三年梁钾,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片零酪。...
    茶點(diǎn)故事閱讀 39,722評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖四苇,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情月腋,我是刑警寧澤,帶...
    沈念sama閱讀 35,425評(píng)論 5 343
  • 正文 年R本政府宣布片拍,位于F島的核電站妓肢,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏碉钠。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評(píng)論 3 326
  • 文/蒙蒙 一祝高、第九天 我趴在偏房一處隱蔽的房頂上張望操禀。 院中可真熱鬧,春花似錦颓屑、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,671評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)器腋。三九已至溪猿,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間纫塌,已是汗流浹背诊县。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,825評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留措左,地道東北人依痊。 一個(gè)月前我還...
    沈念sama閱讀 47,729評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像怎披,于是被迫代替她去往敵國(guó)和親胸嘁。 傳聞我的和親對(duì)象是個(gè)殘疾皇子瓶摆,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評(píng)論 2 353

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

  • 浮動(dòng)float最開(kāi)始出現(xiàn)的意義是為了讓文字環(huán)繞圖片而已,后來(lái)用于讓三個(gè)塊級(jí)元素并排展示毫胜,這時(shí)候就出現(xiàn)了浮動(dòng) 不過(guò)书斜,...
    __越過(guò)山丘__閱讀 2,357評(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,748評(píng)論 1 92
  • 文章版權(quán)歸饑人谷_Lyndon以及饑人谷所有。 1. 浮動(dòng)元素有什么特征凝化?對(duì)父容器稍坯、其他浮動(dòng)元素、普通元素搓劫、文字分...
    HungerLyndon閱讀 2,381評(píng)論 4 10
  • 浮動(dòng)瞧哟,從誕生那天起,它就是個(gè)特別的屬性——既為網(wǎng)頁(yè)布局帶來(lái)新的方法枪向,卻又隨之產(chǎn)生一系列的問(wèn)題勤揩。當(dāng)然,隨著時(shí)間的推移...
    郝特么冷閱讀 840評(píng)論 0 6
  • relative:生成相對(duì)定位的元素秘蛔,通過(guò)top,bottom,left,right的位置相對(duì)于其正常位置進(jìn)行定位...
    zx9426閱讀 940評(píng)論 0 2