Термины встроенный блок и встроенный блок относятся к одной и той же вещи (блок контейнера встроенного уровня, блок контейнера) и полностью взаимозаменяемы. Элемент с display: inline-block
действительно генерирует блок встроенного блока или блок встроенного блока (с дефисом или без него). Дефис есть только там, поэтому CSS может определить inline-block
как одно значение ключевого слова.
Форма без дефисов встречается несколько раз в разделе 9 CSS2, но нигде в этой спецификации не встречается (однажды она появляется в css-display-3, в предложении, почти дословно снятом с CSS2, так что не в счет). Я не знаю, почему это так, но не предполагается, что не-дефисная форма относится к чему-то отличному от дефис-формы. Фактически, сам раздел 9 использует обе формы взаимозаменяемо - см. раздел 9.2.4 для примера используемой формы переноса:
встроенный блок
Это значение заставляет элемент генерировать контейнерный блок встроенного уровня. Внутренняя часть встроенного блока отформатирована как блок блока, а сам элемент отформатирован как атомарный блок встроенного уровня.
Хотя я понимаю, почему читатели могут запутаться. К счастью, остальная часть спецификации CSS2 и большинство спецификаций CSS3 (которые я изучал в любом случае) согласуются в использовании дефисной формы.
Кроме того, наличие или отсутствие слова «box» не меняет значение «inline-block». Как правило, спецификация опускает это, потому что это излишне многословно; все в структуре форматирования, которая не является текстовым прогоном, в любом случае является коробкой, и «inline-block» как существительное довольно красиво скатывается с языка.
Если незаменяемые встроенные блоки являются блок-контейнерами , а элементы с display:inline-block
являются встроенными блоками (т.е. не блок одноуровневые блоки и, следовательно, не блокировать контейнеры контейнера ), тогда логично выпадает, что незаменяемые встроенные блоки не могут быть результатом элементов с display:inline-block
.
Я думаю, здесь есть какое-то недопонимание. Приведенная выше цитата перечисляет встроенные блоки как пример блока контейнера блока, который не является блок-уровнем; цель этой цитаты состоит в том, чтобы донести до читателя, что не все контейнеры блоков являются блоками уровня блока, и не все блоки уровня блока являются контейнерами блоков - действительно, что эти две концепции различны и не должны смешиваться. Из моего ответа на этот связанный вопрос :
Единственная разница между блочным блоком и встроенным блоком состоит в том, что первый - на уровне блока, а второй - на уровне строки. Отсюда отображаются значения display: block
и display: inline-block
соответственно. Поскольку оба являются блочными контейнерами, нет разницы в том, как их содержимое отформатировано.
Поэтому, опять же, display: inline-block
действительно заставляет элемент генерировать встроенный блок (кроме случаев, когда другие части макета заставляют его отформатировать как уровень блока, или blockified , что вообще отдельная тема). Будет ли этот встроенный блок заменен или не заменен, зависит от элемента; например, элемент <img>
с display: inline-block
генерирует замещенный встроенный блок, тогда как элемент <div>
с display: inline-block
генерирует незаменяемый встроенный блок.
Замененный inline-блок не может фактически сформировать контейнерный блок, потому что его содержимое отображается вне правил форматирования CSS. Вот почему в спецификации различаются незаменяемые inline-блоки как контейнерные блоки. Там действительно не больше, чем это.