浮动的环境:当我们有一个大盒子(只设置了宽,没有设置高),里面嵌套着若干个小盒子,为了布局从左到右显示,都设置为浮动。再从外部加一个大盒子的时候,因为上面大盒子内部的子盒子是浮动的,所以它们都是不占位的,这时候大盒子会顶到上面的盒子的位置。
清除子盒子浮动:
1、clear: left | right | both(这个使用的时候别设置父元素的高。)
2、给父元素使用overflow:hidden,此时会产生BFC,也就是格式化上下文,会渲染出一个vip区域。(这个使用的时候别设置父元素的高。)
3、单伪元素标签法
4、双伪元素标签法
5、直接设置宽高
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style type="text/css"> .header, .main, .footer { 500px; } .header, .footer { height: 100px; background: #000; } .main { background: #eee; margin: 10px 0; /*overflow:hidden;*/ } .content { 300px; height: 300px; background: orange; float: left; } .sidebar { 190px; height: 300px; background: green; float: right; } .clearfix:after { content: "."; display: block; height: 0; line-height: 0; visibility: hidden; clear: both; } /*兼容ie浏览器*/ .clearfix { zoom: 1; } </style> </head> <body> <div class="header"></div> <div class="main clearfix"> <div class="content"></div> <div class="sidebar"></div> <!--消除浮动--> <!--<div style="clear:both"></div>--> </div> <div class="footer"></div> </body> </html>
双伪元素标签法:
<style type="text/css"> .clearfix:before, .clearfix:after { content: ""; display: table; } .clearfix:after { clear: both; } .clearfix { zoom: 1; } </style>