Кратко
СкопированоАтрибут is
позволяет расширять стандартные HTML-элементы, заменяя их поведение на поведение кастомных компонентов, вместо создания полностью нового тега.
Пример
Скопировано<script>class FancyButton extends HTMLButtonElement { constructor() { super(); this.addEventListener('click', () => { this.style.backgroundColor = '#' + Math.floor(Math.random()*16777215).toString(16); }); }}customElements.define('fancy-button', FancyButton, { extends: 'button' });</script><button is="fancy-button"> Нажми меня для смены цвета!</button>
<script> class FancyButton extends HTMLButtonElement { constructor() { super(); this.addEventListener('click', () => { this.style.backgroundColor = '#' + Math.floor(Math.random()*16777215).toString(16); }); } } customElements.define('fancy-button', FancyButton, { extends: 'button' }); </script> <button is="fancy-button"> Нажми меня для смены цвета! </button>
Как пишется
СкопированоАтрибут is
записывается как глобальный атрибут HTML-элемента:
<element is="custom-element-name"></element>
<element is="custom-element-name"></element>
Где:
element
— любой стандартный HTML-элементcustom
— имя зарегистрированного кастомного элемента- element - name
Как понять
СкопированоАтрибут is
работает в связке с Web Components. Он позволяет создавать кастомные встроенные элементы, которые расширяют функциональность стандартных HTML-элементов.
В отличие от автономных кастомных элементов (например, <my
), элементы с атрибутом is
наследуют все свойства и поведение базового HTML-элемента, добавляя к ним новую функциональность.
Подсказки
Скопировано💡 Класс кастомного элемента должен наследоваться от соответствующего HTML-элемента (например, HTML
для кнопок).
💡 Кастомный элемент должен быть зарегистрирован с помощью custom
до использования атрибута is
.
- Chrome 67, поддерживается
- Edge 79, поддерживается
- Firefox 63, поддерживается
- Safari, не поддерживается