自定义元素是否为有效的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添加新标签时的向前兼容性。
一些资源
这实际上是元素内容模型积累的结果。
例如,根元素必须是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