CSS浮動(dòng)所產(chǎn)生的內(nèi)容溢出問題及清除浮動(dòng)的方法小結(jié)

拋一塊問題磚(display: block)先看現(xiàn)象:
在非IE瀏覽器(如Firefox)下,當(dāng)容器的高度為auto,且容器的內(nèi)容中有浮動(dòng)(float為left或right)的元素,在這種情況下,容器的高度不能自動(dòng)伸長以適應(yīng)內(nèi)容的高度,使得內(nèi)容溢出到容器外面而影響布局的現(xiàn)象。這個(gè)現(xiàn)象叫浮動(dòng)溢出,為了防止這個(gè)現(xiàn)象的出現(xiàn)而進(jìn)行的CSS處理,就叫CSS清除浮動(dòng)。
引用W3C的例子,news容器沒有包圍浮動(dòng)的元素。
- .news {
- background-color: gray;
- border: solid 1px black;
- }
- .news img {
- float: left;
- }
- .news p {
- float: rightright;
- }
- <div class="news">
- <img src="news-pic.jpg" />
- <p>some text</p>
- </div>
清除浮動(dòng):
1,在浮動(dòng)元素后面增加<br/>標(biāo)簽;
XML/HTML Code復(fù)制內(nèi)容到剪貼板
- <br/>標(biāo)簽有自帶的清除浮動(dòng)屬性;
2,在浮動(dòng)元素后面增加一個(gè)清除浮動(dòng)層;
- <div>
- <div style="float:left"></div>
- <div style="float:left"></div>
- <div style="clear:both"></div>
- </div>
3,給浮動(dòng)元素添加overflow:auto樣式;
4,為最后浮動(dòng)元素設(shè)置如下樣式:
- /* 清理浮動(dòng) */
- .clearfix:after {
- visibility:hidden;
- display:block;
- font-size:0;
- content:" ";
- clear:both;
- height:0;
- }
- .clearfix {
- zoom:1;
- }
其原理是,在「高級(jí)」瀏覽器中使用 :after 偽類在浮動(dòng)塊后面加上一個(gè)非 display:none 的不可見塊狀內(nèi)容來,并給它設(shè)置 clear:both 來清理浮動(dòng)。在 ie6 和 7 中給浮動(dòng)塊添加 haslayout 來讓浮動(dòng)塊撐高并正常影響文檔流。
5,另一種簡(jiǎn)潔的辦法:
- .cf:before, .cf:after {
- content:"";
- display:table;
- }
- .cf:after {
- clear:both;
- }
- .cf {
- zoom:1;
- }
原理還是一樣的。使用 :after 偽類來提供浮動(dòng)塊后的 clear:both。不同的是,隱藏這個(gè)空白使用的是 display: table。而不是設(shè)置 visibility:hidden;height:0;font-size:0; 這樣的 hack。
值得注意的是這里中的 :before 偽類。其實(shí)他是來用處理 top-margin 邊折疊的,跟清理浮動(dòng)沒有多大的關(guān)系。但因?yàn)楦?dòng)會(huì)創(chuàng)建 block formatting context,這樣浮動(dòng)元素上的另而一元素上如果剛好有 margin-bottom 而這個(gè)浮動(dòng)元素剛好有margin-top 的話,應(yīng)該讓他們不折疊(雖然這種情況并不常見)。
相關(guān)文章
- 這篇文章主要介紹了清除css浮動(dòng)的三種方法小結(jié),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-01-19
詳解css清除浮動(dòng)float的七種常用方法總結(jié)和兼容性處理
這篇文章主要介紹了詳解css清除浮動(dòng)float的七種常用方法總結(jié)和兼容性處理,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-09-11淺談css中浮動(dòng)和清除浮動(dòng)帶來的影響
這篇文章主要介紹了淺談css中浮動(dòng)和清除浮動(dòng)帶來的影響,通過代碼示例和圖片展示詳細(xì)介紹講解了浮動(dòng)的應(yīng)用和實(shí)現(xiàn)效果,需要的朋友可以參考下2017-08-14- 本文主要介紹了CSS解決浮動(dòng),清除浮動(dòng)的幾種方法:1、設(shè)置父元素高度;2、overflow;3、增加子元素(塊級(jí)),并且設(shè)置其clear屬性值為both來解決(隔墻法、內(nèi)墻法);4、使2017-03-22
詳解CSS中zoom屬性或overflow:auto屬性清除浮動(dòng)的作用
這篇文章主要為大家介紹了CSS中zoom屬性或overflow:auto屬性清除浮動(dòng)的作用,文中通過實(shí)例代碼介紹的很詳細(xì),相信會(huì)對(duì)大家的理解和學(xué)習(xí)具有一定的參考借鑒價(jià)值,有需要的朋2016-11-26關(guān)于清除浮動(dòng)塌陷的幾種方法總結(jié)
在大家在使用css的過程中,多多少少會(huì)遇到清除浮動(dòng)這個(gè)問題。所以這篇文章給大家總結(jié)了div+css中關(guān)于清除浮動(dòng)塌陷的4種方法,相信會(huì)對(duì)大家學(xué)習(xí)或者使用div+css能有所幫助,2016-10-17- 下面小編就為大家?guī)硪黄獪\談CSS中的clear清除浮動(dòng)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-06-06
- 這篇文章主要介紹了CSS清除浮動(dòng)的方法詳解,值得注意的是并不是每次單純把浮動(dòng)清除掉就可以解決相關(guān)問題,文中最后談到的閉合浮動(dòng)的方案也非常值得一試,需要的朋友可以參考下2016-05-30
- 下面小編就為大家?guī)硪黄狣IV+CSS 清除浮動(dòng)常用方法總結(jié)。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-05-06
Css實(shí)現(xiàn)清除浮動(dòng)的方法匯總
這篇文章主要介紹了Css實(shí)現(xiàn)清除浮動(dòng)的方法匯總,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-07-11