Кратко
СкопированоАтрибут 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, не поддерживается