为什么MDN文档声明所有元素的初始显示值都是内联的?

11 html css display

显然不是这种情况,因为每个元素都可以拥有它自己的默认值.

看这里:

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

初始值:内联

适用于:所有元素

当然,在这种情况下看起来更正确的文档是矛盾的.

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

这里有什么我想念的吗?

它似乎清楚地表明"所有元素"都将"初始值"设置为内联.

dip*_*pas 12

首先w3schools不是官方文档,W3C是!

TL:DR:你是混乱的东西 - 属性的初始值是属性inline和属性适用的元素(无论它有什么价值)

他们没有关系.


这是 关于它的官方文档

SS

哪个匹配MDN Docs.

是的,显示的初始值是inline下面的行(在你的问题中)说它可以将display属性应用于所有元素,这是真的,而不是使用内联启动"所有元素",因为如果您阅读MDN文档,您会看到:

显示CSS属性指定用于元素的呈现框的类型.在HTML中,默认display属性值取自HTML规范中描述的行为或浏览器/用户默认样式表.XML中的默认值inline包括SVG元素.

(强调是我的)

这一行意味着任何浏览器/用户代理都可以自由设置元素的初始值,因为它们认为它更好.

注意,初始值表示使用initial值本身,因此无论何时设置display:initial它都将display:inline按照上述文档状态进行.

  • 我不认为W3schools在这里"不准确".它谈到显示的"默认"值,而不是"初始"值,我认为这是合理的.对于大多数Web开发人员而言,将"<p>"元素的默认显示值视为"内联",即使这是他们的"初始"值,也会令人深感困惑. (3认同)

And*_*hiu 9

初始值:内联

...指出用户代理的官方建议是解释display:initialdisplay:inline,而不是元素类型的默认值(即blockfor <div>,inline-blockfor <span>,etc ......).

因此,在实践中,设置display:initial;on <div>将在适用display:inline;于标准建议的用户代理中应用于它,而不是display:block;像大多数开发人员想要假设的那样.设置display:initial;的任何元素不应被解释为display:inline.这就是它的含义.

最终,这很有用,因为它可以减少复杂属性的模糊性,例如display.


至于为什么MDN提供这些信息,一般来说,MDN和W3C /官方来源之间的矛盾很少(如果有的话),这使它成为一种有价值和可靠的资源.它的主要质量是以更易于访问的格式(比官方文档)为没有扎实的Web技术/概念背景的人提供信息.

就个人而言,除了阅读文章/示例本身之外,我发现自己经常使用它作为获取任何网络概念的完整官方资源列表的最快方式,因为您总是会在MDN文章末尾找到链接.主题(如适用).


Bol*_*ock 6

这两件事情没有关系.

属性的初始值是指该属性的CSS定义的默认值.每个CSS属性都有一个初始值,与元素类型无关,因为CSS属性不以任何方式与任何文档语言的元素相关联.此初始值旨在作为无法识别的元素的默认值,以保证每个元素都具有用于级联目的的每个属性的值,从而确保浏览器知道如何在遇到它时呈现该无法识别的元素.

属性的所谓"默认值"只是浏览器在其UA默认样式表中设置的任意值.HTML5规范包含一个参考文档,关于哪些默认值应该应用于哪些HTML元素,哪些浏览器主要遵循,但这与CSS的初始值概念完全无关(也不与其初始值的定义相矛盾,因为它定义了默认值样式分别作为"用户代理级别样式").

另一方面,"适用于"与初始值无关.即使属性仅适用于某些类型的元素,这些元素也将始终具有每个CSS属性,包括不适用于它们的属性."适用于"实际上意味着"有效".如果属性不适用于元素,则仅表示它不起作用.

例如,您可能会发现该flex属性仅适用于弹性项目.但是,每个元素都有一个flex属性,无论它是否实际上是一个flex项,并且它们几乎都有它的初始值,因为我不知道任何UA样式从任何元素的初始值改变它的值.你仍然可以在一个不是flex项的元素上设置一个任意值,它根本就没有效果 - 但是你可以强制像这个元素的子元素一样的flex项继承这个值flex: inherit(你不会实际上这样做,我只是陈述一个例子).

事实上,在ulol元素中存在一个现实世界的例子- 许多作者(包括我自己)在这些元素上设置列表样式,当你看到的列表标记实际上属于他们li继承其列表样式的子元素时,因为列表样式仅适用于列表项,ul而且ol它们本身不是列表项.

如上所述,W3Schools不是官方文档.为了避免混淆,假设W3Schools不存在.如果它更容易理解,继续使用MDN,但总是与位于w3.org和whatwg.org的官方规范交叉引用(MDN通常很好地链接到它,它几乎从不链接到W3Schools).