美文网首页
清理浮动 解决浮动父容器高度塌陷问题

清理浮动 解决浮动父容器高度塌陷问题

作者: 王翔爱摇滚乐爱电影爱心理学爱哲 | 来源:发表于2017-08-02 15:08 被阅读0次

方案1

 /*方法1*/
  .clearfix{
      *zoom:1;
  }
  .clearfix:after{
      content:"";
      display:block;
      clear:left;
  }

方案2

 /*方法2*/
  .clearfix{
    *zoom:1;
  }
  .clearfix:after{
    content:"";
      display:table;
      clear:both;
  }

分隔符分隔符分隔符分隔符分隔符分隔符分隔符分隔符分隔符分隔符分隔符分隔符分隔符分隔符

都向左浮动,父元素高度为0

  <div style="border: solid 5px #0e0; width:300px;">
      <div style="height: 100px; width: 100px; background-color: Red;  float:left;">
      </div>
      <div style="height: 100px; width: 100px; background-color: Green;  float:left;">
      </div>
      <div style="height: 100px; width: 100px; background-color: Yellow;  float:left;">
      </div>
  </div>
Paste_Image.png

如果我们想让父元素在视觉上包围浮动元素可以像下面这样处理,在最后添加一个空div,对它清理。缺点是增加了一个无意义的标签

<div style="border: solid 5px #0e0; width:300px;">
      <div style="height: 100px; width: 100px; background-color: Red;  float:left;">
      </div>
      <div style="height: 100px; width: 100px; background-color: Green;  float:left;">
      </div>
      <div style="height: 100px; width: 100px; background-color: Yellow;  float:left;">
      </div>
      <!-- 无意义标签 -->
      <div style="clear:both;"></div>
  </div>

BFC清理浮动

BFC的全称是 Block Format Content

BFC 特性

BFC会阻止垂直外边距(margin-top、margin-bottom)折叠

按照BFC的定义,只有同属于一个BFC时,两个元素才有可能发生垂直Margin的重叠,这个包括相邻元素,嵌套元素,只要他们之间没有阻挡(例如边框,非空内容,padding等)就会发生margin重叠。

因此要解决margin重叠问题,只要让它们不在同一个BFC就行了,但是对于两个相邻元素来说,意义不大,没有必要给它们加个外壳,但是对于嵌套元素来说就很有必要了,只要把父元素设为BFC就可以了。这样子元素的margin就不会和父元素的margin发生重叠

BFC不会重叠浮动元素

BFC可以包含浮动

我们可以利用BFC的第三条特性来“清浮动”,这里其实说清浮动已经不再合适,应该说包含浮动。也就是说只要父容器形成BFC就可以,简单看看如何形成BFC。

float为 left|right
overflow为 hidden|auto|scroll
display为 table-cell|table-caption|inline-block
position为 absolute|fixed

局限性

使用BFC使用float的时候会使父容器长度缩短,而且还有个重要缺陷——父容器float解决了其塌陷问题,那么父容器的父容器怎么办?overflow属性会影响滚动条和绝对定位的元素;position会改变元素的定位方式,这是我们不希望的,display这几种方式依然没有解决低版本IE问题。。。

hasLayout

IE6、7内有个hasLayout的概念,当元素的hasLayout属性值为true的时候会达到和BFC类似的效果,元素负责本身及其子元素的尺寸设置和定位。 下面使元素hasLayout为true

position: absolute
float: left|right
display: inline-block
width: 除 “auto” 外的任意值
height: 除 “auto” 外的任意值
zoom: 除 “normal” 外的任意值
writing-mode: tb-rl
在IE7中使用overflow: hidden|scroll|auto 也可以使hasLayout为true

两种方案

虽然我们得出了一种浏览器兼容的靠谱解决方案,但这并不代表我们一定得用这种方式,很多时候我们的父容器本身需要position:absolute等形成了BFC的时候我们可以直接利用这些属性了,大家要掌握原理,活学活用。总而言之清理浮动两种方式

1、利用 clear属性,清除浮动

2、使父容器形成BFC

相关文章

  • 清理浮动 解决浮动父容器高度塌陷问题

    方案1 方案2 分隔符分隔符分隔符分隔符分隔符分隔符分隔符分隔符分隔符分隔符分隔符分隔符分隔符分隔符 都向左浮动,...

  • 浮动导致的父容器高度塌陷

    浮动导致的父容器高度塌陷是指由于浮动元素脱离文档流,页面渲染时无法计算上浮动元素的高度,导致父元素的高度没有被撑开...

  • 高度塌陷

    高度塌陷问题:子元素浮动父元素的高度没了,就会造成高度塌陷,可以开启bfc来解决这个问题,bfc有三种特性 1.父...

  • Float布局

    .clearfix .浮动会造成父容器高度坍塌,因此要清理浮动。将.clearfix类应用到需要清除浮动的父元素;...

  • 解决高度塌陷2

    为什么出现高度塌陷?当我们设置块级元素进行浮动的时候,会导致父元素塌陷,所以需要我们解决高度塌陷问题

  • 高度塌陷、清除浮动、元素垂直居中

    高度塌陷: 定义:父元素没有设置高度,子元素设置了浮动(float)属性解决办法:清除浮动(仅清除浮动的负面影响,...

  • 前端07day

    高度塌陷: 块元素默认父亲宽,高度由内容撑开父元素高度由子元素撑开浮动后塌陷 解决高度塌陷: BFC 1.父元素的...

  • 塌陷,导航,定位

    高度塌陷 块元素默认父亲宽,高度由内容撑开父元素高度由子元素撑开浮动后塌陷解决高度塌陷:BFC 1.父元素的垂直...

  • 前端零碎知识集锦

    float元素 浮动会让元素塌陷。即被浮动元素的父元素不具有高度。例如一个父元素包含了浮动元素,它将塌陷具有零高度...

  • 浮动 float

    浮动定位 规则 浮动的问题 清理浮动的方法 设置父元素高度扩展性不好 让父元素浮动可能导致页面中的所有元素都浮动父...

网友评论

      本文标题:清理浮动 解决浮动父容器高度塌陷问题

      本文链接:https://www.haomeiwen.com/subject/llzelxtx.html