<template> - テンプレート
目次
概要
- 形式
<template>
~</template>
- サポート
- https://caniuse.com/template
- カテゴリ
- メタデータコンテンツ
- フローコンテンツ
- フレージングコンテンツ
- スクリプトサポート要素
- 親要素
- メタデータコンテンツ, フレージングコンテンツ, スクリプトサポート要素 を子要素に持てるもの
span属性を持たない colgroup要素
- 子要素
- フローコンテンツ, メタデータコンテンツ
ol, ul, dl, figure, ruby, object, video, audio, table, colgroup, thead, tbody, tfoot, tr, fieldset, select, detail, menu(ポップアップ)要素の子要素
- タグの省略
- 開始タグ:必須 / 終了タグ:必須
- 属性
- グローバル属性
- shadowrootmode
- shadowrootdelegatesfocus
- shadowrootclonable
- shadowrootserializable
説明
template は、スクリプトで利用される要素のテンプレートを定義する際に用いられます。
<template>
~</template>
で囲まれたコンテンツは、ページを表示した際には表示されません。JavaScript 等のスクリプトの中で複製し、値を設定し、挿入することで表示されるようになります。
属性
- グローバル属性
- 詳細は グローバル属性 を参照してください。
- shadowrootmode
- LS
- テンプレートを自動的に Shadow Root として生成し、親要素にアタッチします。詳細は「宣言的Shadow DOM」を参照してください。値には open または closed を指定します。open は外部の JavaScript からのアクセスを許可し、closed は拒絶します。(→ サポート状況)
- shadowrootdelegatesfocus
- LS
- Shadow Root にフォーカスが移動した時、Shadow Root 内で最初のフォーカス可能な要素にフォーカス移動します。値は不要です。(→ サポート状況)
- shadowrootclonable
- LS
- Shadow Root がクローン可能であることを示します。値は不要です。(→ サポート状況)
- shadowrootserializable
- LS
- Shadow Root がシリアライズ可能であることを示します。値は不要です。(→ サポート状況)
使用例
下記の例では、テーブルの 1行に対応するテンプレートを定義しておき、JavaScript の中でテンプレートを複製(clone)し、値を設定し、tbody要素に挿入することで、テーブルの各行を生成しています。
HTML
<!DOCTYPE html>
<html>
<head>
<title>Template sample</title>
</head>
<body>
<table>
<thead>
<tr>
<th>Name</th><th>Age</th></tr>
</tr>
</thead>
<tbody>
<template id="row">
<tr><td></td><td></td></tr>
</template>
</tbody>
</table>
<script>
var data_list = [
{ name: 'Yamada', age: 26 },
{ name: 'Tanaka', age: 32 },
];
var template = document.querySelector('#row');
data_list.forEach((data) => {
var clone = template.content.cloneNode(true);
var cells = clone.querySelectorAll('td');
cells[0].textContent = data.name;
cells[1].textContent = data.age;
template.parentNode.appendChild(clone);
});
</script>
</body>
</html>
表示
Name | Age |
Yamada | 26 |
Tanaka | 32 |
上記では JavaScript でデータのマッピングを行っていますが、<slot>
要素と slot 属性を用いてマッピングを行うこともできます。詳細は Shadow DOM を参照してください。
リンク
Copyright (C) 2015-2024 杜甫々
初版:2015年1月17日 最終更新:2024年7月14日
https://www.tohoho-web.com/html/template.htm