CSS:闭合元素和浮动元素的差别

2020-05-14 07:37:27易采站长站整理

图14:Op和Sa的效果

/web/css/format/clearFloat/clearFloat_14.gif

图15:IE的效果(注:如果用IE6,效果也不一样,==|||)

/web/css/format/clearFloat/clearFloat_15.gif

都是margin-left惹的祸,去掉margin-left:

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

终于接近统一了。

图16:去掉margin-left的效果

/web/css/format/clearFloat/clearFloat_16.gif

图17:去掉margin-left在IE内的效果

/web/css/format/clearFloat/clearFloat_17.gif

由此可见,overflow还是有很大局限性的。
但是造成FF、Op和Sa的显示结果的原因又是什么呢?
浮动
div2浮动,浮动元素的高度会包含其内部的浮动元素。
这种方法的局限性就是,div2浮动后宽度会被压缩,因此必须给它一个宽度值,但是这样就无法自适应宽度。

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

效果如图18所示。
图18:浮动div2

/web/css/format/clearFloat/clearFloat_18.gif

div2的浮动,还会造成wrap的高度问题,因此需要div3清除浮动。
由这个例子可以发现,由于div2的浮动,其内的p元素清除浮动,并没有受到div1的影响,因此,解决由于前2种方法中p1和p2下降到div1的高度之下的方法之一,可以将p1和p2外面套1个浮动的div,当然这可能影响到结构,还需要结合具体情况来决定。