自定义元素是否为有效的HTML5?

我一直无法找到自定义标签在HTML5中是否有效的明确答案,如下所示:

<greeting>Hello!</greeting>

我在规范中找不到任何一种方式:

http://dev.w3.org/html5/spec/single-page.html

而自定义标签似乎无法通过W3C验证器进行验证。


自定义元素规范在Chrome和Opera中可用,并可在其他浏览器中使用。 它提供了一种以正式方式注册自定义元素的方法。

自定义元素是作者可以定义的DOM元素的新类型。 与无状态和短暂的装饰器不同,自定义元素可以封装状态并提供脚本接口。

自定义元素是更大的W3规范的一部分,称为Web Components,以及模板,HTML导入和Shadow DOM。

Web组件使Web应用程序作者能够定义具有不可能单独使用CSS的视觉丰富性和交互性的窗口小部件,并且便于当今脚本库的组合和重用。

不过,从这篇关于Google Developers的有关自定义元素v1的文章中,

自定义元素的名称必须包含短划线( - )。 所以<x-tags><my-element><my-awesome-app>都是有效的名称,而<tabs><foo_bar>则不是。 这个要求是这样的,HTML解析器可以将常规元素与自定义元素区分开来。 它还确保向HTML添加新标签时的向前兼容性。

一些资源

  • Web组件的“画廊”正在编译http://customelements.io/
  • WebComponents.js可用作Web组件的polyfill,直到它们在任何地方都受到支持。 另请参阅WebComponents.js github页面和Web浏览器支持表。

  • 这实际上是元素内容模型积累的结果。

    例如,根元素必须是html元素。

    html元素可能只包含一个head元素,后跟一个body元素。

    body元素可能只包含Flow内容,其中流内容被定义为元素:a,abbr,地址,区域(如果它是地图元素的后代),文章,旁边,音频,b,bdi,bdo,blockquote, br,button,canvas,cite,code,command,datalist,del,details,dfn,div dl,em,embed,fieldset,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup ,hr,i,iframe,img,input,ins,kbd,keygen,标签,地图,标记,数学,菜单,仪表,导航,无脚本,对象,ol,输出,p,pre,进度,q,ruby,s ,samp,script,section,select,small,span,strong,style(如果scoped属性存在),sub,sup,svg,table,textarea,time,u,ul,var,video,wbr和Text

    等等。

    内容模型从来没有说过“你可以将任何你喜欢的元素放在这个元素中”,这对于自定义元素/标签是必需的。


    这是可能的,并允许:

    用户代理必须将他们不理解的元素和属性视为语义中性; 将它们留在DOM(用于DOM处理器),并根据CSS(用于CSS处理器)对它们进行样式设计,但不能从它们推断任何含义。

    http://www.w3.org/TR/html5/infrastructure.html#extensibility-0

    但是,如果您打算添加交互性,则需要使文档无效(但仍然功能齐全)以适应IE 7和8。

    请参阅http://blog.svidgen.com/2012/10/building-custom-xhtml5-tags.html(我的博客)

    链接地址: http://www.djcxy.com/p/60731.html

    上一篇: Are custom elements valid HTML5?

    下一篇: streaming audio with html5 `<audio>` tag