对于自定义标签在HTML5中是否有效,我一直无法找到一个明确的答案,比如:
<greeting>Hello!</greeting>
我在说明书中什么都没发现:
http://dev.w3.org/html5/spec/single-page.html
而且自定义标记似乎无法使用W3C验证器进行验证。
对于自定义标签在HTML5中是否有效,我一直无法找到一个明确的答案,比如:
<greeting>Hello!</greeting>
我在说明书中什么都没发现:
http://dev.w3.org/html5/spec/single-page.html
而且自定义标记似乎无法使用W3C验证器进行验证。
当前回答
data-*属性在HTML5中有效,甚至在HTML4中,所有web浏览器都尊重它们。 添加新标签在技术上是可以的,但不建议这样做,因为:
它可能会与将来添加的内容相冲突,而且 使HTML文档无效,除非通过JavaScript动态添加。
我只在谷歌不关心的地方使用自定义标签,在一个游戏引擎iframe中,我做了一个<日志>标签,包含<msg>, <错误>和<警告> -但只通过JavaScript。根据验证器,它是完全有效的。它甚至可以在Internet explorer中使用它的样式!;]
其他回答
我想指出的是,“有效”这个词在这里有两种不同的含义,其中任何一种都是潜在的,嗯,有效的。
Should an HTML document with custom tags be considered valid HTML5? The answer to this is clearly "no." The spec lists exactly what tags are valid in what contexts. This is why an HTML validator will not accept a document with custom tags, or with standard tags in the wrong places (like an "img" tag in the header). Will an HTML document with custom tags be parsed and rendered in a standard, clearly-defined way across browsers? Here, perhaps surprisingly, the answer is "yes." Even though the document would not technically be considered valid HTML5, the HTML5 spec does specify exactly what browsers are supposed to do when they see a custom tag: in short, the custom tag acts kind of like a <span> - it means nothing and does nothing by default, but it can be styled by HTML and accessed by javascript.
自定义标记在HTML5中无效。但目前浏览器支持解析它们,你也可以使用css来使用它们。因此,如果你想为当前的浏览器使用自定义标记,那么你可以。但是,一旦浏览器实现了严格用于解析HTML内容的W3C标准,这种支持可能就会消失。
给出一个反映现代页面的更新答案。
自定义标记是有效的,
1)它们包含一个破折号
<my-element>
2)它们是嵌入的XML
<greeting xmlns="http://example.com/customNamespace">Hello!</greeting>
这里假设你使用的是HTML5 doctype <!doctype html >
考虑到这些简单的限制,现在尽最大努力保持HTML标记的有效性是有意义的(请停止关闭<img>和<hr>这样的标记,除非您使用XHTML doctype,否则这是愚蠢和不正确的,您可能不需要XHTML doctype)。
鉴于HTML5清楚地定义了解析规则,兼容的浏览器将能够处理您扔给它的任何标记,即使它不是严格有效的。
只需使用任何你想要的,而不需要任何dom声明
<container>content here</container>
添加您自己的样式(display:block),它将适用于任何现代浏览器
自定义元素规范可以在Chrome和Opera中使用,也可以在其他浏览器中使用。它提供了一种以正式方式注册自定义元素的方法。
自定义元素是可以定义的DOM元素的新类型 作者。与无状态且短暂的装饰器不同,自定义 元素可以封装状态并提供脚本接口。
自定义元素是更大的W3规范Web组件的一部分,另外还有模板、HTML导入和影子DOM。
Web组件使Web应用程序作者能够使用 视觉的丰富程度和交互性是CSS无法实现的 单独使用,并且易于组合和重用,而不可能使用脚本 今天库。
但是,在谷歌开发人员的这篇关于自定义元素v1的优秀通览文章中:
自定义元素的名称必须包含破折号(-)。因此<x-tags>、<my-element>和<my-awesome-app>都是有效名称,而<tabs>和<foo_bar>则不是。这个需求是为了让HTML解析器能够区分自定义元素和常规元素。当新标签添加到HTML中时,它还可以确保向前兼容性。
一些资源
Web组件示例可从https://WebComponents.org获得 WebComponents.js充当了Web组件的填充,直到它们在任何地方都得到支持。参见WebComponents.js github页面和web浏览器支持表。