[CSS]清除浮动

需要清楚浮动的场景,应同时满足:

1.子元素浮动

2.父元素不设高度

3.父元素塌陷影响下面的盒子

 

解决方法:

1.额外标签法(隔墙法)

        .clear {
            clear: both;
        }

  在子元素最后添加一个带有属性clear:both; 的块级标签。

  缺点:会多出一个无意义标签,结构化差。

 

2.父元素添加overflow属性

        .overflow {
            overflow: hidden;
            /* overflow: auto; */
            /* overflow: scroll; *//* 这个有点怪怪的 */
        }

  值可以是hidden、auto、scroll任意一个。

  缺点:溢出部分被隐藏。

 

3.父元素添加after伪元素(常用)

        .clearfix:after {
            content: '';
            display: block;
            height: 0;
            clear: both;
            visibility: hidden;
        }
        .clearfix {
            /* 兼容IE6、7 */
            *zoom: 1;
        }    

  相当于额外标签法的升级版,结构更清晰。

  缺点:需要照顾低版本的浏览器。

 

4.父元素添加双伪元素(常用)

     .clearfix1:before, .clearfix1:after {
            content: '';
            display: table;
        }
        .clearfix1:after {
            clear: both;
        }
        .clearfix1 {
            /* 兼容IE6、7 */
            *zoom: 1;
        }

  使用before、after双伪元素。

  缺点:需要照顾低版本浏览器。

 

总结摘自黑马程序员:

[CSS]清除浮动

 

上一篇:布局 and BFC 清浮动


下一篇:web 基础知识