解决子元素 浮动造成 父元素高度塌陷的问题 的几种方法


一、设置父元素的高度。

优点:简单,方便。

缺点:无法自适应后面添加的元素的,即后面用其他方式添加的元素也会出现框架坍塌现象。

css代码:.box-wrapper{height:100px;}


二、使用overflow:hidden属性。

优点:简单,有效。

缺点:对进行过定位的元素进行裁剪,即通过定位的子元素溢出父元素的部分会进行隐藏。

css代码:.box-wrapper{overflow:hidden;}


三、隔墙法:在需要清除浮动的地方,设置空盒子添加清除属性clear:both进行清除。

优点:简单,有效。

缺点:①代码过于冗余,如果出现多处浮动要写多个空盒子,增加了文件的大小。

   ②使用本方法会出现设置margin值异常,空盒子两边的margin会被无效化。

html代码:<div style="clear:both;"></div>或<div class="clearbox"></div>

css代码:.clearbox{clear:both;}


四、内墙法:在需要清除浮动的地方,设置空盒子添加清除属性clear:both进行清除。

优点:简单,有效解决空盒子两边的margin会被无效化。

缺点:代码过于冗余,如果出现多处浮动要写多个空盒子,增加了文件的大小。

html代码:以下要设置在需要清除浮动的内部末尾处:

        <div style="clear:both;"></div>或<div class="clearbox"></div>

css代码:.clearbox{clear:both;}


五、伪类划分法:使用伪类 :after 和  :before。

优点:有效,可以解决两个盒子之间设置margin值无效的问题。

缺点:几乎可以忽略不计。

css代码:

        /*现代浏览器clearfix方案,不支持IE6/7*/

        .clearfix:after {

            display: table;

            content: " ";

            clear: both;

        }

        /*全浏览器通用的clearfix方案*/ 

        /*引入了zoom以支持IE6/7*/

        .clearfix:after {

            display: table;

            content: " ";

            clear: both;

        }

        .clearfix{

            *zoom: 1;

        }

        /*全浏览器通用的clearfix方案【推荐】*/

        /*引入了zoom以支持IE6/7*/

        /*同时加入:before以解决现代浏览器上边距折叠的问题*/

          .clearfix:before,

          .clearfix:after {

              display: table;

              content: " ";

          }

        .clearfix:after {

            clear: both;

        }

        .clearfix{

            *zoom: 1;

        }

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,815评论 1 92
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,758评论 1 45
  • 前端开发面试题 <a name='preface'>前言</a> 只看问题点这里 看全部问题和答案点这里 本文由我...
    自you是敏感词阅读 786评论 0 3
  • 贴上一首阿赫玛托娃的诗 古老的城市一片死寂, 我的行程漫无目的。 在自己的河流上,弗拉基米尔 把黑色的十字架举起。...
    小妇阿达阅读 237评论 0 0
  • 如今乡间都是好几米宽的水泥路,从家里去学校5里路刚好10分钟。每天上学出发约7分钟,或放学出发3分钟,总要从一座大...
    汉天真阅读 1,179评论 2 20