为什么css属性值 clear:right不起作用详细探讨

编辑:网站建设公司  2021-07-03 09:08   来源:www.168986.cn


使用clear属性清除浮动是司空见惯的事情,对于clear属性的定义可能也烂熟于胸了。
例如,clear:left是清除左侧的浮动元素,实例代码如下:

复制代码
代码如下:

View Code
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="author" content="http://www.softwhy.com/" />
<title>蚂蚁部落</title>
<style type="text/css">
.first
{
width:100px;
height:100px;
border:1px solid red;
float:left;
}
.second
{
width:100px;
height:100px;
border:1px solid blue;
float:left;
}
.third
{
width:100px;
height:100px;
border:1px solid green;
float:left;
clear:left;
}
</style>
</head>
<body>
<div class="first"></div>
<div class="second"></div>
<div class="third"></div>
</body>
</html>

从以上代码可以看出,第三个div的clear:left属性的作用得到了体现,元素产生换行。但是使用clear:right属性的时候未必奏效了。实例代码如下:

复制代码
代码如下:

View Code
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="author" content="http://www.softwhy.com/" />
<title>蚂蚁部落</title>
<style type="text/css">
.first
{
width:100px;
height:100px;
border:1px solid red;
float:left;
}
.second
{
width:100px;
height:100px;
border:1px solid blue;
float:left;
clear:right;
}
.third
{
width:100px;
height:100px;
border:1px solid green;
float:left;
}
</style>
</head>
<body>
<div class="first"></div>
<div class="second"></div>
<div class="third"></div>
</body>
</html>

以上代码尽管第二个div有clear:right代码,但是它的右侧还是出现了浮动元素。这主要代码是顺序执行的,当执行到第二个div要清除右浮动的时候,第三个div并没有被加载,所以它的清除效果也就无效了,于是第三个div依然会紧跟着第二个div。