HTML-тег <шаблон>
HTML-тег
<template>
используется для определения фрагмента HTML-контента, который не отображается сразу при загрузке страницы. Вместо этого его можно клонировать и динамически вставить в DOM с помощью JavaScript. Это делает тег
<template>
идеальным для повторно используемых компонентов, плейсхолдеров контента и динамического рендеринга контента.
Содержимое элемента
<template>
по умолчанию неактивно, то есть оно не отображается и не выполняется до тех пор, пока им явно не манипулируют с помощью JavaScript.
Базовый синтаксис тега HTML <template>
Базовая структура тега
<template>
следующая:
<template>
HTML content goes here.
</template>
Содержимое тега
<template>
сохраняется, но не отображается, пока не будет активировано с помощью JavaScript.
Пример использования тега <template>
Вот простой пример динамической визуализации контента с использованием тега
<template>
:
<!DOCTYPE html>
<html>
<body>
<h2>Dynamic Content with Template</h2>
<button onclick="addItem()">Add Item</button>
<ul id="item-list"></ul>
<template id="item-template">
<li>This is a template item.</li>
</template>
<script>
function addItem() {
const template = document.getElementById('item-template');
const clone = template.content.cloneNode(true);
document.getElementById('item-list').appendChild(clone);
}
</script>
</body>
</html>
Пояснение:
Нажатие кнопки «Добавить элемент» клонирует содержимое
<template>
и динамически добавляет его в список.
Атрибуты HTML-тега <template>
-
Глобальные атрибуты:
поддерживает все глобальные атрибуты, такие как
id,classиstyle. -
Атрибуты событий:
могут включать атрибуты событий, такие как
onclick, но они неактивны, пока шаблон не будет отображен в DOM.
Пример с шаблонами форм
Шаблоны полезны для динамического создания элементов формы:
<!DOCTYPE html>
<html>
<body>
<h2>Dynamic Form Template</h2>
<button onclick="addField()">Add Field</button>
<form id="dynamic-form"></form>
<template id="field-template">
<div>
<label>Name:</label>
<input type="text" name="name" required>
</div>
</template>
<script>
function addField() {
const template = document.getElementById('field-template');
const clone = template.content.cloneNode(true);
document.getElementById('dynamic-form').appendChild(clone);
}
</script>
</body>
</html>
Пояснение:
Нажатие кнопки «Добавить поле» динамически добавляет новые поля ввода в форму, используя содержимое
<template>
.
Стилизация содержимого <template>
Вы можете стилизовать содержимое шаблона после его отображения в DOM. Вот пример:
<!DOCTYPE html>
<html>
<head>
<style>
.template-item {
background-color: #f0f0f0;
padding: 10px;
margin: 5px 0;
border: 1px solid #ddd;
}
</style>
</head>
<body>
<h2>Styled Template Example</h2>
<button onclick="addStyledItem()">Add Styled Item</button>
<ul id="styled-list"></ul>
<template id="styled-template">
<li class="template-item">This is a styled template item.</li>
</template>
<script>
function addStyledItem() {
const template = document.getElementById('styled-template');
const clone = template.content.cloneNode(true);
document.getElementById('styled-list').appendChild(clone);
}
</script>
</body>
</html>
Результат: каждый динамически добавленный элемент оформляется светлым фоном, отступами и рамкой.
Практическое применение тега <template>
- Повторно используемые компоненты: создавайте шаблоны для повторяющегося контента, например списков, карточек или виджетов.
- Динамические формы: добавляйте поля формы динамически на основе взаимодействия с пользователем.
- Контент, управляемый данными: динамическая визуализация HTML-структур путем извлечения и обработки данных с помощью JavaScript.
- Улучшенная производительность: используйте шаблоны для предварительной загрузки скрытого или условного контента для последующего рендеринга.