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

the*_*ror 13 html5

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

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

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

重要编辑:与http://ejohn.org/blog/html5-shiv/一起使用时,较旧的浏览器不会窒息不受支持的标签

Exp*_*lls 11

UPDATE

原始答案相当陈旧,是在Web组件存在之前创建的(尽管自2011年以来已经讨论过).自定义元素的规则已经发生了很大变化.W3C现在拥有自定义元素的完整标准

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

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


原始答案

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

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

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

  • 最后一条评论+1。使用抽象模板生成兼容的代码。两全其美! (2认同)
  • 与 http://ejohn.org/blog/html5-shiv/ 一起使用时,较旧的浏览器不会因不支持的标签而阻塞 (2认同)