快速业务通道

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

作者 佚名技术 来源 CSS技术 浏览 发布时间 2012-03-04
uo;clear:left”后的效果
/web/css/format/clearFloat/clearFloat_02.gif

而在IE中,整个div2都将下移到div1下,如图3所示。
图3:不浮动的元素内的浮动子元素设定“clear:left”后IE的显示
/web/css/format/clearFloat/clearFloat_03.gif

由图3可以发现,虽然在图1中IE正确地显示了溢出的元素,但是,对于出发了layout的wrap,IE仍旧会扩展最外层的高度,以容纳浮动元素。


闭合浮动元素方法1

此时,div2的高度只包括其内未浮动元素的高度,因此使用第1种方法闭合浮动元素,为浮动元素后面的元素p3设定clear属性:
.div2p3 {
CSS:闭合元素和浮动元素的差别clear
:left;
CSS:闭合元素和浮动元素的差别
}

此时显示如图4所示,在IE中如图5所示。

图4:p3清除浮动后的效果
/web/css/format/clearFloat/clearFloat_04.gif

图5:p3清除浮动后IE内的效果
/web/css/format/clearFloat/clearFloat_05.gif
(啊!伟大的IE,居然多出来与div2的margin一样多的间隙。= =b)

此时如果为div2增加左边距(原设定为margin:5px):
.div2 {
CSS:闭合元素和浮动元素的差别......
CSS:闭合元素和浮动元素的差别margin-left
: 120px;
CSS:闭合元素和浮动元素的差别
}

则显示如图6所示,在IE中如图7所示。

图6:增加左边距后的效果
/web/css/format/clearFloat/clearFloat_06.gif
图7:p增加左边距后IE内的效果
/web/css/format/clearFloat/clearFloat_07.gif

至此的效果,是左右2栏布局常用的方法,左栏固定宽度,右栏不设定宽度以求能自适应。


闭合浮动元素方法2

尝试方法2,利用:after清除浮动:
.div2:after {
CSS:闭合元素和浮动元素的差别content
: "."; 
CSS:闭合元素和浮动元素的差别display
: block;
CSS:闭合元素和浮动元素的差别height
: 0; 
CSS:闭合元素和浮动元素的差别clear
: both; 
CSS:闭合元素和浮动元素的差别visibility
: hidden;
CSS:闭合元素和浮动元素的差别
}

显示效果如图8所示。(IE不支持,不用试了。= =b)
图8:使用:after清除浮动
/web/css/format/clearFloat/clearFloat_08.gif
可以看到div2内的p3没有清除浮动,位置仍在div2的顶端。

增加div2的左边距,显示如图9所示。
.div2 {
CSS:闭合元素和浮动元素的差别margin-left
:120px;
CSS:闭合元素和浮动元素的差别
}

图9:增加div2的左边距
/web/css/format/clearFloat/clearFloat_09.gif
由此可见使用:after清除浮动,不适合于浮动元素后面还有不浮动元素的情况。

闭合浮动元素方法3

尝试方法3,使用overflow属性:
.div2 {
CSS:闭合元素和浮动元素的差别overflow
:auto;
+height
:100%; /* 针对ie6 */
CSS:闭合元素和浮动元素的差别
}

此时,最热闹的情况出现了:

图10:FF的效果
/web/css/format/clearFloat/clearFloat_10.gif
图11:Op和Sa的效果
/web/css/format/clearFloat/clearFloat_11.gif
图12:IE的效果(注:如果用IE 6,效果也不一样,= =|||)
/web/css/format/clearFloat/clearFloat_12.gif
首先,div2的宽度收缩到div1的右边了,也许这正好是期望的结果?
更热闹的在后面,增加div2的margin-left:
.div2 {
CSS:闭合元素和浮动元素的差别margin-left
:120px;
CSS:闭合元素和浮动元素的差别
}

图13:FF的效果
/web/css/format/clearFloat/clearFloat_13.gif
图14:Op和Sa的效果
/web/css/format/clearFloat/clearFloat_14.gif
图15:IE的效果(注:如果用IE 6,效果也不一样,= =|||)
/web/css/format/clearFloat/clearFloat_15.gif
都是margin-left惹的祸,去掉margin-left:
.div2 {
CSS:闭合元素和浮动元素的差别margin-left
: 0;
CSS:闭合元素和浮动元素的差别
}

终于接近统一了。

图16:去

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号