Недавно читал статьи по созданию собственных тегов в HTML и натолкнулся на неизвестный мне атрибут is. Статья: https://learn.javascript.ru/...
Зачем этот атрибут? Можно ли его использовать, к примеру, для вставки иконок (<i is="icon">..</i>)? Насколько он валиден в старых браузерах?
is является частью W3C спецификации и используется для создания пользовательских элементов HTML с пользовательским поведением.
В частности, is используется при расширении свойств встроенного элемента, например <input>, <button> или <table>. Например, вы можете установить plastic-button элемент для <button>, чтобы обеспечить некоторую причудливую анимацию при нажатии на кнопку.
Добавить эту кнопку можно следующим образом:
<button is="plastic-button">Click Me!</button>
Прежде чем вы это сделаете, вам необходимо зарегистрировать plastic-button, как пользовательский элемент HTML, например:
customElements.define("plastic-button", PlasticButton, { extends: "button" });
Это ссылается на JavaScript класс PlasticButton, который выглядит примерно так:
class PlasticButton extends HTMLButtonElement {
constructor() {
super();
this.addEventListener("click", () => {
// Нарисуем некоторые причудливые анимационные эффекты!
});
}
}
Было бы здорово, если бы вы могли написать <plastic-button>Click Me!</plastic-button> вместо этого <button is="plastic-button">Click Me!</button>, но это создало бы HTMLElement без особого поведения.
Если вы НЕ хотите расширить свойства встроенного элемента HTML <button>, а вместо этого создаете новый элемент, который расширяет общий HTMLElement, вы можете использовать <plastic-button> синтаксис. Но вы не получите никакого <button> поведения.
Это часть спецификации W3C для пользовательских элементов веб-компонентов: http://www.w3.org/TR/custom-elements/#type-extension-semantics
перевод ответа @DeanMoses
Продвижение своими сайтами как стратегия роста и независимости