В 3-х словах: inline-block
лучше.
Встроенный блок
Единственным недостатком этого display: inline-block
подхода является то, что в IE7 и ниже элемент может отображаться только в том inline-block
случае, если он уже был установлен inline
по умолчанию. Это означает, что вместо использования <div>
элемента вы должны использовать <span>
элемент. На самом деле это не большой недостаток, потому что семантически a <div>
предназначен для разделения страницы, а a <span>
предназначен только для покрытия диапазона страницы, поэтому большой семантической разницы нет. Огромным преимуществом display:inline-block
является то, что когда другие разработчики поддерживают ваш код на более позднем этапе, гораздо более очевидно, что display:inline-block
и что они text-align:right
пытаются выполнить, чем оператор float:left
или float:right
. Моя любимая польза от inline-block
подхода заключается в том, что он прост в использовании vertical-align: middle
, line-height
иtext-align: center
для идеального центрирования элементов интуитивно понятным способом. В блоге Mozilla я нашел отличную запись о том, как реализовать кроссбраузерный встроенный блок . Вот совместимость браузера .
терка
Причина, по которой использование этого float
метода не подходит для макета вашей страницы, заключается в том, что float
свойство CSS изначально предназначалось только для обтекания текстом изображения (стиль журнала) и по дизайну не лучше всего подходит для общих целей макета страницы. При последующем изменении перемещаемых элементов иногда возникают проблемы с позиционированием, потому что они не находятся в потоке страницы . Другой недостаток заключается в том, что для этого обычно требуется clearfix, иначе это может нарушить некоторые аспекты страницы. Clearfix требует добавления элемента после плавающих элементов, чтобы их родительский элемент не сжимался вокруг них, что пересекает семантическую грань между разделением стиля и контента и, таким образом, является анти-шаблоном в веб-разработке .
Любые проблемы с пробелами, упомянутые в приведенной выше ссылке, можно легко исправить с white-space
помощью свойства CSS.
Редактировать:
SitePoint - очень надежный источник советов по веб-дизайну, и они, похоже, придерживаются того же мнения, что и я:
Если вы новичок в макетах CSS, вас простят за то, что вы подумали, что творческое использование CSS-float - это верх мастерства. Если вы изучили столько уроков по макету CSS, сколько сможете найти, вы можете подумать, что освоение плавающих объектов - это обряд посвящения. Вы будете поражены изобретательностью, изумлены сложностью и ощутите успех, когда наконец поймете, как работают поплавки.
Не дайте себя обмануть. Вам промывают мозги.
http://www.sitepoint.com/give-floats-the-flick-in-css-layouts/
Обновление 2015 г. - Flexbox - хорошая альтернатива для современных браузеров :
.container {
display: flex; /* or inline-flex */
}
.item {
flex: none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]
}
Больше информации
Обновление от 21 декабря 2016 г.
Bootstrap 4 удаляет поддержку IE9 и, таким образом, избавляется от поплавков в строках и превращается в полный Flexbox.
Запрос на вытягивание # 21389
inline
, а не оinline-block
. Но первый из них хорош: stackoverflow.com/a/11823622/918414