Перейти к содержимому

HTML-тег <template>

Тег <template> используется для хранения фрагментов HTML-кода, которые можно клонировать и вставлять в HTML-документ.

Содержимое тега скрыто от пользователей. Оно хранится на стороне клиента. Оно неактивно, пока не будет активировано с помощью JavaScript.

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

Шаблоны можно размещать в любом месте внутри <head> или <body>, и они могут содержать любой тип контента, разрешенный в этих элементах.

Тег <template> является новым элементом в HTML5.

Всё содержимое элемента <template> парсится как обычный HTML. Однако есть несколько исключений:

  • Оно не отображается.
  • Теги <script> внутри него не выполняются.
  • Теги <style> внутри него не обрабатываются.
  • Внешние ресурсы не отображаются.
  • Содержимое этого элемента не считается частью документа. Если на основной странице используется document.getElementById() или querySelector(), дочерние узлы шаблона не будут найдены.

Синтаксис

Тег <template> является парным. Содержимое записывается между открывающим (<template>) и закрывающим (</template>) тегами.

Пример использования HTML-тега <template>:

Пример использования HTML-тега <template>

html
<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
  </head>
  <body>
    <h1>This is a heading.</h1>
    <p>
     <q>If you tell the truth, you don't have to remember anything.</q>
      ― Mark Twain
    </p>
    <template>
      <h2>This is a second heading.</h2>
      <p>
        “I'm selfish, impatient and a little insecure. I make mistakes, I am out of control and at times hard to handle. But if you can't handle me at my worst, then you sure as hell don't deserve me at my best.”
        ― Marilyn Monroe
      </p>
    </template>
  </body>
</html>

Пример использования HTML-тега <template> с JavaScript:

Пример использования HTML-тега <template> с JavaScript:

html
<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
  </head>
  <body>
    <template id="myTemplate">
      <p>Template content</p>
    </template>
    <div id="normalContent">
      <p>First paragraph</p>
    </div>
    <!-- JavaScript function clones the template and adds it to the document. -->
    <button onclick="useTemplate();">Show content</button>
    <script>
      function useTemplate() {
        const myTemplate = document.getElementById('myTemplate');
        const normalContent = document.getElementById('normalContent');
        const clonedTemplate = myTemplate.content.cloneNode(true);
        normalContent.appendChild(clonedTemplate);
      }
    </script>
  </body>
</html>

Результат

пример работы тега template

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

Практика

В чём заключается функциональность HTML-тега '<template>' и как он используется?

Считаете ли это полезным?

Предпросмотр dual-run — сравните с маршрутами Symfony на продакшене.