Одним из распространенных методов является класс clearfix
. Вместо того, чтобы нуждаться в посторонних элементах <div style="clear:both;">
(как вы это делали) после плавающего элемента, вы просто добавляете этот класс к самому плавающему элементу * , и макет автоматически очищается после него. 1
Мой любимый из http://perishablepress.com/press/2009/12/06/new-clearfix-hack. Он поддерживает современные браузеры, а также IE6 и IE7.
/* new clearfix */
.clearfix:after {
visibility: hidden;
display: block;
font-size: 0;
content: " ";
clear: both;
height: 0;
}
* html .clearfix { zoom: 1; } /* IE6 */
*:first-child+html .clearfix { zoom: 1; } /* IE7 */
Пример (старый / плохой):
<div class="floatingrightmenu">This floats right</div>
<div style="clear:both;"></div>
<p>This text is cleared below it.</p>
Пример (новый с clearfix
):
<div class="floatingrightmenu clearfix">This floats right</div>
<p>This text is cleared below it.</p>
1: Примечание: автоматическая очистка означает, что она лучше всего работает с одиночными плавающими элементами. Если вы хотите, чтобы несколько элементов плавали рядом друг с другом, поместите их все в один контейнер, который также всплывает, и примените clearfix
к этому контейнеру.