overflow:hidden是overflow属性的一个神奇用法,它可以帮助我们隐藏溢出的元素,清除浮动和解除坍塌。
CSS样式:
1 .container{ 2 background-color: black; 3 } 4 5 .div1{ 6 background-color: aqua; 7 width: 100px; 8 height: 100px; 9 } 10 .div2{ 11 background-color: red; 12 width: 100px; 13 height: 100px; 14 }
html内容:
1 <div class="container"> 2 <div class="div1"></div> 3 <div class="div2"></div> 4 </div>
A.父级固定高度,使用overflow:hidden隐藏溢出
当父div拥有固定的高度时,比如height:500px,我们使用overflow:hidden来隐藏溢出。
溢出定义:
当使用div+css布局时,会出现很多的div嵌套——父div内嵌套一个或多个的子div,默认情况下,父div的高度是auto——它可以被子div任意的撑大。
然而父div也可以有固定的高度(或宽度),比如height:500px,那么如果子div的高度超过了这个值,在默认情况下,子div会超出父div的束缚,这就是溢出。
B.父级高height:auto时,使用overflow:hidden清除浮动
当父元素的高height:auto时,我们使用overflow:hidden清除浮动.
.container{ background-color: black; overflow:hidden;}
总结:
(方案一和方案二)一个使用了都浮动的战略,一个使用了清除浮动的战略使父div宽容的接受了子div,两者的区别在于都浮动需要额外设定父div的宽度,因为浮动起来的div失去了div独占一行的特性,而清除浮动的父div仍然霸道。
C.解除坍塌
但实际上是这样的(这是开发人员工具下的效果):
解决父子DIV中顶部margin cllapse的问题,需要给父div设置:
(1)添加边框,当然可以设置边框为透明;
(2)为父DIV添加padding,或者至少添加padding-top;
此外,还可以通过为父div添加overflow:hidden解决这个问题:
.container{ background-color: black; overflow: hidden; }
经验:
overflow:hidden的用法在溢出和清除浮动上主要针对父div是否有固定的高度加以区分。它还额外肩负了解除坍塌的重任。