笔记-011-浮动(float)
清除浮动
为什么?
- 父级没高度
- 子盒子浮动了
- 影响了下面的布局
清除浮动的方式(4种)

- 额外标签法(在最后一个浮动标签后,新加一个标签,给其设置clear:both;)(不推荐) 
 <html lang="en">
 <head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <meta http-equiv="X-UA-Compatible" content="ie=edge">
 <title>Document</title>
 <style>
 .fahter{
 width: 400px;
 border: 1px solid deeppink;
 }
 .big{
 width: 200px;
 height: 200px;
 background: darkorange;
 float: left;
 }
 .small{
 width: 120px;
 height: 120px;
 background: darkmagenta;
 float: left;
 }
 .footer{
 width: 900px;
 height: 100px;
 background: darkslateblue;
 }
 .clear{
 clear:both;
 }
 </style>
 </head>
 <body>
 <div class="fahter">
 <div class="big">big</div>
 <div class="small">small</div>
 <div class="clear">额外标签法</div>
 </div>
 <div class="footer"></div>
 </body>
 </html> 
- 父级添加overflow属性(父元素添加overflow:hidden)(不推荐)通过触发BFC方式,实现清除浮动。 - .fahter{ 
 width: 400px;
 border: 1px solid deeppink;
 overflow: hidden;
 }- 优点:代码简洁 
 缺点:内容增多的时候容易造成不会自动换行导致内容被隐藏掉,无法显示要溢出的元素
 不推荐使用
- 使用after伪元素清除浮动(推荐使用) - <style> 
 .clearfix:after{/*伪元素是行内元素 正常浏览器清除浮动方法*/
 content: "";
 display: block;
 height: 0;
 clear:both;
 visibility: hidden;
 }
 .clearfix{
 *zoom: 1;/*ie6清除浮动的方式 *号只有IE6-IE7执行,其他浏览器不执行*/
 }
 </style>
 <body>
 <div class="fahter clearfix">
 <div class="big">big</div>
 <div class="small">small</div>
 <!--<div class="clear">额外标签法</div>-->
 </div>
 <div class="footer"></div>
 </body>
优点:符合闭合浮动思想,结构语义化正确
缺点:ie6-7不支持伪元素:after,使用zoom:1触发hasLayout.
推荐使用
- 使用before和after双伪元素清除浮动优点:代码更简洁<style> 
 .clearfix:after,.clearfix:before{
 content: "";
 display: table;
 }
 .clearfix:after{
 clear: both;
 }
 .clearfix{
 *zoom: 1;
 }
 </style>
 <body>
 <div class="fahter clearfix">
 <div class="big">big</div>
 <div class="small">small</div>
 <!--<div class="clear">额外标签法</div>-->
 </div>
 <div class="footer"></div>
 </body>
 缺点:用zoom:1触发hasLayout(为了兼容ie6).
 推荐使用
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 御驾亲征!
 评论






