浮动造成的高度塌陷

Posted yzkddhxb

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浮动造成的高度塌陷相关的知识,希望对你有一定的参考价值。

  说到页面布局,我们最常见的麻烦就是浮动带来的干扰,首先什么是浮动,为什么会出现浮动,浮动的产生又会带来哪些负面的影响呢?我写这个随便记录一下学习中出现的问题,以及一些相应的解决方法。

  首先,html中有行元素,如:heda meat title lable span br a style em b i stron,行元素的特征是水平分布,多少个元素占一行,不可设置宽高。块元素,如:body from select textarea h1-h6 html table button hr p ol ul dl cnter div,块元素的特征是垂直分布,一个元素占一行,可以设置宽高。浮动的的出现就是针对块元素,比如div,典型的块元素,但有时我们需要多个div出现在一行中,在不使用定位的情况下,我们就要使用浮动。

  

<style>
      *{
          margin:0;
          padding:0;
      }
      .container{
          margin: 0 auto;
          background-color:red ;
      }
      .div1{
          width: 200px;
          height: 200px;
          background-color: blue;
          /* float:left; */
      }
      .div2{
          width: 200px;
          height: 200px;
          background-color: yellow;
          /* float: left; */
      }
    </style>
</head>

<body>
    <div class="container">
        <div class="div1">1</div>
        <div class="div2">2</div>
    </div>
   
</body>
  浮动前如图一,浮动后如图二,可以清楚发现,浮动后的父级高度塌陷,如果用chrome浏览器获取一下父级的高度就可以得出宽高为零,这显然不是我们要的效果,为了解决高度塌陷,我给出以下几种方法。


技术图片技术图片
1、给父级加一个高度,既然父级不能自然撑开,那么我们就手动给父级加一个高度,但这个方法显然不是很好,但是也可以解决父级高度塌陷的问题;
2、定义一个工具类,专门用于清除高度塌陷的伪元素选择器,把clearfix加在父类的class中,同样可以解决高度塌陷
  .clearfix::after{
          content: "";
          display: block;
          clear: both;
       }
3、overflow:hidden;通常情况下它是用来解决溢出问题的,这里它可以用来解决高度塌陷的问题,因为触发了bfc独立空间,简单来说就是里面元素无论如何变动都不会影响到父级。
成功后如下图,父级高度显现。
技术图片

以上是关于浮动造成的高度塌陷的主要内容,如果未能解决你的问题,请参考以下文章

float浮动造成高度塌陷的解决办法

父元素高度塌陷的解决办法

防止父级边框塌陷的四种方法

防止父级边框塌陷的四种方法

误区杂项

CSS 清除浮动