|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
当遇到几个选择器共享一个声明的时候,可以分组放在一起,每个选择器必须以逗号隔开。例:h1,h2,h3,h4{colorred;}选择器分组时要将每个选择器路径写全,分组结尾不能有逗号。
提醒:本文不是教程,而是对闭合浮动元素的办法在某个特定情形下的征象的会商,触及float、clear、overflow、:after等常识,老手勿进。
float属性在页面排版上十分有效,可是也带来良多成绩。最多见的就是浮动元素的闭合成绩。
假如一个没有设定高度的不浮动元素的子元素浮动,则该元素的高度不会包含浮动子元素的高度,而只会包括其外部不浮动元素的高度,由于浮动元素不属于惯例流向,它离开了文档流。因而假如要元素可以主动包括浮动子元素,则必要闭合浮动元素。
今朝对照经常使用的有3种办法:
- 使用浮动子元素后的元素扫除浮动(包含增加1个空的元素以扫除浮动)。
- 利用:after伪元素,在元素最初拔出扫除。
- 为元素设定overflow属性除“visible”以外的值。
另有1个办法可使元素自顺应高度:
以下代码,其显现如所示。
提醒:所列代码只是关头代码,完全代码请检察示例页面。
CSS:
p,
div{...}{
margin:5px;
}
.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)中效果不异。
:浮动元素与子元素浮动的元素
假如对.div2p增添CSS:
.div2p{...}{
......
clear:left;
}
因为“clear:left”寄义为:不同意本元素右边有浮动框,而div1也是浮动元素,因而,p1和p2下移到了div1的上面,如所示。
:不浮动的元素内的浮动子元素设定“clear:left”后的效果
而在IE中,全部div2都将下移到div1下,如所示。
:不浮动的元素内的浮动子元素设定“clear:left”后IE的显现
由能够发明,固然在中IE准确地显现了溢出的元素,可是,关于动身了layout的wrap,IE仍然会扩大最外层的高度,以包容浮动元素。
闭合浮动元素办法1
此时,div2的高度只包含其内未浮动元素的高度,因而利用第1种办法闭合浮动元素,为浮动元素前面的元素p3设定clear属性:
.div2p3{...}{
clear:left;
}
此时显现如所示,在IE中如所示。
:p3扫除浮动后的效果
:p3扫除浮动后IE内的效果
(啊!巨大的IE,竟然多出来与div2的margin一样多的间隙。==b)
此时假如为div2增添右边距(原设定为margin:5px):
.div2{...}{
......
margin-left:120px;
}
则显现如所示,在IE中如所示。
:增添右边距后的效果
:p增添右边距后IE内的效果
至此的效果,是摆布2栏结构经常使用的办法,左栏流动宽度,右栏不设定宽度以求能自顺应。
闭合浮动元素办法2
实验办法2,使用:after扫除浮动:
.div2:after{...}{
content:".";
display:block;
height:0;
clear:both;
visibility:hidden;
}
显现效果如所示。(IE不撑持,不必试了。==b)
:利用:after扫除浮动
能够看到div2内的p3没有扫除浮动,地位仍在div2的顶端。
增添div2的右边距,显现如所示。
.div2{...}{
margin-left:120px;
}
:增添div2的右边距
因而可知利用:after扫除浮动,不合适于浮动元素前面另有不浮动元素的情形。
闭合浮动元素办法3
实验办法3,利用overflow属性:
.div2{...}{
overflow:auto;
+height:100%;/**//*针对ie6*/
}
此时,最热烈的情形呈现了:
0:FF的效果
1:Op和Sa的效果
2:IE的效果(注:假如用IE6,效果也纷歧样,==|||)
起首,div2的宽度压缩到div1的右侧了,大概这恰好是希冀的了局?
更热烈的在前面,增添div2的margin-left:
.div2{...}{
margin-left:120px;
}
3:FF的效果
4:Op和Sa的效果
5:IE的效果(注:假如用IE6,效果也纷歧样,==|||)
都是margin-left惹的祸,往失落margin-left:
.div2{...}{
margin-left:0;
}
终究靠近一致了。
6:往失落margin-left的效果
7:往失落margin-left在IE内的效果
因而可知,overflow仍是有很年夜范围性的。
可是形成FF、Op和Sa的显现了局的缘故原由又是甚么呢?
浮动
div2浮动,浮动元素的高度会包括其外部的浮动元素。
这类办法的范围性就是,div2浮动后宽度会被紧缩,因而必需给它一个宽度值,可是如许就没法自顺应宽度。
.div2{...}{
float:left;
}
.div3{...}{
clear:both;
}
效果如8所示。
8:浮动div2
div2的浮动,还会形成wrap的高度成绩,因而必要div3扫除浮动。
由这个例子能够发明,因为div2的浮动,其内的p元素扫除浮动,并没有遭到div1的影响,因而,办理因为前2种办法中p1和p2下落到div1的高度之下的办法之一,能够将p1和p2表面套1个浮动的div,固然这大概影响到布局,还必要分离详细情形来决意。
业界越来越关注DIV+CSS的标准化设计,大到各大门户网站,小到不计其数的个人网站,在Div+CSS标准化的影响下,网页设计人员已经把这一要求作为行业标准。 |
|