Блочные элементы против встроенных элементов в HTML: почему различие?

15

Различие между блочными и встроенными элементами всегда казалось мне странным. Разница состоит в том, что блочный элемент занимает всю ширину, вызывая разрыв строки до и после элемента, а встроенный элемент занимает столько же, сколько и содержимое. Почему бы просто не иметь один тип элемента - встроенный элемент, в котором вы также можете применить собственную высоту / ширину, и использовать это? Вы хотите разрывы строк? Вставьте <br />или, возможно, добавьте специальный тег в CSS для этого поведения. То, как это происходит сейчас, я не вижу, чтобы это решало какую-либо проблему, и вместо этого это только вызывает свойство, которое, по моему мнению, должно быть решено дизайнером.

Так почему два типа?

EpsilonVector
источник
Моя любимая часть этого вопроса в том , как он использует встроенный стиль для <br/>, и <p>тега , чтобы получить последнюю строку , отделенного от первого пункта. Возможно, вы должны начать смотреть на огромные различия в визуальном намерении, а не различия в реализации.
riwalk
1
Хотя я на 100% считаю элементы блока полезными и не согласен с предложенным вами решением, это все еще большой вопрос.
Николь

Ответы:

13

Ты говоришь:

Вы хотите разрывы строк? Вставьте <br />или, возможно, добавьте специальный тег в CSS для этого поведения. То, как это происходит сейчас, я не вижу, чтобы это решало какую-либо проблему, и вместо этого это только вызывает свойство, которое, по моему мнению, должно быть решено дизайнером.

Вы на правильном пути - стиль должен определяться дизайнером.

Но у вас есть проблема наоборот. Вставка <br/>тега - это на самом деле опция, которая «заставляет свойство, которое должен решить дизайнер» - внутри документа разметки, когда <br/>он есть, он есть - и только с помощью хитрого / хакерского CSS вы можете удалить его эффект.

Inline / block elements, с другой стороны, являются чисто элементами, стилизованными под удобное значение по умолчанию для общего случая использования. Само визуальное свойство может быть немедленно изменено дизайнером CSS с помощью display:inlineили display:block.

Возьмем, к примеру, общий элемент навигации в наши дни - <li>. Это элементы по умолчанию block, но дизайнеры заставят их floatвыглядеть встроенными ( blockимеет больше специальных свойств, чем просто занятие всей строки, но это разговор на другой день).

Николь
источник
3

Большинство элементов имеют стандартное форматирование ... Ваш вопрос может быть расширен, чтобы сказать, что это форматирование должно решаться и дизайнером и должно быть удалено. Я всегда просто полагал, что это было отправной точкой и удалял форматирование при необходимости (часто это не так). Но в конце концов есть некоторые вещи, которые являются естественными. Например, если у вас есть абзац, вы ожидаете, что он будет блочным элементом, потому что такова природа абзаца. Независимо от того, имеют ли элементы настройки по умолчанию, такие как блок или встроенный, я определенно хотел бы иметь возможность указать эту опцию. Причиной, по которой я говорю, является то, что ИМО чище, чем разбрасывать вещи<br />в HTML. Это делает то же самое? Да. Но с недавними достижениями в HTML большие усилия были сосредоточены на том, чтобы сделать его более семантическим языком, где вы вкладываете меньше в HTML, чем форматирование, и больше в CSS. <br />Перерыв средство линии , которая , как правило , со ссылкой на разрыв строки в абзаце или другое предложение , содержащая структуру. В конце концов, это не имеет значения для меня, но я лично хочу иметь возможность иметь блочные и встроенные различия, поэтому я надеюсь, что они никогда не уберут это, по крайней мере, со стороны CSS!

Кеннет
источник
2

Это все равно что сказать, что между абзацами и предложениями нет никакой разницы. Параграфы разграничивают группу идей. Как правило, предложение для одной идеи.

Разметка относится к семантике, а не к отображению. В самом деле, дизайнер может свободно обрабатывать любой элемент, который по умолчанию использует стиль блока, как встроенный, и наоборот.

Ишмаэль
источник
2

В LaTeX есть два режима (не включая математический режим): горизонтальный режим и вертикальный режим. Элементы (символы) представляют собой небольшие прямоугольники, которые накапливаются «по горизонтали» в абзаце. Затем эти большие коробки накапливаются вертикально. Это похоже на (X) HTML: встроенный и блок.

Оливье Пирсон
источник
0

Похоже, проблема обратной совместимости для меня. Встроенный элемент был, вероятно, более поздним дополнением к стандарту HTML, и поэтому веб-страницы, написанные в 1992 году, все еще можно просматривать в 2011 году, они все еще поддерживаются - как будто существует тонна 19-летних веб-страниц ...!


источник
-1

Я думаю, что режимы отображения настолько различны между блочными и встроенными, что стоит провести различие на уровне разметки.

JoeM05
источник