Клавиша / esc

Атрибут is

Экспериментальный атрибут для установки поведения обычного HTML элемента как кастомного.

Время чтения: меньше 5 мин

Кратко

Скопировано

Атрибут 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-button>), элементы с атрибутом is наследуют все свойства и поведение базового HTML-элемента, добавляя к ним новую функциональность.

Подсказки

Скопировано

💡 Класс кастомного элемента должен наследоваться от соответствующего HTML-элемента (например, HTMLButtonElement для кнопок).
💡 Кастомный элемент должен быть зарегистрирован с помощью customElements.define() до использования атрибута is.

Поддержка в браузерах:
  • Chrome 67, поддерживается
  • Edge 79, поддерживается
  • Firefox 63, поддерживается
  • Safari, не поддерживается
О Baseline