Когда мы используем float: left, проблема в том, что, когда для следующего элемента достаточно места, он будет располагаться рядом с плавающим элементом, чтобы избежать использования clear: оба
например:
<style>
#wrapper{
width:500px;
}
#one{
width:100px;
float:left;
}
#two{
width:100px;
float:left;
}
#three{
width:100px;
}
.clearfix{
clear:both;
}
</style>
<div id="wrapper">
<div id="one"></div>
<div id="two"></div>
<div id="three"></div>
</div>
В приведенной выше ситуации всего 500px места из этого, два div заняли 200px пространства, остальное 300px и dv three - всего 100 px.Таким образом, разделение на три будет идти рядом с разделением на два, так как места достаточно.Чтобы избежать этого, просто поставьте div с clear: оба после div два
<div id="wrapper">
<div id="one"></div>
<div id="two"></div>
<div class="clearfix"></div>
<div id="three"></div>
</div>