自定义HTML元素的属性
在使用Web组件中的自定义HTML元素时,我还应该使用前缀data
命名自定义属性吗?
例如:
<!-- Should form be data-form? -->
<my-button form="foo">click me</my-button>
一般来说,自定义元素和预定义元素之间没有区别。 您可以使用document.createElement
创建您选择的元素并将其注册到document.registerElement
。 结果是:
console.log(document.createElement('my-button').constructor);
//⇒ function HTMLElement() { [native code] }
console.log(document.registerElement('my-button'));
//⇒ function my-button() { [native code] }
console.log(document.createElement('my-button').constructor);
//⇒ function my-button() { [native code] }
正如你所看到的,一旦注册,元素就会被赋予它自己的构造函数。 这提供了组件以自己的方式行事的能力。 但:
console.log(document.createElement('my-button').__proto__.__proto__);
//⇒ HTMLElement
仍然是一个很好的旧平原HTMLElement
。 所以,属性命名规则没有改变。
请注意,图书馆,如聚合物,可能会增加额外的属性处理; 以上仅适用于纯Web组件。
不,这不是必要的。
现有的HTML元素具有一组定义的属性,这意味着只需添加任何属性即可使HTML无效。 通过引入data-
属性,可以扩展现有元素而不会使其失效。
Web组件是自定义元素。 他们没有定义的一组属性,你自己定义它们。 你是否使用data-
属性完全取决于你,但你不需要。 你的组件不能失效,因为它没有有效的定义。
如果您关心语义/有效的HTML,这个答案可能与您相关:自定义元素是否为有效的HTML5? 简而言之:在组件名称中使用短划线以确保它被选为有效的HTML。
链接地址: http://www.djcxy.com/p/24957.html上一篇: Attributes on custom HTML elements
下一篇: How to use WebRTC + Pubnub Api for video chat client in Native android app