css之clear 清除浮动

本文深入探讨CSS中clear属性的使用,通过多个实例解析如何清除浮动的影响,包括left、right和both的情况,帮助理解浮动元素如何影响文档流并展示不同清除方式的效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

哈哈哈哈哈哈哈,我懂了原理啦

clear清除的是浮动的高度(就是跑到位置),而不影响浮动的方向.

原理如下:

clear清除的是元素本身,但不会影响方向。通俗点说就是clear清除的是浮动产生的文档流。举个例子,就是有2个div,当第二个div产生浮动时,第二个div会脱离第二行,到达第一行。当你清除它的时候,清除的就是这个跑的距离。

浮动的特性导致了与想象中的不一样。这特性指脱离文档流和上前补位。只要前面一个元素浮动了,空出了位置,后面一个元素就会跟着往前跑。直到把位置占领了为止。这里比较特殊的一点是,浮动有两个方向,左浮动和右浮动。而脱离文档流的div元素却并不怎么管这件事,他们的逻辑是只要有位置我就可以占领,直到没有位置为止。举个例子,有3个div,第一个div左浮动,此时,第二个div和第三个div会同时往上跑,第二个div就看不见了。但当第二个div也产生了浮动还是向右浮动时,第二个div就会在右边,能被看见,这时第三个div在第一个div下面看不见。当第三个div也向左浮动时,第三个div就会在第一个div的后面,被看见,此时他们成为一行。假设此页面现在一行一共只能容纳5个div,那么在给他一个向左浮动的div,这一行能放下,在给一个div则放不下了,此时这个div会在第一个div下面重新进行顺序排列。

clear

情况如下

两个div

第一:两个div

1.代码如下

<!DOCTYPE html>

<html lang="en">

<head>

<style>

div{

width:100px;

height:100px;

}

#d1{

background: rebeccapurple;

}

#d2{

background: plum;

}

</style>

</head>

<body>

<div id="d1"></div>

<div id="d2"></div>

</body>

效果图如下

</html>

第一 1.两个div左浮动

代码如下

<!DOCTYPE html>

<html lang="en">

<head>

<style>

div{

width:100px;

height:100px;

float: left;

}

#d1{

background: rebeccapurple;

}

#d2{

background: plum;

}

</style>

</head>

<body>

<div id="d1"></div>

<div id="d2"></div>

</body>

效果如下

第一 2.两个div左浮动 第一个div深紫色清除左浮动

代码如下

<!DOCTYPE html>

<html lang="en">

<head>

<style>

div{

width:100px;

height:100px;

float: left;

}

#d1{

background: rebeccapurple;

clear: left;

}

#d2{

background: plum;

}

</style>

</head>

<body>

<div id="d1"></div>

<div id="d2"></div>

</body>

</html>

效果如下

原理如下:第一个深紫色div清除浮动,消除了脱离的文档流,但第一个文档流比较特殊,无法肉眼看见。因为清除并不影响它的方向,div的方向由浮动决定,所以此div还是在左。第二个div所占据的位置本来就是第一div剩下来的,现在第一个div跑回来了,第二个div也只能让位,反正无论如何,第二个div都活着第一个div的阴影下,向左浮动则救助了它,让他活成了自已

第一 3.两个div左浮动 第一个div深紫色清除右浮动

代码如下

<!DOCTYPE html>

<html lang="en">

<head>

<style>

div{

width:100px;

height:100px;

float: left;

}

#d1{

background: rebeccapurple;

clear: right;

}

#d2{

background: plum;

}

</style>

</head>

<body>

<div id="d1"></div>

<div id="d2"></div>

</body>

</html>

效果如下

第一 4.两个div左浮动 第二个div浅紫色清除左浮动

代码如下

<!DOCTYPE html>

<html lang="en">

<head>

<style>

div{

width:100px;

height:100px;

float: left;

}

#d1{

background: rebeccapurple;

}

#d2{

background: plum;

clear: left;

}

</style>

</head>

<body>

<div id="d1"></div>

<div id="d2"></div>

</body>

</html>

效果图如下

第一 5.两个div左浮动 第二个div 浅紫色清除右浮动

代码如下

<!DOCTYPE html>

<html lang="en">

<head>

<style>

div{

width:100px;

height:100px;

float: left;

}

#d1{

background: rebeccapurple;

}

#d2{

background: plum;

clear: right;

}

</style>

</head>

<body>

<div id="d1"></div>

<div id="d2"></div>

</body>

</html>

效果图如下

第一 6.两个div左浮动,第一个div深紫色都清除

代码如下

<!DOCTYPE html>

<html lang="en">

<head>

<style>

div{

width:100px;

height:100px;

float: left;

}

#d1{

background: rebeccapurple;

clear: both;

}

#d2{

background: plum;

}

</style>

</head>

<body>

<div id="d1"></div>

<div id="d2"></div>

</body>

</html>

效果图如下

第一 7.两个div左浮动 第二个div浅紫色都清除

<!DOCTYPE html>

<html lang="en">

<head>

<style>

div{

width:100px;

height:100px;

float: left;

}

#d1{

background: rebeccapurple;

}

#d2{

background: plum;

clear: both;

}

</style>

</head>

<body>

<div id="d1"></div>

<div id="d2"></div>

</body>

</html>

效果图如下

第一  第一个div左浮动,第二个div右浮动

代码如下

<html lang="en">

<head>

<style>

div{

width: 100px;

height:100px;

}

