Ответ 1
-
Скрытое переполнение - довольно солидный метод. Основным недостатком является установка высоты родительского элемента, любое переполнение будет... ну, скрыто. Я нашел это при создании меню с плавающими элементами списка - подменю не появлялись.
-
Очищающий элемент - а не разрыв строки, я бы использовал div с
height: 0; clear: both;
, так как он не будет создавать пробел ниже. Это более надежный метод, единственным недостатком которого является дополнительный элемент разметки. -
Поплавьте родителя - по моему опыту слишком много ситуаций, когда вы не хотите плавать родительский элемент, поэтому я бы избегал этого.
-
Вы также можете использовать созданный метод контента:
#parent:after { content: "."; visibility: hidden; clear: both; }
Это избавляет от необходимости добавления дополнительного элемента в разметку, но он не будет работать в IE7 и ниже.
-
Используйте встроенные блоки - просто вспомнил этот метод. Вместо того, чтобы плавать два столбца, установите их в
display: inline-block
, и они будут отображаться бок о бок:.child { display: inline-block; vertical-align: top; }
Единственное, что вы должны запомнить с помощью этого метода, - это пробел между тегом закрытия одного блока и открывающим тегом другого, между столбцами будет отображаться пробел (размер которого зависит от шрифта, так что это сложно рассчитать). Пока вы выполняете
...</div><div id=...
, тогда этот метод работает отлично и превосходит плавающие элементы IMO.