如果我在HTML中使用自定义或不受支持的元素,则仍然可以设置样式,浏览器将呈现它们。
例如,mainInternet Explorer11和更早版本源]不支持HTML5 元素。当main由IE呈现时,涉及margin和的CSS规则overflow将被忽略。这意味着display无法识别的元素的值为inline。
main
margin
overflow
display
inline
无法识别的元素的初始设置在哪里定义?
(注意:我不是在问使用自定义元素的利弊。我只是想知道CSS默认情况下的功能。)
与其说是 所有 元素,不如说是 无法识别的 元素。请记住,CSS支持XML和HTML。在XML中,所有元素均 无法识别
在CSS 2.1规范中,第6.1.1节说:
6.1.1指定值 用户代理必须首先根据以下机制(优先顺序)为每个属性分配一个指定的值: 如果级联产生一个值,请使用它。除此之外,如果值为“ inherit”,则在下面的““ inherit”值”中定义指定的值。 否则,如果该属性被继承并且该元素不是文档树的根,请使用父元素的计算值。 否则,请使用属性的初始值。每个属性的初始值在属性的定义中指示。
6.1.1指定值
用户代理必须首先根据以下机制(优先顺序)为每个属性分配一个指定的值:
如果级联产生一个值,请使用它。除此之外,如果值为“ inherit”,则在下面的““ inherit”值”中定义指定的值。
否则,如果该属性被继承并且该元素不是文档树的根,请使用父元素的计算值。
否则,请使用属性的初始值。每个属性的初始值在属性的定义中指示。
根据定义,无法识别的元素不会在用户代理样式表中提及,并且由于我们在谈论默认行为,因此在作者样式表中也不会提及。因此1不适用。
display属性在9.2.4’display’属性中定义。在那里的规则中,它说Inherited: no,所以2不适用。
Inherited: no
因此适用3。再次从9.2.4的规则开始,我们有了Initial: inline,所以元素是内联的。
Initial: inline
对于HTML块级元素,由于它们在用户代理的样式表中已列出,因此默认情况下它们是块。对于其他显示值,例如table,类似list-item。
table
list-item