В целом я знаю 3 адекватных и кроссбраузерных варианта очистки. В каждом из них есть свои недостатки и приемущества …
Вариант первый.
В целом, его знают практически все, кто хоть как-то мыслит в верстке. Здесь будем оперировать свойством «clear: both;», но для того, чтобы этот вариант был более универсален и стрессоустойчив, добавим туда немного ресета:
Для экономии рабочей области экрана и байтов, стоит написать это определение стиля в одну строчку.
.cl {
clear: both !important;
border: none !important;
overflow: hidden !important;
display: block !important;
height: 0 !important;
line-height: 0 !important;
font-size: 0 !important;
float: none !important;
margin: 0 !important;
padding: 0 !important;
background: transparent !important;
}
Вариант второй. «Родительский»
Присваиваем класс «cf» блоку, который обарачивает элменты со свойством «float: left|right;» и наслаждаемся результатом.
Удобный, простой, плюс при помощи этой очистки не будем засорять DOM-дерево лишними элементами, НО свойство «height: 1%;», определенное для ие6 может подвести в том случае, если у родительского элемента задана высота.
.cf:after {
clear: both;
display: block;
content: ".";
height: 0px;
visibility: hidden;
font-size: 0;
line-height: 0;
}
.cf {
display: inline-block;
}
* html .cf {
height: 1%;
}
.cf {
display: block;
}
li.cf {
display: list-item;
}
Вариант третий (последний). Опять «Родительский»
Совсем недавно, вчера, можно сказать, начал верстать очередной дизайн и открыл (возможно только для себя) еще один вариант очистки для элментов со свойством «float: left|right;».
Для данного варианта очистки нам следует обернуть элементы с обтеканием в блок, со следующими свойствами:
overflow: hidden;
zoom: 1;
И тут мы тоже можем заметить одно ограничивающее обстоятельство — все, что будет каким-либо образом выходить за пределы этого блока будет скрываться и обрезаться.