css 高度塌陷的解決辦法

一、爲什麼會出現高度塌陷

父元素高度自適應,子元素浮動,只要子元素脫離了文檔流後,造成父元素高度爲0,稱爲高度塌陷問題。那麼爲什麼會出先高度塌陷問題呢?

二、解決高度塌陷

2.1 給父元素一個固定的高度

最簡單粗暴的解決方式就是給父容器一個固定的高度。
推薦指數

缺點:
給父元素固定高度,就不能進行高度自適應,不夠靈活,不推薦使用

css代碼:

<div class='parent'>
	<div class='child'></div>
</div>

.child{
	float:left;
}
.parent{
	height:100px;
}

2.2 父元素也浮動

推薦指數

缺點: 雖然可以撐開父元素,但是會導致父元素的寬度丟失,而且會導致下邊的元素上移,使得跟父元素相鄰的元素的佈局受到影響。

css代碼:

<div class='parent'>
	<div class='child'></div>
</div>
 
.child{
	float:left;
}
.parent{
	float:left;
}

2.3 給父元素添加屬性 overflow: hidden;zoom:1;

推薦指數☆ ☆

優點: 瀏覽器支持好,簡單;
缺點: 要是子元素要margin負值定位或是負的絕對定位,會被裁掉,所以此方法是有不小的侷限性的。

css代碼:

<div class='parent'>
	<div class='child'></div>
</div>
 
.child{
	float:left;
}
.parent{
	overflow:hidden;
	zoom:1;
}

2.4 在浮動元素後添加一個div

推薦指數☆ ☆ ☆

優點: 代碼量少 容易掌握 簡單易懂
缺點: 添加了無意義標籤,不易於後期維護,違背了結構和表現分離的標準

css代碼:

<div class='parent'>
	<div class='child'></div>
	<div class='clearBox'></div>
</div>
 
.child{
	float:left;
}
.clearBox{
	clear:both;
}

2.5 萬能清除浮動法

在父元素中內容的最後添加一個僞元素來實現第三種方案的功能
推薦指數☆ ☆ ☆ ☆ ☆

優點: 不會造成代碼冗餘,不破壞文檔結構,剩餘代碼性能優化,推薦使用。
缺點: 代碼量多

<div class='parent'>
	<div class='child'></div> 
</div>
 
.child{
	float:left;
}
.parent:after{
    content: "";
    height: 0;
    clear: both;
    overflow: hidden;
    display: block;
    visibility: hidden;
} 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章