В 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