Почему в документах MDN указано, что начальное значение отображения для всех элементов является встроенным?

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

Смотрите здесь:

https://developer.mozilla.org/en-US/docs/Web/CSS/display

Начальное значение: inline

Применяется к: всем элементам

И, конечно, противоречивая документация, которая кажется более правильной в этом случае.

https://www.w3schools.com/css/css_display_visibility.asp

Я здесь что-то не хватает?

Кажется, ясно сказано, что "все элементы" имеют "начальное значение", установленное в строку.

Ответ 1

Прежде всего w3schools не является официальной Документацией, W3C есть!

TL: DR: Вы путаете вещи. Начальное значение свойства inline и к каким элементам применяется свойство (независимо от его значения)

Они не связаны.


Вот официальная документация об этом

SS

Которое соответствует MDN Docs.

И да, начальное значение отображения inline строка ниже (в вашем вопросе) говорит, что она может применять свойство display ко всем элементам, что является истинным и не запускает "все элементы" со встроенным, потому что если вы прочитайте документы MDN, которые вы видите:

Свойство CSS отображения указывает тип поля рендеринга, используемого для элемент. В HTML значения свойств display по умолчанию взяты из поведение, описанное в спецификациях HTML или из таблица стилей по умолчанию для браузера/пользователя. Значение по умолчанию в формате XML inline, включая элементы SVG.

(Подчеркивает мое)

И что означает эта строка, любой браузер/пользовательский агент могут свободно устанавливать начальное значение элемента, поскольку они считают, что это лучше.

N.B. Помните, что по начальному значению означает использование самого значения initial, поэтому всякий раз, когда вы устанавливаете display:initial, он становится display:inline в соответствии с состояниями выше.

Ответ 2

Начальное значение: inline

... утверждает, что официальная рекомендация для пользовательских агентов состоит в том, чтобы интерпретировать display:initial как display:inline, а не как значение по умолчанию для типа элемента (т.е. block для <div>, inline-block для <span> и т.д.).

Таким образом, на практике установка display:initial; в <div> будет применяться к ней в пользовательских агентах в соответствии со стандартной рекомендацией вместо display:block;, как было бы склонно предполагать большинство разработчиков. Установка display:initial; на любого элемента должна интерпретироваться как display:inline. Вот что это значит.

В конечном счете это полезно, поскольку оно уменьшает двусмысленность вокруг сложного атрибута, например display.


Что касается того, почему MDN предоставляет эту информацию, вообще говоря, существует очень мало (если таковые имеются) противоречия между MDN и W3C/официальными источниками, что делает ее ценным и надежным ресурсом. Его основное качество - это предоставление информации в более доступном формате (чем официальные документы) для людей, не имеющих достаточного опыта в отношении веб-технологий/концепций.

Лично, помимо чтения самих статей/примеров, я нахожу, что использую его как самый быстрый способ получить полный список официальных ресурсов о какой-либо веб-концепции, так как вы всегда найдете ссылки в конце MDN по этому вопросу (если применимо).

Ответ 3

Эти две вещи не связаны.

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

Так называемое "значение по умолчанию" свойства - это просто произвольное значение, заданное браузером в его таблице стилей по умолчанию для UA. Спецификация HTML5 содержит ссылочный документ о том, какие значения по умолчанию должны применяться к тем элементам HTML, какие браузеры следуют в основном, но это полностью не связано с понятием CSS исходного значения (и это не противоречит его определению начального значения, поскольку он определяет стили по умолчанию отдельно как "стили уровня пользовательского агента" ).

"Относится к", с другой стороны, не имеет отношения к исходному значению. Даже если свойство применяется только к определенным типам элементов, эти элементы всегда будут иметь каждое свойство CSS, включая свойства, которые к ним не относятся. То, что на самом деле означает "Применяется", означает "Эффект". Если свойство не применяется к элементу, это просто означает, что оно не действует.

Например, вы можете обнаружить, что свойство flex применимо только к элементам flex. Тем не менее, каждый отдельный элемент имеет свойство flex, независимо от того, действительно ли он является элементом flex, и они почти все имеют свое начальное значение просто потому, что я не знаю ни одного стиля UA, изменяющего его значение от начального значения для любого элемент. Вы все равно можете установить произвольное значение для элемента, который не является элементом гибкости, и он просто не будет иметь никакого эффекта, но вы могли бы, например, принудительно использовать элементы flex, являющиеся дочерними элементами этого элемента, для наследования этого значения с помощью flex: inherit (вы бы этого не сделали, я просто заявляю пример).

Фактически, реальный пример этого существует в элементах ul и ol - многие авторы (включая меня) устанавливают стили списков для этих элементов, когда действительно маркеры списка, которые вы видите, принадлежат их li дети, которые наследуют стили своих списков, поскольку стили списков применяются только к элементам списка, а ul и ol сами не являются элементами списка.

И, как уже упоминалось, W3Schools не является официальной документацией. Чтобы еще больше сбить вас с толку, предположим, что W3Schools не существует. Продолжайте использовать MDN, если это легче понять, но всегда перекрестно ссылайтесь на официальные спецификации, расположенные на w3.org и whatwg.org(в которых MDN обычно хорошо работает, он почти никогда не ссылается на W3Schools).

Ответ 4

Каждый пользовательский агент (браузер) применяет таблицу стилей по умолчанию для HTML-страницы. Вы можете увидеть по умолчанию таблицу стилей HTML4:

dir, hr, menu, pre   { display: block; unicode-bidi: embed }
li              { display: list-item }
head            { display: none }
...

Свойство отображения по умолчанию изменяется в зависимости от элемента.

Ответ 5

Это верно для собственного xhtml-браузера. HTML-браузер - это нечто совсем другое, ему не нужно ждать отдельных инструкций. В HTML все известные элементы имеют предопределение по умолчанию. (Что, конечно, можно переопределить).

Были браузеры, которые вообще не поддерживали стили. HTML-теги семантические. Все xhtml generic, и, конечно же, все теги одинаково [неизвестны] и без разбора встроены по умолчанию.