问题 HTML5:为什么不使用我自己的任意标签名称?


据我所知,在HTML5中组成标签名称是完全合法的,它们可以像CSS样式和嵌套一样正常工作。

当然,我的任意标签名称对浏览器没有任何影响,浏览器不理解它们,但它使我的代码更易读,这使得它更容易维护。

那么我为什么不在页面上使用任意标签名称?它会影响SEO吗?会破坏什么吗?

重要编辑:较旧的浏览器使用时不要阻塞不支持的标签 http://ejohn.org/blog/html5-shiv/


11504
2018-05-31 23:20


起源

你能举个例子,为什么?你如何让核心更具可读性?如果您打算将它们完全用作标准化标签名称,我看不到它们的用途。
如果HTML6添加的新标签恰好与您组成的标签相匹配怎么办?您的页面现在开始表现奇怪。您可以使用XHTML并将自定义标记放在它们自己的命名空间中。 - Raymond Chen
可能重复 HTML5是否支持名称空间? - Raymond Chen
为什么您认为自定义标记名称会使您的代码在没有人时更具可读性,但您会知道它们的含义?你是谁试图让你的代码更具可读性 对于? - robertc
加上我的2美分 - 说我在代码中有一个重复的元素模式,没有任何标准化的语义含义,从壁挂日历表单照片到收件箱电子邮件消息到网络中的树基于游戏。而不是称他们为div,div,div,div和div,我可能想要称呼它们 tree, calendarsheet, emailmessage 或类似的。 - chiccodoro


答案:


UPDATE

最初的答案很古老,是在Web组件存在之前创建的(尽管自2011年以来已经讨论过)。自定义元素的规则已经发生了很大变化。 W3C现在有一个完整的标准 自定义元素

自定义元素为作者提供了一种构建自己的全功能DOM元素的方法。虽然作者总是可以在他们的文档中使用非标准元素,但事后通过脚本或类似方式添加特定于应用程序的行为,这些元素在历史上一直是不符合的并且不是很有用。通过定义自定义元素,作者可以通知解析器如何正确构造元素以及该类的元素应如何对更改做出反应。

换句话说,W3C现在可以使用自定义元素(或任意标记名称,因为问题调用它们)。但是,围绕它们及其使用有很多规则,因此您应该参考链接的文档。


原始答案

  1. 较旧的浏览器会阻塞他们无法识别的标签。没有什么可以保证您的自定义标记在任何浏览器中都能正常工作
  2. 没有语义含义应用于您的标记,因为此含义仅存在于规范中商定的标记中。这是否会影响搜索引擎优化是未知的,但解析HTML的任何内容如果遇到无法识别的标记(包括屏幕阅读器或网络浏览器)可能会遇到问题
  3. 如果您的标签嵌套不当,您可能无法从浏览器获得所需的帮助
  4. 同样,一些浏览器可能会搞砸渲染并且彼此不同。例如, <p><ul></ul></p> 在Chrome中解析为 <p></p><ul></ul>。由于没有商定的内容模型,因此无法保证您的代码将如何处理
  5. W3C 不希望你这样做。

    作者不得使用本规范或其他适用规范不允许的元素,属性或属性值,因为这样做会使语言在将来难以扩展。

如果你真的需要为此目的使用自定义标签,你可以使用某种模板语言,如XSLT,并创建一个样式表,将其转换为有效的HTML


10
2018-05-31 23:31



最后一条评论+1。使用抽象模板生成兼容代码。两全其美! - Preet Sangha
较旧的浏览器在使用时不会阻塞不支持的标记 ejohn.org/blog/html5-shiv - themirror
点5的+1。 - chiccodoro
@themirror这需要启用JavaScript。关键是某些浏览器或其他用户代理不一定会接受在所有情况下都无法识别的标签 - Explosion Pills
@AdamKatz我已经更新了我的答案。四年内可以改变很多! - Explosion Pills