float属性在页面排版上非常有用,但是也带来很多问题。最常见的就是浮动元素的闭合问题。
如果一个没有设定高度的不浮动元素的子元素浮动,则该元素的高度不会包括浮动子元素的高度,而只会包含其内部不浮动元素的高度,因为浮动元素不属于常规流向,它脱离了文档流。因此如果要元素能够自动包含浮动子元素,则需要闭合浮动元素。
目前比较常用的有3种方法:
还有1个方法可以使元素自适应高度:
下列代码,其显示如图1所示。
CSS:
p,
div {...}{
margin: 5px;
}
.wrap {...}{
width: 440px;
margin: 10px;
clear: both;
}
.div1,
.div2p {...}{
float: left;
width: 80px;
margin: 8px;
+display: inline;
}
<div class="wrap">
<div class="div1">div1,浮动</div>
<div class="div2">
<p class="div2p">div2内p1</p>
<p class="div2p">div2内p2</p>
<p class="div2p3">div2内p3,不浮动</p>
</div>
<div class="div3">div3,不浮动</div>
</div>

.div2p {...}{
......
clear:left;
}


.div2p3 {...}{
clear:left;
}


.div2 {...}{
......
margin-left: 120px;
}


.div2:after {...}{
content: ".";
display: block;
height: 0;
clear: both;
visibility: hidden;
}

.div2 {...}{
margin-left:120px;
}

.div2 {...}{
overflow:auto;
+height:100%; /**//* 针对ie6 */
}



.div2 {...}{
margin-left:120px;
}



.div2 {...}{
margin-left: 0;
}


.div2 {...}{
float: left;
}
.div3 {...}{
clear: both;
}