Ответ 1
То, что вы сказали, в значительной степени правильное: "элемент встроенного блока, похоже, способен делать все, что может сделать элемент блока, но с небольшим дополнительным стилем". Это в основном связано с тем фактом, что одно и то, и другое имеют общий характер, это тот факт, что они являются блочными контейнерами.
Однако есть улов.
Блок-блок участвует в контексте форматирования блока, а встроенный блок участвует в встроенном контексте форматирования (хотя он устанавливает контекст форматирования блоков для своих потомков, как и блок-блок при определенных условиях). См. раздел 9.4. В основном это означает, что встроенный блок обрабатывается так, как будто это текст, который, в свою очередь, означает, что большинство свойств, которые обычно применяются к тексту, также применяются к встроенному блоку. Эти свойства включают, помимо прочего, text-indent
, text-align
и vertical-align
.
Это может вызвать нежелательные побочные эффекты, которые вы можете легко предотвратить, не используя display: inline-block
в первую очередь. См. этот вопрос для интересного примера того, что может случиться.
Модель коробки для встроенных блоков также несколько отличается от модели блоков блоков. Раздел 10 содержит все подробные подробные сведения, но основными отличиями являются:
-
Без объявления
width: 100%
, как вы могли подозревать, встроенный блок будет сжиматься, чтобы соответствовать его содержимому. -
Поскольку встроенный блок работает в потоке, вы не можете центрировать его с автоматическим левым и правым полями. Вместо этого вы используете
text-align: center
. Само собой разумеется, что он должен быть в своей собственной строке без текста, окружающего его в одной строке, но если вы устанавливаетеwidth: 100%
, это не будет проблемой. -
В строковых блоках никогда не влияет сбой краев.
Если вы пытаетесь создать блок-макет, вы должны использовать display: block
. Вообще говоря, при выборе между ними вы всегда должны по умолчанию display: block
, и только выберите display: inline-block
, если у вас есть очень веская причина (и нет, блокирование краха запаса не является тем, что я считаю хорошей причиной).