I'd like to learn how to create custom tags for html, with special attributes and behavior, if someone can give advice I'd be the most grateful.
An opening tag begins a section of page content, and a closing tag ends it. For example, to markup a section of text as a paragraph, you would open the paragraph with an opening paragraph tag <p> and close it with a closing paragraph tag </p> (closing tags always proceed the element with a /).
All standard rules of HTML elements apply to custom elements. Just like standard elements, you can create a custom element in the DOM using JavaScript, or declare it in HTML.
Custom elements cannot be self-closing because HTML only allows a few elements to be self-closing.
No, not all the tags are ending tags. Tags may be either paired or unpaired (or single). Paired tags need to be closed, i.e. they contains both ending and non-ending tags, whereas unpaired tags need not be closed, i.e. they only contain opening tags.
There's an interesting and in depth article from HTML5Rocks.com on how to work with custom elements : Custom Elements: Defining New Elements in HTML
Here's an excerpt from the article on how to do it.
The common techniques of creating elements still apply to custom elements. As with any standard element, they can be declared in HTML or created in DOM using JavaScript. Instantiating custom tags
Declare them:
<x-foo></x-foo>
Create DOM in JS:
var xFoo = document.createElement('x-foo'); xFoo.addEventListener('click', function(e) { alert('Thanks!'); });
Use the new operator:
var xFoo = new XFoo(); document.body.appendChild(xFoo);
Depending on what you mean by "special attributes and behavior," you can "create" custom HTML tags right now. The following shows up in all browsers, and even works with the various JavaScript methods:
<my-book data-pages="400" data-author="Nietzsche">The Wanderer and His Shadow</my-book>
There are just a couple things you have to keep in mind:
Hyphenation! Custom elements should consist of at least one -
like my-book
or app-menu
or header-title
etc. Just, don't use data-*
since it's reserved for data- attributes.
All custom elements have a display of inline
by default. You can change that with CSS or JavaScript, however.
Internet Explorer does not recognize any of these elements unless you first "create" them with JavaScript:
document.createElement('my-book');
So you have to do that before you can use them in your CSS, HTML, or JS.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With