為什么清除CSS浮動這么難?
- 因?yàn)楦訒巩?dāng)前標(biāo)簽產(chǎn)生向上浮的效果,同時會影響到前后標(biāo)簽、父級標(biāo)簽的位置及
width height 屬性。而且同樣的代碼,在各種瀏覽器中顯示效果也有可能不相同,這樣讓清除浮動更難了。
解決浮動引起的問題有多種方法,但有些方法在瀏覽器兼容性方面還有問題。
1、結(jié)尾處加空div標(biāo)簽`clear:both`
<style type="text/css">
.div1{background:#000080;border:1px solid red}
.div2{background:#800080;border:1px solid red;height:100px;margin-top:10px}
.left{float:left;width:20%;height:200px;background:#DDD}
.right{float:right;width:30%;height:80px;background:#DDD}
/*清除浮動代碼*/
.clearfloat{clear:both}
</style>
<div class="div1">
<div class="left">Left</div>
<div class="right">Right</div>
<div class="clearfloat"></div>
</div>
<div class="div2">div2</div>
原理:添加一個空div,利用css提高的clear:both清除浮動,讓父級div能自動獲取到高度
優(yōu)點(diǎn):簡單,代碼少,瀏覽器支持好,不容易出現(xiàn)怪問題
缺點(diǎn):不少初學(xué)者不理解原理;如果頁面浮動布局多,就要增加很多空div,讓人感覺很不爽
建議:不推薦使用,但此方法是以前主要使用的一種清除浮動方法
評分:★★★☆☆
2、父級div定義偽類:after和zoom
<style type="text/css">
.div1{background:#000080;border:1px solid red;}
.div2{background:#800080;border:1px solid red;height:100px;margin-top:10px}
.left{float:left;width:20%;height:200px;background:#DDD}
.right{float:right;width:30%;height:80px;background:#DDD}
/*清除浮動代碼*/
.clearfloat:after{display:block;clear:both;content:"";visibility:hidden;height:0}
.clearfloat{zoom:1}
/*其中clear:both;指清除所有浮動;content: '.'; display:block;對于FF/chrome/opera/IE8不能缺少,
其中content()可以取值也可以為空。visibility:hidden;的作用是允許瀏覽器渲染它,但是不顯示出來,這
樣才能實(shí)現(xiàn)清楚浮動。*/
</style>
<div class="div1 clearfloat">
<div class="left">Left</div>
<div class="right">Right</div>
</div>
<div class="div2">div2</div>
原理:IE8以上和非IE瀏覽器才支持:after,原理和方法2有點(diǎn)類似,zoom(IE轉(zhuǎn)有屬性)可解決ie6,ie7浮動問題
優(yōu)點(diǎn):瀏覽器支持好,不容易出現(xiàn)怪問題(目前:大型網(wǎng)站都有使用,如:騰迅,網(wǎng)易,新浪等等)
缺點(diǎn):代碼多,不少初學(xué)者不理解原理,要兩句代碼結(jié)合使用,才能讓主流瀏覽器都支持
建議:推薦使用,建議定義公共類,以減少CSS代碼
評分:★★★★☆
3、父級div定義overflow:hidden
<style type="text/css">
.div1{background:#000080;border:1px solid red;/*解決代碼*/width:98%;overflow:hidden}
.div2{background:#800080;border:1px solid red;height:100px;margin-top:10px;width:98%}
.left{float:left;width:20%;height:200px;background:#DDD}
.right{float:right;width:30%;height:80px;background:#DDD}
</style>
<div class="div1">
<div class="left">Left</div>
<div class="right">Right</div>
</div>
<div class="div2">div2</div>
原理:必須定義width或zoom:1,同時不能定義height,使用overflow:hidden時,瀏覽器會自動檢查浮動區(qū)域的高度
優(yōu)點(diǎn):簡單,代碼少,瀏覽器支持好
缺點(diǎn):不能和position配合使用,因?yàn)槌龅某叽绲臅浑[藏
建議:只推薦沒有使用position或?qū)verflow:hidden理解比較深的朋友使用
評分:★★★☆☆
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。