1. 程式人生 > >高度坍塌現象及解決方法

高度坍塌現象及解決方法

一、高度坍塌

根據W3C的標準,在頁面中元素都一個隱含的屬性叫做Block Formatting Context(塊的格式化環境)簡稱BFC,該屬性可以設定開啟或者關閉,預設是關閉的
			當開啟元素的BFC以後,元素將會具有如下的特性:
			1.父元素的垂直外邊距不會和子元素重疊	
			2.開啟BFC的元素不會被浮動元素所覆蓋
			3.開啟BFC的元素可以包含浮動的子元素

			如何開啟元素的BFC
				1.設定元素浮動
					- 使用這種方式開啟,雖然可以撐開父元素,但是會導致父元素的寬度丟失,而且使用這種方式也會導致下邊的元素上移,不能解決問題
				2.設定元素絕對定位
				3.設定元素為inline-block
					- 可以解決問題,但是會導致寬度丟失,不推薦使用這種方式
				4.將元素的overflow設定為一個非visible的值
			推薦方式:將overflow設定為hidden是副作用最小的開啟BFC的方式

---------這裡貼一段程式碼幫助理解》

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>高度塌陷</title>
	<style type="text/css">
		.box1{
			border: 10px red solid;
			overflow: hidden;/*設定這個可以防止高度塌陷,也可以註釋這個對比一下。*/
		}
		.box2{
			width: 100px;
			height: 100px;
background-color: blue; float: left; } .box3{ height: 100px; background-color: yellow; }
</style> </head> <body> <div class="box1"> <div class="box2"></div> </div> <div class="box3"></div> </body> </html>

但是在IE6及以下的瀏覽器中並不支援BFC,所以使用這種方式不能相容IE6
在IE6中雖然沒有BFC,但是具有另一個隱含的屬性叫做hasLayout,該屬性的作用和BFC類似,所在IE6瀏覽器可以通過開hasLayout來解決該問題
開啟方式很多,我們直接使用一種副作用最小的:
直接將元素的zoom設定為1即可
zoom表示放大的意思,後邊跟著一個數值,寫幾就將元素放大幾倍
zoom:1表示不放大元素,但是通過該樣式可以開啟hasLayout
zoom這個樣式,只在IE中支援,其他瀏覽器都不支援