CSS清除浮動的原因及方法-創(chuàng)新互聯(lián)

本篇內(nèi)容介紹了“CSS清除浮動的原因及方法”的有關(guān)知識,在實(shí)際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

創(chuàng)新互聯(lián)建站長期為1000多家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為白沙黎族企業(yè)提供專業(yè)的成都網(wǎng)站制作、成都做網(wǎng)站,白沙黎族網(wǎng)站改版等技術(shù)服務(wù)。擁有10年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。

清除浮動的原因

假設(shè)一個 div 內(nèi)部有個浮動的 div,當(dāng)內(nèi)部 div 的高度要比外層的父級 div 高度大時(shí),將會導(dǎo)致父級 div 高度無法隨著內(nèi)部 div 的高度自適應(yīng),這是由于浮動元素已經(jīng)脫離了正常文檔流,因此無法對父級元素產(chǎn)生影響。舉例如下:

代碼如下:


<style>
#a {
 width: 100px;
 border: 1px solid #ccc;
}
#b {
 height: 50px;
 float: left;
 border: 1px solid #ccc;
}
</style>
<div id="a">A
 <div id="b">B</div>
</div>


CSS清除浮動的原因及方法

此時(shí),我們就需要手動來清除浮動。

加入空 div

這是我之前的做法,即在結(jié)尾處添加一個空的 div,并設(shè)置 clear: both 屬性。

代碼如下:


<style>
#a {
 width: 100px;
 border: 1px solid #ccc;
}
#b {
 height: 50px;
 float: left;
 border: 1px solid #ccc;
}
#clear {
 clear: both;
}
</style>
<div id="a">A
 <div id="b">B</div>
 <div id="clear"></div>
</div>


CSS清除浮動的原因及方法

這個方法看似簡單,但是如果清除浮動的地方較多,會產(chǎn)生很多無意義的 div,對于整個 HTML 結(jié)構(gòu)無疑是有弊端的。

設(shè)定父級 div 高度

這個方法有點(diǎn) hard code,由于父級 div 無法高度自適應(yīng),因此我們可以直接給父級 div 設(shè)置一個固定的高度值,如上例,考慮到 border 的值,設(shè)定父級 div 高度為 52px。

代碼如下:


<style>
#a {
 width: 100px;
 height: 52px;
 border: 1px solid #ccc;
}
#b {
 height: 50px;
 float: left;
 border: 1px solid #ccc;
}
</style>
<div id="a">A
 <div id="b">B</div>
</div>


 CSS清除浮動的原因及方法


這個方法很快速但也脆弱,一旦內(nèi)部浮動元素高度發(fā)生變化就無效了,所以只能應(yīng)用于高度固定的場景。

設(shè)定父級 div 屬性 overflow

直接給父級 div 添加 overflow: hidden 或 overflow: auto 屬性,這里以 overflow: hidden 為例。

代碼如下:


<style>
#a {
 width: 100px;
 border: 1px solid #ccc;
 overflow: hidden;
}
#b {
 height: 50px;
 float: left;
 border: 1px solid #ccc;
}
</style>
<div id="a">A
 <div id="b">B</div>
</div>


 CSS清除浮動的原因及方法


這個看上去又簡單又實(shí)用,但是你不能對父級 div 設(shè)置高度,一旦父級 div 設(shè)置了固定高度,那么浮動元素超出的部分也會被隱藏。

代碼如下:


<style>
#a {
 width: 100px;
 height: 20px;
 border: 1px solid #ccc;
 overflow: hidden;
}
#b {
 height: 50px;
 float: left;
 border: 1px solid #ccc;
}
</style>
<div id="a">A
 <div id="b">B</div>
</div>


CSS清除浮動的原因及方法

當(dāng)使用 overflow: auto 屬性同時(shí)設(shè)定固定高度時(shí)效果為:

CSS清除浮動的原因及方法

設(shè)置父級 div 偽類 before && after

這個方法即問題中介紹的新方法,對父級 div 設(shè)置偽類 before 和 after 的值。

代碼如下:


<style>
#a {
 width: 100px;
 border: 1px solid #ccc;
}
#a:before, #a:after {
 content: "";
 display: block;
 clear: both;
 height: 0;
 visibility: hidden;
}
#b {
 height: 50px;
 float: left;
 border: 1px solid #ccc;
}
</style>
<div id="a">A
 <div id="b">B</div>
</div>


 CSS清除浮動的原因及方法


這個方法應(yīng)該是很好方案,即不會產(chǎn)生無意義的空 div,同時(shí)當(dāng)父級元素高度固定時(shí)并不會影響內(nèi)部的浮動元素高度。但是一點(diǎn)就是偽類的兼容性問題。對于低版本的 IE 瀏覽器我們可以使用:

代碼如下:


#a {
 zoom:1
}


在閱讀了 @ShingChi 兄推薦的這篇博文 - http://nicolasgallagher.com/micro-clearfix-hack/ 后,我們還可以進(jìn)一步地簡化代碼如下:

代碼如下:


<style>
#a {
 width: 100px;
 border: 1px solid #ccc;
}
#a:before, #a:after {
 content: "";
 display: table;
 clear: both;
}
#b {
 height: 50px;
 float: left;
 border: 1px solid #ccc;
}
</style>
<div id="a">A
 <div id="b">B</div>
</div>


“CSS清除浮動的原因及方法”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

標(biāo)題名稱:CSS清除浮動的原因及方法-創(chuàng)新互聯(lián)
鏈接分享:http://bm7419.com/article8/cecjop.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、商城網(wǎng)站、網(wǎng)站收錄網(wǎng)頁設(shè)計(jì)公司、電子商務(wù)、虛擬主機(jī)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)