清除浮动方法及优缺点
2015-08-12 17:05
375 查看
方法1:给父级div定义 高度
代码如下:
<style type=”text/css”>
.div1{background:#000;border:1px solid red; /*解决代码*/height:200px;}
.div2{background:#f00;border:1px solid red;height:100px;margin-top:10px}
.left{float:left;width:20%;height:200px;background:#DDD}
.right{float:right;width:70%;height:80px;background:#DDD}
< /style>
<div class=”div1″>
<div class=”left”>我是左浮动</div>
<div class=”right”>我是右浮动</div>
</div>
<div class=”div2″>我是div2</div>
原理:给父级DIV定义固定高度(height),能解决父级DIV 无法获取高度得问题。
优点:代码简洁
缺点:高度被固定死了,是适合内容固定不变的模块。(不推荐使用)
方法2:DIV闭合处,加<div class=”clear”></div> (.clear{clear:both})
代码如下:
<div class=”div1″>
<div class=”left”>我是左浮动</div>
<div class=”right”>我是右浮动</div>
<div class=”clear”></div>
</div>
<div class=”div2″>我是div2</div>
原理:添加一对空的DIV标签,利用css的clear:both属性清除浮动,让父级DIV能够获取高度。
优点:浏览器支持好
缺点:多出了很多空的DIV标签,如果页面中浮动模块多的话,就会出现很多的空置DIV了,这样感觉视乎不是太令人满意。(不推荐使用)
方法3:结尾处加 br标签<br class=”clear”/> (.clear{clear:both})
代码如下:
<div class=”div1″>
<div class=”left”>我是左浮动</div>
<div class=”right”>我是右浮动</div>
<br class=”clear” />
</div>
<div class=”div2″>我是div2</div>
原理及有优缺点同方法2,可做了解,亦不推荐使用。
方法4:让父级div 也一并浮起来
这样做可以初步解决当前的浮动问题。但是也让父级浮动起来了,又会产生新的浮动问题。 不推荐使用
方法5:父级div定义 display:table
原理:将div属性强制变成表格
优点:不解
缺点:会产生新的未知问题。(不推荐使用)
方法6父元素设置 overflow:hidden;
<style type=”text/css”>
.div1{background:#000;border:1px solid red; /*解决代码*/overflow:hidden;zoom:1}
.div2{background:#f00;border:1px solid red;height:100px;margin-top:10px}
.left{float:left;width:20%;height:200px;background:#DDD}
.right{float:right;width:70%;height:80px;background:#DDD}
</style>
<div class=”div1″>
<div class=”left”>我是左浮动</div>
<div class=”right”>我是右浮动</div>
</div>
<div class=”div2″>我是div2</div>
原理:通过设置父元素overflow值设置为hidden;在IE6中还需要触发 hasLayout(zoom:1)
优点:代码简介,不存在结构和语义化问题
缺点:无法显示需要溢出的元素(亦不太推荐使用)
方法7父元素设置 overflow:auto;
原理:原理同方法6,在IE6中还需要触发 hasLayout(zoom:1)
优点:代码简介,不存在结构和语义化问题
缺点:firefox早期版本会无故产生focus,多个嵌套后,firefox某些情况会造成内容全选;IE中 mouseover 造成宽度改变时会出现最外层模块有滚动条等。
方法8:父级div定义 伪类:after 和 zoom
代
a2b8
码如下:
<style type=”text/css”>
.div1{background:#000;border:1px solid red; /*解决代码*/overflow:hidden;zoom:1}
.div2{background:#f00;border:1px solid red;height:100px;margin-top:10px}
.left{float:left;width:20%;height:200px;background:#DDD}
.right{float:right;width:70%;height:80px;background:#DDD}
.clearfix:after { content: “.”;display: block;height: 0;clear: both;visibility: hidden; }
.clearfix {zoom:1;}
</style>
<div class=”div1 clearfix”>
<div class=”left”>我是左浮动</div>
<div class=”right”>我是右浮动</div>
</div>
<div class=”div2″>我是div2</div>
原理:IE8以上和非IE浏览器才支持:after,原理和方法2有点类似,zoom(IE转有属性)可解决ie6,ie7浮动问题
优点:结构和语义化完全正确,代码量也适中,可重复利用率(建议定义公共类)
缺点:代码不是非常简洁(极力推荐使用)
本方法进益求精写法
相对于空标签闭合浮动的方法代码似乎还是有些冗余,通过查询发现Unicode字符里有一个“零宽度空格”,也就是U+200B,这个字符本身是不可见的,所以我们完全可以省略掉 visibility:hidden了
.clearfix:after {content:”\200B”; display:block; height:0; clear:both; }
.clearfix { *zoom:1; } 照顾IE6,IE7就可以了
转载地址:wfuns.com
代码如下:
<style type=”text/css”>
.div1{background:#000;border:1px solid red; /*解决代码*/height:200px;}
.div2{background:#f00;border:1px solid red;height:100px;margin-top:10px}
.left{float:left;width:20%;height:200px;background:#DDD}
.right{float:right;width:70%;height:80px;background:#DDD}
< /style>
<div class=”div1″>
<div class=”left”>我是左浮动</div>
<div class=”right”>我是右浮动</div>
</div>
<div class=”div2″>我是div2</div>
原理:给父级DIV定义固定高度(height),能解决父级DIV 无法获取高度得问题。
优点:代码简洁
缺点:高度被固定死了,是适合内容固定不变的模块。(不推荐使用)
方法2:DIV闭合处,加<div class=”clear”></div> (.clear{clear:both})
代码如下:
<div class=”div1″>
<div class=”left”>我是左浮动</div>
<div class=”right”>我是右浮动</div>
<div class=”clear”></div>
</div>
<div class=”div2″>我是div2</div>
原理:添加一对空的DIV标签,利用css的clear:both属性清除浮动,让父级DIV能够获取高度。
优点:浏览器支持好
缺点:多出了很多空的DIV标签,如果页面中浮动模块多的话,就会出现很多的空置DIV了,这样感觉视乎不是太令人满意。(不推荐使用)
方法3:结尾处加 br标签<br class=”clear”/> (.clear{clear:both})
代码如下:
<div class=”div1″>
<div class=”left”>我是左浮动</div>
<div class=”right”>我是右浮动</div>
<br class=”clear” />
</div>
<div class=”div2″>我是div2</div>
原理及有优缺点同方法2,可做了解,亦不推荐使用。
方法4:让父级div 也一并浮起来
这样做可以初步解决当前的浮动问题。但是也让父级浮动起来了,又会产生新的浮动问题。 不推荐使用
方法5:父级div定义 display:table
原理:将div属性强制变成表格
优点:不解
缺点:会产生新的未知问题。(不推荐使用)
方法6父元素设置 overflow:hidden;
<style type=”text/css”>
.div1{background:#000;border:1px solid red; /*解决代码*/overflow:hidden;zoom:1}
.div2{background:#f00;border:1px solid red;height:100px;margin-top:10px}
.left{float:left;width:20%;height:200px;background:#DDD}
.right{float:right;width:70%;height:80px;background:#DDD}
</style>
<div class=”div1″>
<div class=”left”>我是左浮动</div>
<div class=”right”>我是右浮动</div>
</div>
<div class=”div2″>我是div2</div>
原理:通过设置父元素overflow值设置为hidden;在IE6中还需要触发 hasLayout(zoom:1)
优点:代码简介,不存在结构和语义化问题
缺点:无法显示需要溢出的元素(亦不太推荐使用)
方法7父元素设置 overflow:auto;
原理:原理同方法6,在IE6中还需要触发 hasLayout(zoom:1)
优点:代码简介,不存在结构和语义化问题
缺点:firefox早期版本会无故产生focus,多个嵌套后,firefox某些情况会造成内容全选;IE中 mouseover 造成宽度改变时会出现最外层模块有滚动条等。
方法8:父级div定义 伪类:after 和 zoom
代
a2b8
码如下:
<style type=”text/css”>
.div1{background:#000;border:1px solid red; /*解决代码*/overflow:hidden;zoom:1}
.div2{background:#f00;border:1px solid red;height:100px;margin-top:10px}
.left{float:left;width:20%;height:200px;background:#DDD}
.right{float:right;width:70%;height:80px;background:#DDD}
.clearfix:after { content: “.”;display: block;height: 0;clear: both;visibility: hidden; }
.clearfix {zoom:1;}
</style>
<div class=”div1 clearfix”>
<div class=”left”>我是左浮动</div>
<div class=”right”>我是右浮动</div>
</div>
<div class=”div2″>我是div2</div>
原理:IE8以上和非IE浏览器才支持:after,原理和方法2有点类似,zoom(IE转有属性)可解决ie6,ie7浮动问题
优点:结构和语义化完全正确,代码量也适中,可重复利用率(建议定义公共类)
缺点:代码不是非常简洁(极力推荐使用)
本方法进益求精写法
相对于空标签闭合浮动的方法代码似乎还是有些冗余,通过查询发现Unicode字符里有一个“零宽度空格”,也就是U+200B,这个字符本身是不可见的,所以我们完全可以省略掉 visibility:hidden了
.clearfix:after {content:”\200B”; display:block; height:0; clear:both; }
.clearfix { *zoom:1; } 照顾IE6,IE7就可以了
转载地址:wfuns.com
相关文章推荐
- 谁是Windows 10中国市场的赢家?
- Android应用的性能问题
- Java进阶(十二)JDK版本错误之Unsupported major.minor version 51.0(jdk版本错误)
- string和C-风格字符串输入方式详解
- Redis报错:ERR Operation against a key holding the wrong kind of value 解决处理
- zoj1654 Place the Robots
- hdu 3085 Nightmare Ⅱ(双向bfs)
- 点击tableview的头视图按钮来达到收放tableview的列表
- 测试
- Linux Socket编程(不限Linux)
- Mac 技巧
- WebSphere MQ7.5教程——教程 2:将消息发送至远程队列
- POJ 1523--SPF【无向图的所有割点 && 删去该点后bcc的数目】
- 视图控制器---UIViewController介绍
- Java进阶(十二)JDK版本错误之Unsupported major.minor version 51.0(jdk版本错误)
- UDP 收/发 广播包
- svn Server sent unexpected return value (403 Forbidden) in response to CHECKOUT
- 玛丽全开-许愿池
- [转载] Mahout
- Leetcode#25||Reverse Nodes in k-Group