本篇內(nèi)容介紹了“CSS清除浮動(dòng)的原因及方法”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
創(chuàng)新互聯(lián)建站長(zhǎng)期為1000多家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為白沙黎族企業(yè)提供專業(yè)的成都網(wǎng)站制作、成都做網(wǎng)站,白沙黎族網(wǎng)站改版等技術(shù)服務(wù)。擁有10年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。清除浮動(dòng)的原因
假設(shè)一個(gè) div 內(nèi)部有個(gè)浮動(dòng)的 div,當(dāng)內(nèi)部 div 的高度要比外層的父級(jí) div 高度大時(shí),將會(huì)導(dǎo)致父級(jí) div 高度無(wú)法隨著內(nèi)部 div 的高度自適應(yīng),這是由于浮動(dòng)元素已經(jīng)脫離了正常文檔流,因此無(wú)法對(duì)父級(jí)元素產(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>
此時(shí),我們就需要手動(dòng)來(lái)清除浮動(dòng)。
加入空 div
這是我之前的做法,即在結(jié)尾處添加一個(gè)空的 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>
這個(gè)方法看似簡(jiǎn)單,但是如果清除浮動(dòng)的地方較多,會(huì)產(chǎn)生很多無(wú)意義的 div,對(duì)于整個(gè) HTML 結(jié)構(gòu)無(wú)疑是有弊端的。
設(shè)定父級(jí) div 高度
這個(gè)方法有點(diǎn) hard code,由于父級(jí) div 無(wú)法高度自適應(yīng),因此我們可以直接給父級(jí) div 設(shè)置一個(gè)固定的高度值,如上例,考慮到 border 的值,設(shè)定父級(jí) 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>
這個(gè)方法很快速但也脆弱,一旦內(nèi)部浮動(dòng)元素高度發(fā)生變化就無(wú)效了,所以只能應(yīng)用于高度固定的場(chǎng)景。
設(shè)定父級(jí) div 屬性 overflow
直接給父級(jí) 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>
這個(gè)看上去又簡(jiǎn)單又實(shí)用,但是你不能對(duì)父級(jí) div 設(shè)置高度,一旦父級(jí) div 設(shè)置了固定高度,那么浮動(dòng)元素超出的部分也會(huì)被隱藏。
代碼如下:
<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>
當(dāng)使用 overflow: auto 屬性同時(shí)設(shè)定固定高度時(shí)效果為:
設(shè)置父級(jí) div 偽類 before && after
這個(gè)方法即問(wèn)題中介紹的新方法,對(duì)父級(jí) 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>
這個(gè)方法應(yīng)該是很好方案,即不會(huì)產(chǎn)生無(wú)意義的空 div,同時(shí)當(dāng)父級(jí)元素高度固定時(shí)并不會(huì)影響內(nèi)部的浮動(dòng)元素高度。但是一點(diǎn)就是偽類的兼容性問(wèn)題。對(duì)于低版本的 IE 瀏覽器我們可以使用:
代碼如下:
#a {
zoom:1
}
在閱讀了 @ShingChi 兄推薦的這篇博文 - http://nicolasgallagher.com/micro-clearfix-hack/ 后,我們還可以進(jìn)一步地簡(jiǎ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清除浮動(dòng)的原因及方法”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!
標(biāo)題名稱:CSS清除浮動(dòng)的原因及方法-創(chuàng)新互聯(lián)
鏈接分享:http://m.rwnh.cn/article8/cecjop.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、商城網(wǎng)站、網(wǎng)站收錄、網(wǎng)頁(yè)設(shè)計(jì)公司、電子商務(wù)、虛擬主機(jī)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容