overflow:hidden是overflow属性的一个神奇用法,它可以帮助我们隐藏溢出的元素,清除浮动和解除坍塌。

CSS样式:

 .container{
background-color: black;
} .div1{
background-color: aqua;
width: 100px;
height: 100px;
}
.div2{
background-color: red;
width: 100px;
height: 100px;
}

html内容:

 <div class="container">
<div class="div1"></div>
<div class="div2"></div>
</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清除浮动.

当我们为div1和div2加上一个属性:float:left后,我们会发现:背景色为黑色父div消失了,这是因为: 浮动的元素脱离文档元素 不占据空间不浮动的元素会直接无视掉这个元素父div无视了自己的两个孩子,其高度为0(因为我们没有设置父div的高度),所以父div没有显现。
想让父div“宽容的”接受自己的两个孩子有两个办法:
 
方案一: 第一个就是让父亲也浮动起来,我们试着给父div添加一个CSS属性:float:right,会发现两个颜色块出现在了屏幕的右边,依然没有父div的身影,然而通过开发人员工具不难看出父div已经包容子div。
 
这是因为浮动父级的div已经失去了其“独霸一行”的能力,我们需要手动为父div设置一个宽度,比如width:500px,之后可以看到:
 
方案二: 为父亲添加overflow:hidden属性用以清除浮动
.container{ background-color: black; overflow:hidden;}

总结:

(方案一和方案二)一个使用了都浮动的战略,一个使用了清除浮动的战略使父div宽容的接受了子div,两者的区别在于都浮动需要额外设定父div的宽度,因为浮动起来的div失去了div独占一行的特性,而清除浮动的父div仍然霸道。

C.解除坍塌

我们为div1添加一个属性:margin-top:50px,我们想象中效果是这样的:

但实际上是这样的(这是开发人员工具下的效果):

CSS中存在一个margin collapse,即边界塌陷或者说边界重叠。对于上下两个并列的div块而言,上面div的margin-bottom下面div的margin-top会塌陷,也就是会取上下两者margin里最大值作为显示值
所以从这个意义上说:CSS及浏览器的设计者们希望我们在布局时,如果遇到上下两个并排内容块的安排,最好只设置其中每个块上或下margin的一处即可。
 
但对于父块DIV内含子块DIV的情况,就会按另一条CSS惯例来解释了,那就是:对于有块级子元素的元素(父元素)计算高度的方式,如果父级元素元素没有上下边框和填充,那其高度就是第一个子元素顶部和底部边框边缘之间的距离。
 

解决父子DIV中顶部margin cllapse的问题,需要给父div设置:

(1)添加边框,当然可以设置边框为透明;

(2)为父DIV添加padding,或者至少添加padding-top;

此外,还可以通过为父div添加overflow:hidden解决这个问题:

.container{
background-color: black;
overflow: hidden;
}

 


经验:

overflow:hidden的用法在溢出和清除浮动上主要针对父div是否有固定的高度加以区分。它还额外肩负了解除坍塌的重任。

 

最新文章

  1. JAVA起名规范
  2. Mac OSX下卸载Nodejs
  3. SOLID面向对象的五个设计原则,留空待学习。
  4. Strust的基础情况
  5. 《剑指offer-名企面试官精讲典型编程题》读后感
  6. sort() 方法用于对数组的元素进行排序
  7. 5步解决移动设备上的300ms点击延迟
  8. JAVA 文件编译执行与虚拟机(JVM)简单介绍
  9. Jenkins 不同角色不同视图及不同权限设置
  10. php中一些容易混淆的函数总结
  11. jquery添加属性使用attr、prop。
  12. 201771010134杨其菊《面向对象程序设计java》第七周学习总结
  13. python 全栈开发,Day29(昨日作业讲解,模块搜索路径,编译python文件,包以及包的import和from,软件开发规范)
  14. jax-rs示例
  15. MySql权威指南
  16. iOS - 抖音效果
  17. Windows AD域管理软件
  18. plupload如何删除一条数据
  19. TeamTalk 5
  20. mysql悲观锁以及乐观锁总结和实践

热门文章

  1. jquery 1.9版本下复选框 全选/取消实现
  2. wxss--外联样式与内联样式
  3. python爬虫需要掌握哪些知识点
  4. OpenResty高性能web平台
  5. Android中的成员变量与局部变量
  6. PHPstudy 修改数据库上传大小
  7. 问题_001_Vivian
  8. 【JUC】CountDownLatch和Java枚举的使用例子
  9. Rocket - debug - TLDebugModuleInnerAsync
  10. jchdl - RTL