CSS中clear“清除浮动”的作用原理

CSS中clear“清除浮动”的作用原理

之前看视频中,总听到说clear不是清除浮动,而是消除浮动带来的影响,纠结了一天,没有理解,现在终于能明白这是什么意思了。
下面直接用代码和运行结果说明

HTML代码和CSS代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>float</title>
    <link href="float.css" rel="stylesheet" type="text/css">
</head>
<body>
<div class="main">
   <div class="box1">1</div>
    <div class="box2">2</div>
    <div class="clear">clear</div>
</div>
<div class="box3">3</div>
</body>
</html>

.box1{
    width: 200px;
    height: 300px;
    background-color: chocolate;
    /*float: left;*/
    /*margin: 20px;*/

}
.box2{
    width: 200px;
    height: 200px;
    background-color: cornflowerblue;
    float: left;
}
.clear{
    /*float: left;*/
    /*clear: left;*/
    width: 200px;
    height: 300px;
    background-color: darkseagreen;
    float: right;
    /*clear:left;*/
}
.box3{

    height: 200px;
    background-color: cyan;
}

以上代码的运行结果如图1:

运行结果说明:

  • 由于2(蓝色)设置了向左浮动:float:left,会“脱标”,在文档流中不再占有位置;
  • 3(青色)会忽视2而直接紧跟着1;
  • clear(绿色)设置了向右浮动:float:right;
  • 如果2没有设置向左浮动,则3会紧跟着2下面往下排列,而clear由于设置了向右浮动,和3的相对位置仍然如图,即会随着3一起往下移动一个2的高度,代码(html和之前是一样的,不再展示)和效果如下:

.box1{
    width: 200px;
    height: 300px;
    background-color: chocolate;
    /*float: left;*/
    /*margin: 20px;*/

}
.box2{
    width: 200px;
    height: 200px;
    background-color: cornflowerblue;
    /*!*float: left;*!取消2的向左浮动*/
}
.clear{
    /*float: left;*/
    /*clear: left;*/
    width: 200px;
    height: 300px;
    background-color: darkseagreen;
    float: right;
    /*clear:left;*/
}
.box3{

    height: 200px;
    background-color: cyan;
}

效果如图2(绿色还有一部分高度没有展示出来)
由于2设置在这里插入图片描述
由于2设置浮动,则对3和clear产生了影响,使得他们的位置如图1所示,而不是如图2,现在如果想消除这种浮动对cleard的影响,则在clear中添加clear:left或者clear:both即可,因为2中设置的是左浮动,故消除这种浮动是clear:left或者clear:both(包含了left)即消除2的左浮动对clear的影响,代码和效果如下:


.box1{
    width: 200px;
    height: 300px;
    background-color: chocolate;
    /*float: left;*/
    /*margin: 20px;*/

}
.box2{
    width: 200px;
    height: 200px;
    background-color: cornflowerblue;
    float: left;
}
.clear{
    /*float: left;*/
    /*clear: left;*/
    width: 200px;
    height: 300px;
    background-color: darkseagreen;
    float: right;
    clear:left;/*清除左浮动*/
}
.box3{

    height: 200px;
    background-color: cyan;
}

效果如下图3
在这里插入图片描述
clear跑到了2的下面,如图2中的位置一样,好像2没有设置浮动一样,但是由于2的浮动对3的影响并没有消除,故3的位置仍如图1所示,2是浮在3的上面


版权声明:本文为weixin_45997184原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。