<template> - テンプレート

トップ > HTMLリファレンス > <template>

概要

形式
<template>~</template>
サポート
LS / H5 / Ch26 / Fx22 / Sa7.1 / Op15
カテゴリ
メタデータコンテンツ
フローコンテンツ
フレージングコンテンツ
スクリプトサポート要素
親要素
メタデータコンテンツ, フレージングコンテンツ, スクリプトサポート要素 を子要素に持てるもの
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>


表示
NameAge
Yamada26
Tanaka32

上記では JavaScript でデータのマッピングを行っていますが、<slot> 要素と slot 属性を用いてマッピングを行うこともできます。詳細は Shadow DOM を参照してください。

関連項目

<script>, <slot>, slot, Shadow DOM

リンク


Copyright (C) 2015-2024 杜甫々
初版:2015年1月17日 最終更新:2024年7月14日
http://www.tohoho-web.com/html/template.htm