float之后带来的坍塌的问题原因及如何解决

收藏
CSS/CSS3
14
Feb 7, 2018

资源添加浮动之后,父元素没有设定高度你的情况下,父元素的高度就没有了。

回答

云松回答

问题分析:

在父元素不设定高度的情况下,如果子元素都添加浮动属性,则子元素脱离文档流。在元素在没有脱离文档流的情况下,是可以把父元素的高度撑开。但是加了浮动,脱离了文档流,那么就不能撑开父元素,所以产生了高度塌陷问题。

解决办法:

方法一:通过定义class设定clear属性来清楚浮动,示例代码如下:

.clear:after {
content: ".";
display: block;
height: 0;
clear: both;
visibility: hidden;
}

 

方法二:让浮动元素后面紧跟一个用于清除浮动的空标签,代码如下:

<div class="father">
  <div class="fl">浮动元素</div>
  <div class="fl">浮动元素</div>
  <div class="clear"></div>
</div>
.clear{
  height:0px;
  clear:both;
  font-size:0px;
  line-height:0px;
  zoom: 1;
}

 

方法:overflow 方法

<div style="overflow: hidden;">
	<div class="fl"></div>
</div>

overflow 方法在父元素上设置 overflow 这个 css 属性。如果父元素的这个属性设置为 auto 或者 hidden,父元素就会扩展以包含浮动。
这个方法有着较好的语义性,因为他不需要额外元素。但是,如果需要增加一个新的 div 来使用这个方法,其实就和空 div 方法一样没有语义了。
而且要记住,overflow 属性不是为了清除浮动而定义的。要小心不要覆盖住内容或者触发了不需要的滚动条。

 

(0)

提交成功