当不给父元素设置宽高时,父元素的宽高会被子元素的内容撑开。但是当子元素设置浮动属性后,子元素会溢出到父元素外,父元素的宽高也不会被撑开了,称之为“高度塌陷”。
<div class="container"> <div class="box_1 float">box 1</div> <div class="box_2 float">box 2</div> </div>
.container { border: 3px solid #8990d5; } .box_1 { height: 100px; width: 100px; text-align: center; background-color: #ffb5bf; } .box_2 { height: 100px; width: 100px; text-align: center; background-color: #94e8ff; } .float { float: left; }
解决办法:
1.给父元素设置 overflow
overflow: hidden;
为什么就能清除浮动呢?.container{
overflow: hidden;
zoom: 1; /* 兼容 ie6、ie7*/
}
2.使用 after 伪元素
:after 伪元素表示在元素之后添加内容。
该方法本质是在末尾添加一个看不见的块元素来清除浮动。这个方法不存在语义化的问题,是目前的主流清除浮动的方法。
.container::after { content: ''; clear: both; display: block; height: 0; visibility: hidden; } .container { border: 3px solid #ccc; zoom: 1; /* 兼容 ie6、ie7 */ }
如对本文有疑问, 点击进行留言回复!!
移动端适配布局(设备像素,独立像素和css像素的区别,以及自适应适配方案)
重定向方法sendRedirect()中的路径问题的初步了解
网友评论