好,咱们废话不多说,直接干货:
首先,什么是元素坍塌?很简单,一句话讲完:就是内部元素设置了浮动(float)导致外部父元素无法被撑开,从而就坍塌了。
不理解?直接上代码:
下面是样式:
.wai{border:10px solid red;}
.nei{width:300px;height:300px;float:left;border:4px solid #000000;}
如图就是这个效果:wai没有设置固定宽高,nei有固定宽高,并且有浮动,nei就浮动到wai上面,从电脑侧面看,nei在wai上面,所以nei无法撑开wai,wai就塌了;
怎么解决?下面我给出6个小技巧希望帮助到大家。
1,第一种方法:在父元素wai内部结束位置增加一个空的div,并清除浮动。
直接上代码:
下面是样式:
.wai{border:10px solid red;}
.nei{width:300px;height:300px;float:left;border:4px solid #000000;}
.xia{clear:both;}
如图,就是这个效果(父元素被撑开):
2,第二种方法:给父元素(wai)设置overflow:hidden属性来清除浮动。
代码如下:
下面是样式:
.wai{border:10px solid red;overflow:hidden;zoom:1;}
.nei{width:300px;height:300px;float:left;border:4px solid #000000;}
如图效果一样;(不过要注意的是如果nei 是margin负值定位或者绝对定位就会被裁剪)
3,第三种方法:给wai也设置浮动(float)。
代码如下:
下面是样式:
.wai{border:10px solid red;float:left;}
.nei{width:300px;height:300px;float:left;border:4px solid #000000;}
效果如下图:(不过此方法值的注意的是,虽然wai可以被撑开,但wai失去了自身的宽高,同时如果wai后面有别的元素,也会受到影响)
4,第四种方法:给wai设置固定高度(需要注意前提是知道nei 的宽高,wai的height=nei的height+2*border)
代码如下:
下面是样式:
.wai{border:10px solid red;height:308px;}
.nei{width:300px;height:300px;float:left;border:4px solid #000000;}
效果如下图:
5,第五种方法:给wai设置:display:inline-block/inline-flex/inline-table都可以实现,缺点是会失去自身的宽高。
代码如下:
下面是样式:
.wai{border:10px solid red;display:inline-block;}
.nei{width:300px;height:300px;float:left;border:4px solid #000000;}
效果如下:
6,第六种方法:给外(父元素)添加伪类:before/:after,来解决。(这种方法常用,并且不会影响页面布局,着力推荐,效果杠杠的!)
代码如下:
下面是样式:
.wai{border:10px solid red;zoom:1;}
.wai:after{
content:"";
display:block;/*添加内容以块元素显示,占满整个空间*/
height:0;/*避免添加内容占据高度影响布局*/
clear:both;
visibility:hidden;/*如果里面有内容隐藏掉内容*/
}
.nei{width:300px;height:300px;float:left;border:4px solid #000000;}
效果如下图:
这个方法原理上相当于第一种方法(在wai内添加一个空元素div,但却更加实用,更加强大)
以上的几个小技巧都是自己一点经验,希望可以帮助到大家,欢迎大家批评指正。么么哒~