详解overflow:hidden的作用(溢出隐藏、清除浮动、解决外边距塌陷)

⼀. overflow:hidden 溢出隐藏

给⼀个元素设置overflow: hidden,如果该元素中的内容超出了给定的宽度或⾼度,那么超出的部分将会被隐藏,不占位。

<style type="text/css">
	div {
		width: 150px;
		height: 60px;
		background: skyblue;
		overflow: hidden;  /*溢出隐藏*/
	}
</style>
<div>
	今天天⽓很好!<br />
	今天天⽓很好!<br />
	今天天⽓很好!<br />
	今天天⽓很好!<br />
</div>

效果如下:
在这里插入图片描述

⼆. overflow:hidden 清除浮动(页面塌陷)

⼀般⽽⾔,⽗级元素不设置⾼度时,⾼度随内容增加⾃适应⾼度。当⽗级元素内部的⼦元素全部都设置浮动float之后,⼦元素会脱离标准流,不占位,⽗级元素检测不到⼦元素的⾼度,⽗级元素⾼度为0。那么问题来了,如下:

<style type="text/css">
	.box{
		background:skyblue;
	}
	.kid{
		width: 100px;
		height: 100px;
		float:left;
	}
	.kid1{
		background: yellow;
	}
	.kid2{
		background: orange;
	}
	.wrap{
		width: 300px;
		height: 150px;
		background: blue;
		color: white;
	}
</style>
<body>
	<div class="box">
		<div class="kid kid1">⼦元素1</div>
		<div class="kid kid2">⼦元素2</div>
	</div>
	<div class="wrap">其他部分</div>
</body>

在这里插入图片描述
如上,由于⽗级元素没有⾼度,下⾯的元素会顶上去,造成页⾯的塌陷。因此,需要给⽗级加个overflow:hidden属性,这样⽗级的⾼度就随⼦级容器及⼦级内容的⾼度⽽⾃适应。如下:

由于在IE⽐较低版本的浏览器中使⽤overflow:hidden;是不能达到这样的效果,因此需要加上 zoom:1;
所以为了让兼容性更好的话,如果需要使⽤overflow:hidden来清除浮动,那么最好加上zoom:1;

<style type="text/css">
	.box{
		background:skyblue;
		overflow: hidden;  /*清除浮动*/
		zoom:1;
	}
	.kid{
		width: 100px;
		height: 100px;
		float:left;
	}
	.kid1{
		background: yellow;
	}
	.kid2{
		background: orange;
	}
	.wrap{
		width: 300px;
		height: 150px;
		background: blue;
		color: white;
	}
</style>
<body>
	<div class="box">
		<div class="kid kid1">⼦元素1</div>
		<div class="kid kid2">⼦元素2</div>
	</div>
	<div class="wrap">其他部分</div>
</body>

在这里插入图片描述

三. overflow:hidden 解决外边距塌陷

⽗级元素内部有⼦元素,如果给⼦元素添加margin-top样式,那么⽗级元素也会跟着下来,造成外边距塌陷,如下:

<style type="text/css">
	.box{
		background:skyblue;
	}
	.kid{
		width: 100px;
		height: 100px;
		background: yellow;
		margin-top: 20px;
	}
</style>
<body>
	<div class="box">
		<div class="kid">⼦元素1</div>
	</div>
</body>

在这里插入图片描述

因此,给⽗级元素添加overflow: hidden,就可以解决这个问题了。

<style type="text/css">
	.box{
		background:skyblue;
		overflow: hidden; /*解决外边距塌陷*/   
	}
	.kid{
		width: 100px;
		height: 100px;
		background: yellow;
		margin-top: 20px;
	}
</style>
<body>
	<div class="box">
		<div class="kid">⼦元素1</div>
	</div>
</body>

在这里插入图片描述

  • 5
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值