#d1{

background: red;

float:left;

}

#d2{

background: green;

float: right;

}

</style>

</head>

<body>

<div id="d1"></div>

<div id="d2"></div>

</body>

</html>

效果图如下

考虑到第一个div比较特殊,于是那第二个和第三个再次实验进行对比

第二.3个div

代码如下

<!DOCTYPE html>

<html lang="en">

<head>

<style>

div{

width: 100px;

height:100px;

}

#d1{

background: red;

}

#d2{

background: green;

}

#d3{

background: gold;

}

</style>

</head>

<body>

<div id="#d1"></div>

<div id="#d2"></div>

<div id="#d3"></div>

</body>

</html>

效果图如下

第二  1.三个div 给第二个和第三个div进行float

代码如下

<!DOCTYPE html>

<html lang="en">

<head>

<style>

div{

width: 100px;

height:100px;

}

#d1{

background: red;

}

#d2{

background: green;

float: left;

}

#d3{

background: gold;

float: left;

}

</style>

</head>

<body>

<div id="d1"></div>

<div id="d2"></div>

<div id="d3"></div>

</body>

</html>

效果图如下

第二  2.三个div 第三个元素清除左浮动-------这样考虑 是因为 元素清除浮动只能影响本身

代码如下

<!DOCTYPE html>

<html lang="en">

<head>

<style>

div{

width: 100px;

height:100px;

}

#d1{

background: red;

}

#d2{

background: green;

float: left;

}

#d3{

background: gold;

float: left;

clear:left;

}

</style>

</head>

<body>

<div id="d1"></div>

<div id="d2"></div>

<div id="d3"></div>

</body>

</html>

效果图如下

第三 三个div都加了左浮动

代码如下

<!DOCTYPE html>

<html lang="en">

<head>

<style>

div{

width: 100px;

height:100px;

}

#d1{

background: red;

float:left;

}

#d2{

background: green;

float: left;

}

#d3{

background: gold;

float: left;

}

</style>

</head>

<body>

<div id="d1"></div>

<div id="d2"></div>

<div id="d3"></div>

</body>

</html>

效果图如下

第三 1.三个div都加了左浮动  第二个元素清除左浮动

代码如下

<!DOCTYPE html>

<html lang="en">

<head>

<style>

div{

width: 100px;

height:100px;

}

#d1{

background: red;

float:left;

}

#d2{

background: green;

float: left;

clear: left;

}

#d3{

background: gold;

float: left;

}

</style>

</head>

<body>

<div id="d1"></div>

<div id="d2"></div>

<div id="d3"></div>

</body>

</html>

效果图如下

第三 2.三个div都加了左浮动 第二个元素清除右浮动

代码如下

<!DOCTYPE html>

<html lang="en">

<head>

<style>

div{

width: 100px;

height:100px;

}

#d1{

background: red;

float:left;

}

#d2{

background: green;

float: left;

clear: right;

}

#d3{

background: gold;

float: left;

}

</style>

</head>

<body>

<div id="d1"></div>

<div id="d2"></div>

<div id="d3"></div>

</body>

</html>

效果图如下

第四 这三个div第一个元素和第三个元素左浮动,第二个元素右浮动

代码如下

<!DOCTYPE html>

<html lang="en">

<head>

<style>

div{

width: 100px;

height:100px;

}

#d1{

background: red;

float:left;

}

#d2{

background: green;

float: right;

}

#d3{

background: gold;

float: left;

}

</style>

</head>

<body>

<div id="d1"></div>

<div id="d2"></div>

<div id="d3"></div>

</body>

</html>

效果图如下

第四 1.这三个div 第一个和第三个左浮动,第二个绿色右浮动 清除第二个右浮动

代码如下

<!DOCTYPE html>

<html lang="en">

<head>

<style>

div{

width: 100px;

height:100px;

}

#d1{

background: red;

float:left;

}

#d2{

background: green;

float: right;

clear: right;

}

#d3{

background: gold;

float: left;

}

</style>

</head>

<body>

<div id="d1"></div>

<div id="d2"></div>

<div id="d3"></div>

</body>

</html>

效果图如下:

第四 2.这三个div 第一个和第三个左浮动,第二个绿色右浮动 清除第二个左浮动

代码如下

<!DOCTYPE html>

<html lang="en">

<head>

<style>

div{

width: 100px;

height:100px;

}

#d1{

background: red;

float:left;

}

#d2{

background: green;

float:right;

clear:left;

}

#d3{

background: gold;

float: left;

}

</style>

</head>

<body>

<div id="d1"></div>

<div id="d2"></div>

<div id="d3"></div>

</body>

</html>

效果图如下

特别例子清除

我希望的效果是清除第4个div的浮动,让他位于前面三个div的下方。

clear:both和clear:left都实现了这个效果。

但是clear:right没有实现这个效果。

个人猜测是因为第四个元素的浮动方向是左侧,所以清除右侧的浮动无效,而clerr:both是两个方向的浮动都清除,所以才有效。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style>
		  .one,.two,.c{
			  width:100px;
			  height:30px;
			  border:1px solid aquamarine;
			  float:left;
		  }
		  .d{
			  width:400px;
			  height:30px;
			  border:1px solid darkgoldenrod;
			  clear:right;
		  }
		</style>
		</head>
	  <body>
		  <div class="one"></div>
		  <div class="two"></div>
		  <div class="c"></div>
		  <div class="d"></div>
	  </body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值