我总是对CSS中的clear: left
,clear: right
和clear: both
感到困惑。我知道clear: both
意味着它不允许自身两侧浮动元素。
我做了一些测试here。我认为布局如下所示,因为B
使用clear: both
。但事实并非如此。有人可以告诉我为什么吗?
一个
乙
CD
更新 (发布代码)
<div class="container">
<div class="A">a</div>
<div class="B">b</div>
<div class="C">c</div>
<div class="D">d</div>
<div class="CB"></div>
</div>
.container{
width:100%;
border:1px solid red;
}
.B{
float:left;
clear:both;
width:10%;
height:30px;
border:1px solid blue;
}
.A,.C,.D{
float:left;
width:10%;
height:30px;
border:1px solid blue;
}
.CB{
clear:both;
}
答案 0 :(得分:30)
clear
仅按文档顺序清除之前的浮动。它之后不会清除浮动。 left
和right
值分别表示元素前面的左浮点数和右浮点数的清除率。它们并不意味着在元素之前和之后清除浮动。
由于C正在浮动,但没有应用任何间隙,它会漂浮在B旁边.B不会尝试清除C,因为C在文档结构中出现。
此外,clear: right
对您的测试用例没有任何影响,因为无论如何都没有任何元素浮动到右侧。
答案 1 :(得分:0)
如果你使用的话,你可以清楚地使用div:
.clr::after
{
content: "";
clear: both;
display: block;
height: 0;
visibility: hidden;
}