清除浮动是每个 web前台设计师必须掌握的机能。
css清除浮动大全,共8种方法。
浮动会使当前标签产生向上浮的效果,同一时候会影响到前后标签、父级标签的位置及 width height 属性。并且相同的代码,在各种浏览器中显示效果也有可能不相同,这样让清除浮动更难了。解决浮动引起的问题有多种方法,但有些方法在浏览器兼容性方面还有问题。
以下总结8种清除浮动的方法(測试已通过 ie chrome firefox opera,后面三种方法仅仅做了解就能够了):
1,父级div定义 height
复制代码
代码例如以下:
<style type="text/css">
.div1{background:#000080;border:1px solid red;/*解决代码*/height:200px;}
.div2{background:#800080;border:1px solid red;height:100px;margin-top:10px}
.left{float:left;width:20%;height:200px;background:#DDD}
.right{float:right;width:30%;height:80px;background:#DDD}
</style>
<div class="div1">
<div class="left">Left</div>
<div class="right">Right</div>
</div>
<div class="div2">
div2
</div>
原理:父级div手动定义height。就攻克了父级div无法自己主动获取到高度的问题。
长处:简单、代码少、easy掌握
缺点:仅仅适合高度固定的布局。要给出精确的高度,假设高度和父级div不一样时,会产生问题
建议:不推荐使用。仅仅建议高度固定的布局时使用
2,结尾处加空div标签 clear:both
代码例如以下:
<style type="text/css">
.div1{background:#000080;border:1px solid red}
.div2{background:#800080;border:1px solid red;height:100px;margin-top:10px}
.left{float:left;width:20%;height:200px;background:#DDD}
.right{float:right;width:30%;height:80px;background:#DDD}
/*清除浮动代码*/
.clearfloat{clear:both}
</style>
<div class="div1">
<div class="left">Left</div>
<div class="right">Right</div>
<div class="clearfloat"></div>
</div>
<div class="div2">
div2
</div>
原理:加入一个空div,利用css提高的clear:both清除浮动,让父级div能自己主动获取到高度
长处:简单、代码少、浏览器支持好、不easy出现怪问题
缺点:不少刚開始学习的人不理解原理。假设页面浮动布局多,就要添加非常多空div。让人感觉非常不好
建议:不推荐使用。但此方法是曾经主要使用的一种清除浮动方法
3,父级div定义 伪类:after 和 zoom
代码例如以下:
<style type="text/css">
.div1{background:#000080;border:1px solid red;}
.div2{background:#800080;border:1px solid red;height:100px;margin-top:10px}
.left{float:left;width:20%;height:200px;background:#DDD}
.right{float:right;width:30%;height:80px;background:#DDD}
/*清除浮动代码*/
.clearfloat:after{display:block;clear:both;content:"";visibility:hidden;height:0}
.clearfloat{zoom:1}
</style>
<div class="div1 clearfloat">
<div class="left">Left</div>
<div class="right">Right</div>
</div>
<div class="div2">
div2
</div>
原理:IE8以上和非IE浏览器才支持:after,原理和方法2有点类似,zoom(IE转有属性)可解决ie6,ie7浮动问题
长处:浏览器支持好、不easy出现怪问题(眼下:大型站点都有使用。如:腾迅。网易,新浪等等)
缺点:代码多、不少刚開始学习的人不理解原理,要两句代码结合使用才干让主流浏览器都支持。
建议:推荐使用,建议定义公共类,以降低CSS代码。
4,父级div定义 overflow:hidden
代码例如以下:
<style type="text/css">
.div1{background:#000080;border:1px solid red;/*解决代码*/width:98%;overflow:hidden}
.div2{background:#800080;border:1px solid red;height:100px;margin-top:10px;width:98%}
.left{float:left;width:20%;height:200px;background:#DDD}
.right{float:right;width:30%;height:80px;background:#DDD}
</style>
<div class="div1">
<div class="left">Left</div>
<div class="right">Right</div>
</div>
<div class="div2">
div2
</div>
原理:必须定义width或zoom:1,同一时候不能定义height,使用overflow:hidden时。浏览器会自己主动检查浮动区域的高度
长处:简单、代码少、浏览器支持好
缺点:不能和position配合使用。由于超出的尺寸的会被隐藏。
建议:仅仅推荐没有使用position或对overflow:hidden理解比較深的朋友使用。
5,父级div定义 overflow:auto
代码例如以下:
<style type="text/css">
.div1{background:#000080;border:1px solid red;/*解决代码*/width:98%;overflow:auto}
.div2{background:#800080;border:1px solid red;height:100px;margin-top:10px;width:98%}
.left{float:left;width:20%;height:200px;background:#DDD}
.right{float:right;width:30%;height:80px;background:#DDD}
</style>
<div class="div1">
<div class="left">Left</div>
<div class="right">Right</div>
</div>
<div class="div2">
div2
</div>
原理:必须定义width或zoom:1,同一时候不能定义height,使用overflow:auto时。浏览器会自己主动检查浮动区域的高度
长处:简单、代码少、浏览器支持好
缺点:内部宽高超过父级div时,会出现滚动栏。
建议:不推荐使用,假设你须要出现滚动栏或者确保你的代码不会出现滚动栏就使用吧。
6。父级div 也一起浮动
代码例如以下:
<style type="text/css">
.div1{background:#000080;border:1px solid red;/*解决代码*/width:98%;margin-bottom:10px;float:left}
.div2{background:#800080;border:1px solid red;height:100px;width:98%;/*解决代码*/clear:both}
.left{float:left;width:20%;height:200px;background:#DDD}
.right{float:right;width:30%;height:80px;background:#DDD}
</style>
<div class="div1">
<div class="left">Left</div>
<div class="right">Right</div>
</div>
<div class="div2">
div2
</div>
原理:全部代码一起浮动,就变成了一个总体
长处:没有长处
缺点:会产生新的浮动问题。
建议:不推荐使用。仅仅作了解。
7,父级div定义 display:table
代码例如以下:
<style type="text/css">
.div1{background:#000080;border:1px solid red;/*解决代码*/width:98%;display:table;margin-bottom:10px;}
.div2{background:#800080;border:1px solid red;height:100px;width:98%;}
.left{float:left;width:20%;height:200px;background:#DDD}
.right{float:right;width:30%;height:80px;background:#DDD}
</style>
<div class="div1">
<div class="left">Left</div>
<div class="right">Right</div>
</div>
<div class="div2">
div2
</div>
原理:将div属性变成表格
长处:没有长处
缺点:会产生新的未知问题。
建议:不推荐使用,仅仅作了解。
8。结尾处加 br标签 clear:both
复制代码
代码例如以下:
<style type="text/css">
.div1{background:#000080;border:1px solid red;margin-bottom:10px;zoom:1}
.div2{background:#800080;border:1px solid red;height:100px}
.left{float:left;width:20%;height:200px;background:#DDD}
.right{float:right;width:30%;height:80px;background:#DDD}
.clearfloat{clear:both}
</style>
<div class="div1">
<div class="left">Left</div>
<div class="right">Right</div>
<br class="clearfloat" />
</div>
<div class="div2">
div2
</div>
原理:父级div定义zoom:1来解决IE浮动问题,结尾处加 br标签 clear:both
建议:不推荐使用,仅仅作了解。
<iframe id="cproIframe_u811641_2" height="250" marginheight="0" src="http://pos.baidu.com/acom?adn=3&at=103&aurl=&cad=1&ccd=32&cec=gb2312&cfv=18&ch=0&col=zh-cn&conOP=0&cpa=1&dai=2&dis=0&ltr=https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3D7LTEH3QmZ-Iezu6yOEc8Z2FWp58BcBit3wCE6TI8rlTINXE0o2pDNMXSd811dhvy%26wd%3D%26eqid%3Dda9ddabd00017a6a0000000555da8236&ltu=http%3A%2F%2Fwww.jb51.net%2Fcss%2F173023.html&lunum=6&n=jb51_cpr&pcs=1353x583&pis=10000x10000&ps=521x832&psr=1366x768&pss=1353x799&qn=8e44b610bc8408d9&rad=&rsi0=300&rsi1=250&rsi5=4&rss0=%23ffffff&rss1=%23ffffff&rss2=%23006699&rss3=%23333333&rss4=%23333333&rss5=&rss6=%23e10900&rss7=&scale=&skin=&td_id=811641&tn=text_default_300_250&tpr=1440383743644&ts=1&version=2.0&xuanting=0&dtm=BAIDU_DUP2_SETJSONADSLOT&dc=2&di=u811641&ti=CSS%E6%B8%85%E9%99%A4%E6%B5%AE%E5%8A%A8%E5%A4%A7%E5%85%A8%E5%85%B18%E7%A7%8D%E6%96%B9%E6%B3%95_CSS%E6%95%99%E7%A8%8B_CSS_%E7%BD%91%E9%A1%B5%E5%88%B6%E4%BD%9C_%E8%84%9A%E6%9C%AC%E4%B9%8B%E5%AE%B6&tt=1440383742605.2070.2494.2498" frameborder="0" width="300" allowtransparency="" marginwidth="0" scrolling="no" align="center,center"></iframe>
清除浮动是每个 web前台设计师必须掌握的机能。
css清除浮动大全。共8种方法。
浮动会使当前标签产生向上浮的效果,同一时候会影响到前后标签、父级标签的位置及 width height 属性。
并且相同的代码。在各种浏览器中显示效果也有可能不相同。这样让清除浮动更难了。
解决浮动引起的问题有多种方法,但有些方法在浏览器兼容性方面还有问题。
以下总结8种清除浮动的方法(測试已通过 ie chrome firefox opera,后面三种方法仅仅做了解就能够了):
1。父级div定义 height
复制代码
代码例如以下:
<style type="text/css">
.div1{background:#000080;border:1px solid red;/*解决代码*/height:200px;}
.div2{background:#800080;border:1px solid red;height:100px;margin-top:10px}
.left{float:left;width:20%;height:200px;background:#DDD}
.right{float:right;width:30%;height:80px;background:#DDD}
</style>
<div class="div1">
<div class="left">Left</div>
<div class="right">Right</div>
</div>
<div class="div2">
div2
</div>
原理:父级div手动定义height。就攻克了父级div无法自己主动获取到高度的问题。
长处:简单、代码少、easy掌握
缺点:仅仅适合高度固定的布局,要给出精确的高度,假设高度和父级div不一样时,会产生问题
建议:不推荐使用。仅仅建议高度固定的布局时使用
2。结尾处加空div标签 clear:both
复制代码
代码例如以下:
<style type="text/css">
.div1{background:#000080;border:1px solid red}
.div2{background:#800080;border:1px solid red;height:100px;margin-top:10px}
.left{float:left;width:20%;height:200px;background:#DDD}
.right{float:right;width:30%;height:80px;background:#DDD}
/*清除浮动代码*/
.clearfloat{clear:both}
</style>
<div class="div1">
<div class="left">Left</div>
<div class="right">Right</div>
<div class="clearfloat"></div>
</div>
<div class="div2">
div2
</div>
原理:加入一个空div,利用css提高的clear:both清除浮动。让父级div能自己主动获取到高度
长处:简单、代码少、浏览器支持好、不easy出现怪问题
缺点:不少刚開始学习的人不理解原理;假设页面浮动布局多,就要添加非常多空div。让人感觉非常不好
建议:不推荐使用,但此方法是曾经主要使用的一种清除浮动方法
3。父级div定义 伪类:after 和 zoom
复制代码
代码例如以下:
<style type="text/css">
.div1{background:#000080;border:1px solid red;}
.div2{background:#800080;border:1px solid red;height:100px;margin-top:10px}
.left{float:left;width:20%;height:200px;background:#DDD}
.right{float:right;width:30%;height:80px;background:#DDD}
/*清除浮动代码*/
.clearfloat:after{display:block;clear:both;content:"";visibility:hidden;height:0}
.clearfloat{zoom:1}
</style>
<div class="div1 clearfloat">
<div class="left">Left</div>
<div class="right">Right</div>
</div>
<div class="div2">
div2
</div>
原理:IE8以上和非IE浏览器才支持:after。原理和方法2有点类似,zoom(IE转有属性)可解决ie6,ie7浮动问题
长处:浏览器支持好、不easy出现怪问题(眼下:大型站点都有使用,如:腾迅。网易,新浪等等)
缺点:代码多、不少刚開始学习的人不理解原理,要两句代码结合使用才干让主流浏览器都支持。
建议:推荐使用,建议定义公共类,以降低CSS代码。
4,父级div定义 overflow:hidden
复制代码
代码例如以下:
<style type="text/css">
.div1{background:#000080;border:1px solid red;/*解决代码*/width:98%;overflow:hidden}
.div2{background:#800080;border:1px solid red;height:100px;margin-top:10px;width:98%}
.left{float:left;width:20%;height:200px;background:#DDD}
.right{float:right;width:30%;height:80px;background:#DDD}
</style>
<div class="div1">
<div class="left">Left</div>
<div class="right">Right</div>
</div>
<div class="div2">
div2
</div>
原理:必须定义width或zoom:1。同一时候不能定义height,使用overflow:hidden时,浏览器会自己主动检查浮动区域的高度
长处:简单、代码少、浏览器支持好
缺点:不能和position配合使用。由于超出的尺寸的会被隐藏。
建议:仅仅推荐没有使用position或对overflow:hidden理解比較深的朋友使用。
5,父级div定义 overflow:auto
复制代码
代码例如以下:
<style type="text/css">
.div1{background:#000080;border:1px solid red;/*解决代码*/width:98%;overflow:auto}
.div2{background:#800080;border:1px solid red;height:100px;margin-top:10px;width:98%}
.left{float:left;width:20%;height:200px;background:#DDD}
.right{float:right;width:30%;height:80px;background:#DDD}
</style>
<div class="div1">
<div class="left">Left</div>
<div class="right">Right</div>
</div>
<div class="div2">
div2
</div>
原理:必须定义width或zoom:1,同一时候不能定义height。使用overflow:auto时,浏览器会自己主动检查浮动区域的高度
长处:简单、代码少、浏览器支持好
缺点:内部宽高超过父级div时,会出现滚动栏。
建议:不推荐使用,假设你须要出现滚动栏或者确保你的代码不会出现滚动栏就使用吧。
6,父级div 也一起浮动
复制代码
代码例如以下:
<style type="text/css">
.div1{background:#000080;border:1px solid red;/*解决代码*/width:98%;margin-bottom:10px;float:left}
.div2{background:#800080;border:1px solid red;height:100px;width:98%;/*解决代码*/clear:both}
.left{float:left;width:20%;height:200px;background:#DDD}
.right{float:right;width:30%;height:80px;background:#DDD}
</style>
<div class="div1">
<div class="left">Left</div>
<div class="right">Right</div>
</div>
<div class="div2">
div2
</div>
原理:全部代码一起浮动。就变成了一个总体
长处:没有长处
缺点:会产生新的浮动问题。
建议:不推荐使用。仅仅作了解。
7,父级div定义 display:table
复制代码
代码例如以下:
<style type="text/css">
.div1{background:#000080;border:1px solid red;/*解决代码*/width:98%;display:table;margin-bottom:10px;}
.div2{background:#800080;border:1px solid red;height:100px;width:98%;}
.left{float:left;width:20%;height:200px;background:#DDD}
.right{float:right;width:30%;height:80px;background:#DDD}
</style>
<div class="div1">
<div class="left">Left</div>
<div class="right">Right</div>
</div>
<div class="div2">
div2
</div>
原理:将div属性变成表格
长处:没有长处
缺点:会产生新的未知问题。
建议:不推荐使用。仅仅作了解。
8,结尾处加 br标签 clear:both
复制代码
代码例如以下:
<style type="text/css">
.div1{background:#000080;border:1px solid red;margin-bottom:10px;zoom:1}
.div2{background:#800080;border:1px solid red;height:100px}
.left{float:left;width:20%;height:200px;background:#DDD}
.right{float:right;width:30%;height:80px;background:#DDD}
.clearfloat{clear:both}
</style>
<div class="div1">
<div class="left">Left</div>
<div class="right">Right</div>
<br class="clearfloat" />
</div>
<div class="div2">
div2
</div>
原理:父级div定义zoom:1来解决IE浮动问题,结尾处加 br标签 clear:both