高度坍塌現象及解決方法
阿新 • • 發佈:2018-12-28
一、高度坍塌
根據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中支援,其他瀏覽器都不支援