清除浮动的三种方法:
1.标签清除浮动
在浮动元素后加一个空标签,空标签上定义一个清除浮动的类:
<style type="text/css">
.clear{ clear:both; height:0;overflow:hidden;}
.float_left{ float:left; }
.float_right{ float:left; }
</style>
<div class="float_left">左浮动元素</div>
<div class="float_right">右浮动元素</div>
<br class="clear"></br>
空标签法简单有效,对浏览器的兼容性也很不错,空标签也不一定限于div,也可以是其他的标签p、span、br,值得注意的是在标准浏览器下这个空标签必须是块级元素,比如在使用span的时候就得将它转换成块级元素(display:block),在IE6/7下内联元素也可以。空标签法由于使用起来简单,受到广大新手朋友的青睐,我也时常为了省事,用这种办法。空标签法的缺点就是要多加一个额外的标签,这样HTML代码看起来就不够优雅,如果浮动元素较多,那么空标签也会很多
2.overflow
子级元素有浮动,可以给父级元素添加一个overflow:hidden或overflow:auto的CSS属性来清除浮动。
<style type="text/css">
.content{
overflow:hidden;
background:red;
}
.float_left{ float:left; }
.float_right{ float:left; }
</style>
<div class="content">
<div class="float_left">左浮动元素</div>
<div class="float_right">右浮动元素</div>
</div>
该方法可以兼容标准浏览器以及IE7+,对IE6无效。但overflow:hidden或overflow:auto属性的CSS元素如果内部有元素要定位到外面来的话就很杯具了
3.IE6/7的hasLayout
微软的IE6/7的渲染引擎都有hasLayout属性,很多兼容问题都是由此引起的,某些CSS属性触发了hasLayout也同样可以达到清除浮动的效果。结合上面提到的overflow,那么就可以实现兼容标准浏览器和IE6的清除浮动的效果。触发IE6/7的hasLayout的方法并可以用来清除浮动的方法有:
1. 设置一个显式的高度或宽度(不能为auto)
2. zoom:1
3. display: inline-block (hack形式)
4. float:left/right (hack形式)
float
子元素有浮动,给父元素也添加一个浮动(float:left),在标准浏览器下和IE6/7/8下都有效,但是这个父级元素浮动了又得清除父级元素的浮动,所以该方法的应用场景很受限制,不推荐使用。
:after
:after是一个伪类元素,经常与content结合使用,用来给元素的后面添加内容,该方法用来清除浮动可以兼容标准浏览器和IE8,IE6/IE7无效。
<style type="text/css">
.box{
zoom:1; /*兼容IE6/7的清除浮动*/
}
/*兼容标准浏览器*/
.box:after{
content:'.'; /*具体的值与清除浮动无关,尽可能的节省字符*/
visibility:hidden;/*不可见*/
display:block; /*设置成块级元素*/
height:0; /*0高度使其不占用布局空间*/
font-size:0px;/*兼容ie6,使其不占据布局空间*/
clear:both;
}
.box{
zoom:1;
background:red;
}
.float_left{ float:left;}
.float_right{ float:left;}
</style>
<div class="box">
<div class="float_left">左</div>
<div class="float_right">右</div>
</div>
5.采用display:table/display:table-cell 等table系列属性将父元素变成 table 形式自动包含浮动元素;
.box{display:table}
或者
.box{display:table-cell}
6.使用 TABLE 以及 TD 标签作为浮动元素容器;
<table>
<tr>
<td>
<div style=”float:left”></div>
</td>
</tr>
</table>
7.采用 float:left/float:right 方式将父元素同样浮动,就可以包含浮动内容;
当元素设置 float:left/float:right 时 ,同样也创建了 CSS 2.1 规范定义的 Block Formatting Contexts。这样父容器也就包含了浮动元素高度。同时,这个样式也会在 IE 6/7 内触发 hasLayout 特性,拥有这个特性的元素也可以计算出浮动元素的高度,使父元素包含他们。
实际问题:
虽然这种方式并没有兼容问题,但实际使用中并不推荐。因为很容易推断出,页面中只要有一个浮动元素,使用该方法清理浮动将不可避免的使页面所有元素都浮动才可以达到预期效果。
分享到:
相关推荐
css中3种清除浮动方法css中3种清除浮动方法
浮动的原理 ,介绍清除浮动几种方法。以及margin塌陷的产生和解决margin的塌陷的方法
浮动的属性虽然方便使用,但是在使用这种属性时,也存在着一种弊端,那就是当子元素设置了float属性之后,且父元素的宽度没有设置...所以这里我们说的清除浮动,指的是清除子盒子添加浮动效果后造成的父盒子高度塌陷。
COME-IN FROM 导航条字体加粗 清除浮动 minyout 4.390v.
浮动的属性虽然方便使用,但是在使用这种属性时,也存在着一种弊端,那就是当子元素设置了float属性之后,且父元素的宽度没有设置...所以这里我们说的清除浮动,指的是清除子盒子添加浮动效果后造成的父盒子高度塌陷。
NULL 博文链接:https://onestopweb.iteye.com/blog/2316146
div+css清除浮动
清除浮动的几种方法.md
我们为何要清除浮动?清除浮动的原理是什么?本文将一步一步地深入剖析其中的奥秘,让浮动使用起来更加得心应手。 一、清除浮动 还是 闭合浮动 (Enclosing float or Clearing float)? 很多人都已经习惯称之为清除...
css清除浮动大全--------共8种方法
做xhtml+css页面重构的人员很注重的一点就是浮动,而浮动最头痛的就是如何清除。文件是我整理的3种清除浮动的方法,3种方法各有优缺点,页面重构师需要结合使用
css清除浮动的方法有哪些?.docx
清除CSS浮动 CSS清除浮动_2种方法源代码.zip
清除浮动的几种方法PPT学习教案.pptx
清除浮动是每一个 web前台设计师必须掌握的机能。css清除浮动大全,共8种方法。 浮动会使当前标签产生向上浮的效果,同时会影响到前后标签、父级标签的位置及 width height 属性。而且同样的代码,在各种浏览器中...
CSS技术:清除浮动的最优方法.pdf
因为Zoom属性是IE浏览器的专有属性,所以他清除浮动作用只适用于IE浏览器,而Firefox、google等浏览器则需要使用overflow:auto属性来清除浮动。所以要达到兼容IE6、IE7、IE8、Firefox、google浏览器的时候就必需使用...
通过本文,让大家可以明白清除浮动的原理和几种方法,最后得出一种本文认为最好用的方法。 二、 内容简介 1、 引入,还原浮动本来的意义 2、 说明,实际开发中常用浮动来做什么 3、 提问,为什么要清除浮动 4、 回答...
清除浮动就是指解决浮动元素溢出容器的操作,其方法多种多样,这里我们来看最基本的一种:CSS的clear属性清除浮动的基本用法示例
DIV+CSS 清除浮动是页面布局中常见的问题,相信各位高手也都有自己的方法,今天在这里对常见的几种方法进行总结(PS:谈不上是原创,这里是我自己做的归纳总结,也是我自己内化的过程),希望对您能够有所帮助。...