html+css 清除浮動的相關(guān)技巧心得

浮動會使當(dāng)前標(biāo)簽產(chǎn)生向上浮的效果,同時會影響到前后標(biāo)簽、父級標(biāo)簽的位置及 width height 屬性。而且同樣的代碼,在各種瀏覽器中顯示效果也有可能不相同,這樣讓清除浮動更難了。解決浮動引起的問題有多種方法,但有些方法在瀏覽器兼容性方面還有問題。
下面總結(jié)8種清除浮動的方法(測試已通過 ie chrome firefox opera,后面三種方法只做了解就可以了):
1,父級div定義 height
- <style type="text/css">
- .div1{background:#000080;border:1px solid red;/*解決代碼*/height:200px;}
- .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}
- </style>
- <div class="div1">
- <div class="left">Left</div>
- <div class="right">Right</div>
- </div>
- <div class="div2">
- div2
- </div>
原理:父級div手動定義height,就解決了父級div無法自動獲取到高度的問題。
優(yōu)點(diǎn):簡單、代碼少、容易掌握
缺點(diǎn):只適合高度固定的布局,要給出精確的高度,如果高度和父級div不一樣時,會產(chǎn)生問題
建議:不推薦使用,只建議高度固定的布局時使用
----------
2,結(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,讓人感覺很不好
建議:不推薦使用,但此方法是以前主要使用的一種清除浮動方法
----------
3,父級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}
- </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代碼。
-------
4,父級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理解比較深的朋友使用。
---------
5,父級div定義 overflow:auto
- <style type="text/css">
- .div1{background:#000080;border:1px solid red;/*解決代碼*/width:98%;overflow:auto}
- .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:auto時,瀏覽器會自動檢查浮動區(qū)域的高度
優(yōu)點(diǎn):簡單、代碼少、瀏覽器支持好
缺點(diǎn):內(nèi)部寬高超過父級div時,會出現(xiàn)滾動條。
建議:不推薦使用,如果你需要出現(xiàn)滾動條或者確保你的代碼不會出現(xiàn)滾動條就使用吧。
---------
6,父級div 也一起浮動
- <style type="text/css">
- .div1{background:#000080;border:1px solid red;/*解決代碼*/width:98%;margin-bottom:10px;float:left}
- .div2{background:#800080;border:1px solid red;height:100px;width:98%;/*解決代碼*/clear:both}
- .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>
原理:所有代碼一起浮動,就變成了一個整體
優(yōu)點(diǎn):沒有優(yōu)點(diǎn)
缺點(diǎn):會產(chǎn)生新的浮動問題。
建議:不推薦使用,只作了解。
-------
7,父級div定義 display:table
- <style type="text/css">
- .div1{background:#000080;border:1px solid red;/*解決代碼*/width:98%;display:table;margin-bottom:10px;}
- .div2{background:#800080;border:1px solid red;height:100px;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>
原理:將div屬性變成表格
優(yōu)點(diǎn):沒有優(yōu)點(diǎn)
缺點(diǎn):會產(chǎn)生新的未知問題。
建議:不推薦使用,只作了解。
---------
8,結(jié)尾處加 br標(biāo)簽 clear:both
- <style type="text/css">
- .div1{background:#000080;border:1px solid red;margin-bottom:10px;zoom:1}
- .div2{background:#800080;border:1px solid red;height:100px}
- .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>
- <br class="clearfloat" />
- </div>
- <div class="div2">
- div2
- </div>
原理:父級div定義zoom:1來解決IE浮動問題,結(jié)尾處加 br標(biāo)簽 clear:both
建議:不推薦使用,只作了解。
以上這篇html+css 清除浮動的相關(guān)技巧心得就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
原文地址:http://www.cnblogs.com/fuyinsheng/p/5283519.html
相關(guān)文章
- 這篇文章主要介紹了html/css中float浮動的用法實(shí)例詳解,需要的朋友可以參考下2019-09-10
HTML5 CSS3實(shí)現(xiàn)七彩變換的天空中白云漂浮動畫效果源碼
這是一款基于HTML5 CSS3實(shí)現(xiàn)七彩變換的天空中白云漂浮動畫效果源碼。七彩變換的天空背景上,漂浮著大片的白云,伴隨著天空七彩背景的顏色變換,白云也呈現(xiàn)出漂浮、旋轉(zhuǎn)的動2019-03-19- 廣告條想必大家并不陌生吧,在本文將為大家詳細(xì)介紹下如何使用Html+CSS實(shí)現(xiàn)浮動的廣告條,感興趣的朋友可以參考下2013-10-08
基于jQuery+CSS實(shí)現(xiàn)的浮動html菜單效果分享代碼
jQuery+CSS實(shí)現(xiàn)的菜單效果,菜單可以跟隨滾動條上下浮動2012-09-06HTML5+CSS設(shè)置浮動卻沒有動反而在中間且錯行的問題
這篇文章主要介紹了HTML5+CSS設(shè)置浮動卻沒有動反而在中間且錯行,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-05-26