源码网,源码论坛,源码之家,商业源码,游戏源码下载,discuz插件,棋牌源码下载,精品源码论坛

 找回密码
 立即注册
楼主: ttx9n

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

[复制链接]

7万

主题

861

回帖

32万

积分

论坛元老

Rank: 8Rank: 8

积分
329525
发表于 2008-10-17 19:24:30 | 显示全部楼层 |阅读模式
提示:本文不是教程,而是对闭合浮动元素的方法在某个特定情况下的现象的讨论,涉及float、clear、overflow、:after等知识,新手勿入。 float属性在页面排版上非常有用,但是也带来很多问题。最常见的就是浮动元素的闭合问题。 如果一个没有设定高度的不浮动元素的子元 提示:本文不是教程,而是对闭合浮动元素的方法在某个特定情况下的现象的讨论,涉及float、clear、overflow、:after等知识,新手勿入。

float属性在页面排版上非常有用,但是也带来很多问题。最常见的就是浮动元素的闭合问题。
如果一个没有设定高度的不浮动元素的子元素浮动,则该元素的高度不会包括浮动子元素的高度,而只会包含其内部不浮动元素的高度,因为浮动元素不属于常规流向,它脱离了文档流。因此如果要元素能够自动包含浮动子元素,则需要闭合浮动元素。
目前比较常用的有3种方法:
利用浮动子元素后的元素清除浮动(包括添加1个空的元素以清除浮动)。 使用:after伪元素,在元素最后插入清除。 为元素设定overflow属性除“visible”之外的值。
还有1个方法可以使元素自适应高度:
浮动元素,浮动的元素会包含浮动的后代元素。
下列代码,其显示如图1所示。
提示:所列代码只是关键代码,完整代码请查看示例页面。

CSS:

2008101719174968777801.gif

2008101719174968777801.gif
p,
div{...}{

2008101719174984377804.gif

2008101719174984377804.gif
margin:5px;

2008101719174990677805.gif

2008101719174990677805.gif
}
.wrap{...}{
width:440px;
margin:10px;
clear:both;
}
.div1,
.div2p{...}{
float:left;
width:80px;
margin:8px;
display:inline;
}

XHTML:
<divclass="wrap">
<divclass="div1">div1,浮动</div>
<divclass="div2">
<pclass="div2p">div2内p1</p>
<pclass="div2p">div2内p2</p>
<pclass="div2p3">div2内p3,不浮动</p>
</div>
<divclass="div3">div3,不浮动</div>
</div>
提示:截图是Firefox2.0(以下简称FF)中的效果,如无特殊声明,则表示在WindowsIE7.0(以下简称IE)、Opera9.2(以下简称Op)、Safari3.0(以下简称Sa)中效果相同。

图1:浮动元素与子元素浮动的元素
/web/css/format/clearFloat/clearFloat_01.gif
如果对.div2p增加CSS:
.div2p{...}{
......
clear:left;
}
由于“clear:left”含义为:不允许本元素左边有浮动框,而div1也是浮动元素,因此,p1和p2下移到了div1的下面,如图2所示。
图2:不浮动的元素内的浮动子元素设定“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{...}{
clear:left;
}
此时显示如图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{...}{
......
margin-left:120px;
}
则显示如图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{...}{
content:".";
display:block;
height:0;
clear:both;
visibility:hidden;
}
显示效果如图8所示。(IE不支持,不用试了。==b)
图8:使用:after清除浮动
/web/css/format/clearFloat/clearFloat_08.gif
可以看到div2内的p3没有清除浮动,位置仍在div2的顶端。
增加div2的左边距,显示如图9所示。
.div2{...}{
margin-left:120px;
}
图9:增加div2的左边距
/web/css/format/clearFloat/clearFloat_09.gif
由此可见使用:after清除浮动,不适合于浮动元素后面还有不浮动元素的情况。
闭合浮动元素方法3
尝试方法3,使用overflow属性:
.div2{...}{
overflow:auto;
height:100%;/**//*针对ie6*/
}
此时,最热闹的情况出现了:
图10:FF的效果
/web/css/format/clearFloat/clearFloat_10.gif
图11:Op和Sa的效果
/web/css/format/clearFloat/clearFloat_11.gif
图12:IE的效果(注:如果用IE6,效果也不一样,==
回复

使用道具 举报

0

主题

1万

回帖

0

积分

中级会员

Rank: 3Rank: 3

积分
0
发表于 2022-8-9 07:39:20 | 显示全部楼层
天天源码社区www.tiantianym.com
回复 支持 反对

使用道具 举报

15

主题

2万

回帖

122

积分

注册会员

Rank: 2

积分
122
发表于 2022-12-5 01:44:17 | 显示全部楼层
看到这帖子真是高兴!
回复 支持 反对

使用道具 举报

6

主题

1万

回帖

174

积分

注册会员

Rank: 2

积分
174
发表于 2022-12-6 06:15:51 | 显示全部楼层
我找了挺久终于找到了
回复 支持 反对

使用道具 举报

1

主题

2万

回帖

207

积分

中级会员

Rank: 3Rank: 3

积分
207
发表于 2022-12-28 11:01:54 | 显示全部楼层
我要金豆金豆金豆
回复 支持 反对

使用道具 举报

1

主题

2万

回帖

182

积分

注册会员

Rank: 2

积分
182
发表于 2022-12-30 09:14:46 | 显示全部楼层
给爸爸爸爸爸爸爸爸爸爸八佰伴八佰伴
回复 支持 反对

使用道具 举报

0

主题

1万

回帖

0

积分

中级会员

Rank: 3Rank: 3

积分
0
发表于 2023-3-17 12:06:40 | 显示全部楼层
强烈支持楼主ing……
回复 支持 反对

使用道具 举报

3

主题

2万

回帖

50

积分

注册会员

Rank: 2

积分
50
发表于 2023-4-10 23:29:39 | 显示全部楼层
iiguuubhuiuihu
回复 支持 反对

使用道具 举报

0

主题

2万

回帖

55

积分

注册会员

Rank: 2

积分
55
发表于 2023-6-21 04:45:47 | 显示全部楼层
加快速度很快就撒谎
回复 支持 反对

使用道具 举报

8

主题

2万

回帖

52

积分

注册会员

Rank: 2

积分
52
发表于 2023-7-17 21:44:56 | 显示全部楼层
天天源码社区。。。。
回复 支持 反对

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

手机版|小黑屋|网站地图|源码论坛 ( 海外版 )

GMT+8, 2025-2-5 17:58 , Processed in 0.106604 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表