<template>

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

Кратко

Секция статьи "Кратко"

Тег <template> – (от английского template – шаблон) используется как контейнер для хранения HTML-кода для дальнейшего использования в JavaScript.

Пример

Секция статьи "Пример"
        
          
          <template>  <div class="card">    <h2 class="card__title"></h2>    <div class="card__content"></div>  </div></template>
          <template>
  <div class="card">
    <h2 class="card__title"></h2>
    <div class="card__content"></div>
  </div>
</template>

        
        
          
        
      

Как это понять

Секция статьи "Как это понять"

В <template> может храниться любая корректная HTML-разметка, в том числе стили и скрипты. Браузер будет проверять HTML-синтаксис, но содержимое тега <template> не будет отображаться на странице.

Если в шаблоне содержаться скрипты, они не выполнятся, а стили не применятся, пока содержимое шаблона не поместить на страницу.

Для того, чтобы использовать содержимое шаблона в документе нужен JavaScript.

Атрибуты

Секция статьи "Атрибуты"

К тегу <template> можно применить все глобальные атрибуты.

Как использовать

Секция статьи "Как использовать"

Тег <template> имеет свойство content, которое доступно только для чтения. По нему можно получить доступ к содержимому шаблона.

        
          
          if (document.createElement('template').content) {  /* Код выполнится, если браузер поддерживает <template> */} else {  /* Нужно придумать что-то другое */}
          if (document.createElement('template').content) {
  /* Код выполнится, если браузер поддерживает <template> */
} else {
  /* Нужно придумать что-то другое */
}

        
        
          
        
      

Наглядный пример

Секция статьи "Наглядный пример"

Имеем HTML-разметку с контейнером для списка покупок и шаблон элемента списка, завёрнутого в <template>:

        
          
          <div>  <h2>Список покупок</h2>  <ul class="list">  </ul>  <template id="template">    <li></li>  </template></div>
          <div>
  <h2>Список покупок</h2>
  <ul class="list">
  </ul>

  <template id="template">
    <li></li>
  </template>
</div>

        
        
          
        
      

Использование шаблона с помощью JavaScript:

        
          
          const list = document.querySelector('.list')const template = document.querySelector('#template')// Клонируем содержимое тега <template>const item = template.content.cloneNode(true)// Находим тег <li> и помещаем текст внутрьitem.querySelector('li').textContent = 'Молоко'// Вставляем склонированный контент на страницуlist.append(item)
          const list = document.querySelector('.list')
const template = document.querySelector('#template')

// Клонируем содержимое тега <template>
const item = template.content.cloneNode(true)

// Находим тег <li> и помещаем текст внутрь
item.querySelector('li').textContent = 'Молоко'

// Вставляем склонированный контент на страницу
list.append(item)

        
        
          
        
      

Подсказки

Секция статьи "Подсказки"

💡 В <template> могут находиться даже те теги, которые в обычной жизни не используются без родительского контейнера, такие как <li> или <tr>.

        
          
          <template>  <li></li></template><template>  <tr>    <td></td>  </tr></template>
          <template>
  <li></li>
</template>

<template>
  <tr>
    <td></td>
  </tr>
</template>