清除浮動的方法
在CSS中茫因,clear屬性用于清除浮動呜袁,在這里,我們先記住清除浮動的方法藤乙,具體的原理猜揪,等我們學完css會再回頭分析。
語法:
選擇器{clear:屬性值;} ? clear 清除 ?
屬性值描述
left不允許左側(cè)有浮動元素(清除左側(cè)浮動的影響)
right不允許右側(cè)有浮動元素(清除右側(cè)浮動的影響)
both同時清除左右兩側(cè)浮動的影響
但是我們實際工作中, 幾乎只用 clear: both;
1.額外標簽法(隔墻法)
是W3C推薦的做法是通過在浮動元素末尾添加一個空的標簽例如<div style=”clear:both”></div>,或則其他標簽br等亦可溯祸。
優(yōu)點: 通俗易懂背率,書寫方便
缺點: 添加許多無意義的標簽,結(jié)構(gòu)化較差宠漩。
2.父級添加overflow屬性方法
可以給父級添加:overflow為hidden|auto|scroll都可以實現(xiàn)。
優(yōu)點:? 代碼簡潔
缺點:? 內(nèi)容增多時候容易造成不會自動換行導(dǎo)致內(nèi)容被隱藏掉,無法顯示需要溢出的元素政鼠。
3.使用after偽元素清除浮動
:after 方式為空元素額外標簽法的升級版,好處是不用單獨加標簽了
使用方法:
.clearfix:after {content : " ";
????????????????????????display:block;
????????????????????????height:0;
????????????????????????clear:both;
????????????????????????visibility:hidden;? }
????????????????????????.clearfix {*zoom:1;}/* IE6队魏、7 專有 */
優(yōu)點: 符合閉合浮動思想? 結(jié)構(gòu)語義化正確
缺點: 由于IE6-7不支持:after公般,使用 zoom:1觸發(fā) hasLayout。
4.使用雙偽元素清除浮動
使用方法:
.clearfix :before,
.clearfix :after {
????????????????????content :" ";
????????????????????display :table; }
.clearfix :after {
????????????????????clear:both;
????????????????????????}
.clearfix {
? ? ? ? ? ? ? ?*zoom:1;
? ? ? ? ? ? ? ? }
優(yōu)點:? 代碼更簡潔
缺點:? 由于IE6-7不支持:after胡桨,使用 zoom:1觸發(fā) hasLayout官帘。
?清除浮動總結(jié)
父級沒高度
子盒子浮動了
影響下面布局了,我們就應(yīng)該清除浮動了昧谊。
清除浮動的方式優(yōu)點缺點
額外標簽法(隔墻法)通俗易懂刽虹,書寫方便添加許多無意義的標簽,結(jié)構(gòu)化較差呢诬。
父級overflow:hidden;書寫簡單溢出隱藏
父級after偽元素結(jié)構(gòu)語義化正確由于IE6-7不支持:after涌哲,兼容性問題
父級雙偽元素結(jié)構(gòu)語義化正確由于IE6-7不支持:after胖缤,兼容性問題
后面兩種偽元素清除浮動,大家暫且會使用就好阀圾, 深入原理草姻,我們后面學完偽元素再講。