无法识别的HTML元素的默认设置

时间:2016-02-28 23:09:39

标签: html css html5 language-lawyer w3c

如果我在HTML中使用自定义或不受支持的元素,它们仍然可以设置样式,浏览器将呈现它们。

例如,Internet Explorer 11及更早版本(source)不支持HTML5 main元素。当IE呈现main时,将忽略涉及marginoverflow的CSS规则。这意味着无法识别的元素的display值为inline

定义了无法识别的元素的初始设置在哪里?

(注意:我没有询问使用自定义元素的优缺点。我只想知道默认情况下CSS的用途。)

1 个答案:

答案 0 :(得分:5)

无法识别的元素不同,所有元素。请记住,CSS支持XML和HTML。在XML中,所有元素都是无法识别的

在CSS 2.1规范中,section 6.1.1说:

  

6.1.1指定值

     

用户代理必须首先为每个属性分配指定的值   在以下机制上(按优先顺序排列):

     
      
  1. 如果级联产生值,请使用它。除此之外,如果值为'inherit',则指定的值在“The inherit”中定义   价值“下面。

  2.   
  3. 否则,如果继承该属性并且该元素不是文档树的根,请使用父计算的值   元件。

  4.   
  5. 否则使用属性的初始值。每个属性的初始值在属性的定义中指示。

  6.   

根据定义,用户代理样式表中将不会提及无法识别的元素,并且由于我们讨论的是默认行为,因此也不会在作者样式表中提及。所以1不适用。

显示属性在9.2.4 The 'display' property中定义。在那里的规则中,它表示Inherited: no,因此2不适用。

所以3适用。再次从9.2.4的规则,我们有Initial: inline,因此元素是内联的。

对于HTML块级元素,默认情况下它们是块,因为它们在用户代理的样式表中列出。与其他显示值类似,例如tablelist-item