还有一些关于其他答案的事情,这些答案要么简单地措辞,要么有些不正确。
false(ish):非标准的HTML元素是“不允许”,“非法”或“无效”的。
不必要。他们是 “不合格”. 。有什么不同? 某些东西可以“不符合”,但仍然可以“允许”。 W3C不会将HTML警察送到您的家中并将您拖走。
W3C以某种原因离开了事情。一致性和规格由社区定义。如果您碰巧有一个较小的社区来消费HTML出于更具体的目的,并且他们都同意他们需要使事情变得更容易的一些新元素,那么他们可以将W3C称为 “其他适用规格”. 。 (显然,这是简化的总体,但是您明白了)
也就是说,严格的验证者将宣布您的非标准要素为“无效”。但这是因为验证者的工作是确保符合其验证的任何规格,而不是确保“合法性” 浏览器 或为 利用.
false(ish):非标准html元素 将要 导致渲染问题
可能,但不太可能。 (替换为“愿意”),这应该导致渲染问题的唯一方法是,如果您的自定义元素与其他规范发生冲突,例如对HTML规范的更改或在同一系统中尊重的另一项规范(例如SVG,数学或其他自定义)。
实际上, CSS可以设计非标准标签的原因 是因为HTML规范 显然是说明 那:
用户代理必须将其不理解为语义中性的元素和属性;将它们留在DOM(用于DOM处理器)中,并根据CSS(对于CSS处理器)进行样式,但不从中推断出任何含义
笔记: 如果您想使用自定义标签,请记住以后对HTML规格的更改可能会吹您的样式,因此请做好准备。 W3C真的不太可能实施 <imsocool>
但是,标签。
非标准标签和JavaScript(通过DOM)
您可以使用JavaScript访问和更改自定义元素的原因是因为 规格甚至谈论如何在DOM中处理它们, ,这是(非常可怕的)API,使您可以操纵页面上的元素。
必须将HTMLUNKNOWNELEMENT接口用于该规范(或其他适用规格)未定义的HTML元素。
tl; dr:符合规格是为了沟通和安全的目的。除了 验证器, ,其唯一目的是执行合规性,但其使用是可选的。
例如:
var wee = document.createElement('wee');
console.log(wee.toString()); //[object HTMLUnknownElement]
(我敢肯定这会吸引火焰,但有2美分)