一:什么是浮動(dòng)
浮動(dòng)是脫離文檔的普通流存在的(可以看作是漂浮在普通流上)俄烁,它可以左右浮動(dòng)蛋济,直到它的外邊緣遇到包含框或者另一個(gè)浮動(dòng)框?yàn)橹梗锤?dòng)框不在文檔普通流中,所以在布局的時(shí)候文檔中的普通流就會(huì)表現(xiàn)得和浮動(dòng)框不存在一樣,當(dāng)浮動(dòng)框高度超出包含框的時(shí)候群扶,也就會(huì)出現(xiàn)包含框不會(huì)自動(dòng)伸高來(lái)閉合浮動(dòng)元素)。
二:閉合浮動(dòng)
正式因?yàn)檫@種浮動(dòng)的這種特性镀裤,所以本該屬于普通流中的元素浮動(dòng)之后竞阐,,包含框的高度就可能會(huì)發(fā)生變化(包含框內(nèi)部由于不存在其他普通流元素了暑劝,表現(xiàn)出的高度就為0)骆莹,在實(shí)際應(yīng)用中,這會(huì)嚴(yán)重影響到我們布局担猛,所以我們需要閉合浮動(dòng)幕垦,使其包含框表現(xiàn)出正常的高度。
三:清除浮動(dòng) 還是 閉合浮動(dòng) (Enclosing float or Clearing float)毁习?
很多人都已經(jīng)習(xí)慣稱(chēng)之為清除浮動(dòng)智嚷,但是確切地來(lái)說(shuō)是不準(zhǔn)確的。我們應(yīng)該用嚴(yán)謹(jǐn)?shù)膽B(tài)度來(lái)對(duì)待代碼纺且,也能更好地幫助我們理解開(kāi)頭的三個(gè)問(wèn)題盏道。
1)清除浮動(dòng):清除對(duì)應(yīng)的單詞是 clear,對(duì)應(yīng)CSS中的屬性是 clear:left | right | both | none载碌;
2)閉合浮動(dòng):更確切的含義是使浮動(dòng)元素閉合猜嘱,從而減少浮動(dòng)帶來(lái)的影響。
其實(shí)我們想要達(dá)到的效果更確切地說(shuō)是閉合浮動(dòng)嫁艇,而不是單純的清除浮動(dòng)朗伶,在footer上設(shè)置clear:both清除浮動(dòng)并不能解決wrap高度塌陷的問(wèn)題。
用閉合浮動(dòng)比清除浮動(dòng)更加嚴(yán)謹(jǐn)
四:清除浮動(dòng)方法
1步咪、在浮動(dòng)元素末尾添加一個(gè)空div论皆,例如< div style=”clear:both”></div>
2、父級(jí)div定義 overflow: hidden;
3点晴、對(duì)父級(jí)元素設(shè)置合適的高度感凤;
? ? ?能夠詳細(xì)計(jì)算出實(shí)際高度,否則容易布局混亂
4粒督、對(duì)父級(jí)元素設(shè)置浮動(dòng)
5陪竿、對(duì)父級(jí)元素設(shè)置偽元素,即:after屠橄;
.aa:after {content:".";display:block;height:0;clear:both;visibility:hidden;? }
? ? 1) display:block 使生成的元素以塊級(jí)元素顯示,占滿(mǎn)剩余空間;
? ?2) height:0 避免生成內(nèi)容破壞原有布局的高度侈百。
? ?3) visibility:hidden 使生成的內(nèi)容不可見(jiàn)瞭恰,并允許可能被生成內(nèi)容蓋住的內(nèi)容可以進(jìn)行點(diǎn)擊和交互;
?4)通過(guò) content:"."生成內(nèi)容作為最后一個(gè)元素