Je voudrais apprendre à créer des balises personnalisées pour HTML, avec des attributs et un comportement spéciaux. Si quelqu'un pouvait donner des conseils, je vous en serais très reconnaissant.
Un article intéressant et détaillé de HTML5Rocks.com explique comment utiliser des éléments personnalisés: Éléments personnalisés: définition de nouveaux éléments en HTML
Voici un extrait de l'article sur la façon de le faire.
Les techniques courantes de création d'éléments s'appliquent toujours aux éléments personnalisés. Comme avec n'importe quel élément standard, ils peuvent être déclarés en HTML ou créés dans le DOM à l'aide de JavaScript .
Déclarez-les:
<x-foo></x-foo>
Créer un DOM dans JS:
var xFoo = document.createElement('x-foo');
xFoo.addEventListener('click', function(e) {
alert('Thanks!');
});
Utilisez l'opérateur new:
var xFoo = new XFoo();
document.body.appendChild(xFoo);
Selon ce que vous entendez par "attributs et comportement spéciaux", vous pouvez "créer" des balises HTML personnalisées dès maintenant. Les éléments suivants apparaissent dans tous les navigateurs et fonctionnent même avec les différentes méthodes JavaScript:
<my-book data-pages="400" data-author="Nietzsche">The Wanderer and His Shadow</my-book>
Il ne faut garder que quelques éléments à l'esprit:
_ {Césure! Les éléments personnalisés doivent comporter au moins un -
tel que my-book
ou app-menu
ou header-title
, etc. N'utilisez pas data-*
car il est réservé à data-attributs.
Tous les éléments personnalisés ont un affichage de inline
par défaut. Vous pouvez toutefois changer cela avec CSS ou JavaScript.
Internet Explorer ne reconnaît aucun de ces éléments sauf si vous les {premier} _ "créez" avec JavaScript:
document.createElement('my-book');
Donc, vous devez le faire avant, vous pouvez les utiliser dans vos CSS, HTML ou JS.
Tout ce que vous avez à faire est de définir css pour cette balise
exemple:
mytag {
font-weight: bold;
}
et maintenant le mytag est votre propre audacieux:
<mytag>This text is in bold</mytag>
Il existe maintenant une nouvelle spécification standard du W3C, appelée Éléments personnalisés de composant Web , qui permet aux développeurs de créer leurs propres éléments HTML personnalisés et de les enregistrer avec l’analyseur de navigateur. Mozilla a développé une bibliothèque, nommée X-Tag, qui permet de créer et de travailler avec des éléments personnalisés très facilement, consultez-la: X-Tags.org
Vous pouvez créer des balises HTML personnalisées en procédant comme suit:
Étape 1- Enregistrez un nouvel élément. Les éléments personnalisés sont créés à l'aide de document.registerElement ():
var XFoo = document.registerElement('x-foo', {
prototype: Object.create(HTMLElement.prototype)
});
Le second argument de registerElement est un objet facultatif qui décrit le prototype de l'élément.
Étape 2 - Instanciation des balises personnalisées Plusieurs façons de procéder:.
<x-foo></x-foo>
Créer un DOM dans JS:
var xFoo = document.createElement('x-foo');
xFoo.addEventListener('click', function(e) {
alert('Thanks!');
});
Utilisez le nouvel opérateur:
var xFoo = new XFoo();
Étape 3 - Joindre l’élément nouvellement créé au document
document.body.appendChild(new XFoo());
Exemple complet:
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);
Il existe également une version prise en charge UNIQUEMENT dans Chrome 54 et Opera.
Exemple:
class BasicElement extends HTMLElement {
connectedCallback() {
this.textContent = 'Just a basic custom element.';
}
}
customElements.define('basic-element', BasicElement);
Vous pouvez en apprendre plus à ce sujet ici
vous pouvez utiliser javascript: document.createElement('element')