我想学习如何为html创建自定义标签,具有特殊属性和行为,如果有人可以给出建议我会非常感激。
答案 0 :(得分:33)
HTML5Rocks.com上有一篇关于如何使用自定义元素的有趣且深入的文章:Custom Elements: Defining New Elements in HTML
以下是关于如何做到的文章的摘录。
创建元素的常用技术仍适用于自定义元素。与任何标准元素一样,它们可以用HTML声明,也可以使用JavaScript在DOM中创建。 实例化自定义标签
声明:
<x-foo></x-foo>
在JS中创建DOM:
var xFoo = document.createElement('x-foo');
xFoo.addEventListener('click', function(e) {
alert('Thanks!');
});
使用新运算符:
var xFoo = new XFoo();
document.body.appendChild(xFoo);
答案 1 :(得分:29)
根据“特殊属性和行为”的含义,您可以立即“创建”自定义HTML标记。以下内容显示在所有浏览器中,甚至可以使用各种JavaScript方法:
<my-book data-pages="400" data-author="Nietzsche">The Wanderer and His Shadow</my-book>
您必须记住几件事:
<强>断字强>!自定义元素应包含至少一个-
,例如my-book
或app-menu
或header-title
等。只是,不要使用data-*
,因为它是为数据属性。
默认情况下,所有自定义元素的显示均为inline
。但是,您可以使用CSS或JavaScript更改它。
除非您首先使用JavaScript“创建”它们,否则Internet Explorer无法识别任何这些元素:
document.createElement('my-book');
所以你必须在之前完成,你可以在CSS,HTML或JS中使用它们。
答案 2 :(得分:12)
您真正需要做的就是为该标签定义css
示例:
mytag {
font-weight: bold;
}
现在mytag是你自己的大胆:
<mytag>This text is in bold</mytag>
答案 3 :(得分:6)
现在出现了一种新兴的W3C标准规范,称为Web Component Custom Elements,它使开发人员能够创建自己的自定义HTML元素并使用浏览器解析器注册它们。 Mozilla开发了一个名为X-Tag的库,它使创建和处理自定义元素的过程非常简单,请查看:X-Tags.org
答案 4 :(得分:2)
您可以使用以下步骤创建自定义html标记:
步骤1-注册新元素。使用document.registerElement():
创建自定义元素var XFoo = document.registerElement('x-foo', {
prototype: Object.create(HTMLElement.prototype)
});
registerElement中的第二个参数是可选对象,它描述了元素的原型。
步骤2-实例化自定义标签 有几种方法: 声明他们:
<x-foo></x-foo>
在JS中创建DOM:
var xFoo = document.createElement('x-foo');
xFoo.addEventListener('click', function(e) {
alert('Thanks!');
});
使用new运算符:
var xFoo = new XFoo();
步骤3-使用文档
附加新创建的元素document.body.appendChild(new XFoo());
完整示例:
var XFooProto = Object.create(HTMLElement.prototype);
// 1. Give x-foo a foo() method.
XFooProto.foo = function() {
alert('foo() called');
};
// 2. Define a property read-only "bar".
Object.defineProperty(XFooProto, "bar", {value: 5});
// 3. Register x-foo's definition.
var XFoo = document.registerElement('x-foo', {prototype: XFooProto});
// 4. Instantiate an x-foo.
var xfoo = document.createElement('x-foo');
// 5. Add it to the page.
document.body.appendChild(xfoo);
答案 5 :(得分:2)
还有一个版本仅在Chrome 54和Opera中支持。
示例:
class BasicElement extends HTMLElement {
connectedCallback() {
this.textContent = 'Just a basic custom element.';
}
}
customElements.define('basic-element', BasicElement);
您可以详细了解此here
答案 6 :(得分:0)
您可以使用javascript:document.createElement('element')