Согласно спецификации HTML5, элемент hr
представляет тематический разрыв на уровне абзаца (изменение сцены в истории или переход к другой теме в разделе справочника), в то время как элемент div
универсальный контейнер для содержимого потока, который сам по себе ничего не представляет. Поэтому я не вижу оправдания для выбора одного над другим для размещения поплавков.
Однако, есть кое-что, что вы должны иметь в виду. Прочитайте следующий отрывок из статьи Эрика Мейера Содержит поплавки :
div.item {border: 1px solid; padding: 5px;}
div.item img {float: left; margin: 5px;}
div.item hr {display: block; clear: left; margin: -0.66em 0;
visibility: hidden;}
Отрицательные поля сверху и снизу
иметь общий эффект закрытия
пространство, которое занимает час.
Тем не менее, этот эффект не является точным,
и не обязательно идентичны по всему
браузеры. Полу таинственная природа
горизонтальных правил затрудняет
точно предсказать, что произойдет.
Эффективная высота часов может
быть ноль или небольшая положительная сумма,
или даже отрицательная высота
Поэтому в ситуациях, когда
нужен точный очищающий эффект,
авторы могут использовать div вместо hr
создать очищающий эффект.
Если это не имело для вас смысла, посмотрите на эту скрипку и обратите внимание на пространство под плавающим div
(IE8).
Тем не менее, есть и другие способы сдержать поплавки и избежать одновременного использования структурных хаков:
- Перемещение контейнера: может вызвать проблемы с компоновкой.
- Использование
.container { overflow: auto; }
: если содержимое превышает границы контейнера, вы увидите полосу прокрутки.
- Использование
.container { overflow: hidden; }
: если содержимое выходит за границы контейнера, оно будет скрыто.
- Clearfix : Используется при сбое 2 и 3.