CSS 之overflow:hidden 用来清除浮动

本文通过实例详细解析了CSS中浮动元素的行为,并澄清了overflow:hidden并非清除浮动,而是隐藏超出容器的部分,同时展示了如何影响页面布局。

在网上有很多关于用overflow:hidden来清除浮动的文章,这种说法是不对的。这里来更正一下,overflow:hidden清除不了浮动,其实它隐藏了浮动元素的一部分。

我们用一个例子来说明:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />    
    <title>Document</title>
  </head>
  <style>
 
	.wrap{
		outline:red 1px solid;
		width: 250px;
		height: 50px;
		
	
	}
	.item{
		width: 100px;
		height: 100px;
		outline: blue 1px solid;
	
		
	}

  </style>
  <body>
    <div class="wrap">
		<div class="item"></div>
		<div class="item"></div>
	</div>
	
    <script>
     
		
    </script>
  </body>
</html>

上面的代码没有设置浮动,效果如下图所示:

这个很好理解,三个div,这三个div都在文档流中。

现在我们设置蓝色边框div向左浮动。

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />    
    <title>Document</title>
  </head>
  <style>
 
	.wrap{
		outline:red 1px solid;
		width: 250px;
		height: 50px;
		
	
	}
	.item{
		width: 100px;
		height: 100px;
		outline: blue 1px solid;
		float: left		
	}

  </style>
  <body>
    <div class="wrap">
		<div class="item"></div>
		<div class="item"></div>
	</div>
	
    <script>
     
		
    </script>
  </body>
</html>

两个蓝色边框div都脱离了标准文档流 向左浮动。第一个蓝色边框div发现它上边的div没有脱离标准文档流,所以它紧邻显示。第二个蓝色边框div发现它上边的div是浮动的,所以它在这个浮动的div右边显示。效果如下:

我们看出浮动效果了。

我们再添加一个div:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />    
    <title>Document</title>
  </head>
  <style>
 
	.wrap{
		outline:red 1px solid;
		width: 250px;
		height: 50px;
	
	}
	.item{
		width: 100px;
		height: 100px;
		outline: blue 1px solid;
		float: left
		
	}
	.secWrap{
		outline:black 1px solid;
		width: 300px;
		height: 300px;
	
	}
  </style>
  <body>
    <div class="wrap">
		<div class="item"></div>
		<div class="item"></div>
	</div>
	<div class="secWrap"></div>
    <script>
     
		
    </script>
  </body>
</html>

我们新添加的div 没有设置浮动,所以它并没有脱离文档流,所以会挨着第一个div显示,效果如下:

我们看到新增加的黑色边框div在红色边框div下面紧挨着显示。其实这四个div,红色边框div和黑色边框div 没有脱离文档流,两个蓝色边框div已脱离文档流。

好了,那么我们给红色边框div增加一个overflow:hidden属性,看看什么效果。

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />    
    <title>Document</title>
  </head>
  <style>
 
	.wrap{
		outline:red 1px solid;
		width: 250px;
		height: 50px;
		overflow:hidden;
	}
	.item{
		width: 100px;
		height: 100px;
		outline: blue 1px solid;
		float: left
		
	}
	.secWrap{
		outline:black 1px solid;
		width: 300px;
		height: 300px;
	
	}
  </style>
  <body>
    <div class="wrap">
		<div class="item"></div>
		<div class="item"></div>
	</div>
	<div class="secWrap"></div>
    <script>
     
		
    </script>
  </body>
</html>

我们看到两个蓝色边框div缺少了一部分,被隐藏了,但并没有清除浮动,它们还是脱离文档流,浮动的。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值