トップページ  > HTML Living Standard  > <template>

★HTML Living Standard リファレンス

<template> …… テンプレートを表す
Internet Explorer Microsoft Edge Google Chrome Safari Firefox Opera
広告

<template>タグは、テンプレートを表す際に使用します。

template要素は、スクリプトで作成しデータをドキュメントに挿入するためのテンプレートを宣言します。 ここでいうテンプレートとはHTMLコードの断片のことです。

template要素の内側に記述されるマークアップは、template要素の子要素ではありません。 それは、あくまでもテンプレートとして宣言されたHTMLコードの断片に過ぎません。

template要素自体は、レンダリングでは何も表しません。

■属性

shadowrootmode属性
ストリーミングを有効にするかどうかを指定します。 shadowrootmode属性の値には、以下のキーワードを指定できます。 初期値はnone状態です。
  • open …… template要素は、オープン型シャドウルートを表します。
  • closed …… template要素は、クローズ型シャドウルートを表します。
shadowrootdelegatesfocus属性
シャドウルートにデリゲートフォーカスをセットします。初期値はfalseです。
shadowrootclonable属性
シャドウルートをクローン可にします。初期値はfalseです。

■使用例

以下のサンプルは、template要素を使用して「 <p>Smile!</p> 」というテンプレートを宣言しています。 template要素内のp要素は、DOMにおけるtemplate要素の子要素ではなく、あくまでも宣言されたテンプレートに過ぎません。

HTMLソース

<!doctype html>
<html lang="en">
 <head>
  <title>Homework</title>
 <body>
  <template id="template"><p>Smile!</p></template>
  <script>
   let num = 3;
   const fragment = document.getElementById('template').content.cloneNode(true);
   while (num-- > 1) {
     fragment.firstChild.before(fragment.firstChild.cloneNode(true));
     fragment.firstChild.textContent += fragment.lastChild.textContent;
   }
   document.body.appendChild(fragment);
  </script>
</html>
↓↓↓

ブラウザ上の表示

別画面で開く

■使用例

以下のサンプルは、template要素でテンプレートを用意して、 そこへスクリプトのfor文によるループ処理でデータを流し込んでいます。

HTMLソース

<!DOCTYPE html>
<html lang="ja">
<meta charset="UTF-8">
<title>猫のデータ</title>

<script>
 var data = [
   { name: 'モモ', color: 'ハチワレ', sex: 'メス' },
   { name: 'おはぎ', color: 'キジトラ', sex: 'オス' },
 ];
</script>

<table>
 <thead>
  <tr>
   <th>名前 <th>毛色 <th>性別
 <tbody>
  <template id="row">
   <tr><td><td><td><td>
  </template>
</table>

<script>
 var template = document.querySelector('#row');
 for (var i = 0; i < data.length; i += 1) {
   var cat = data[i];
   var clone = template.content.cloneNode(true);
   var cells = clone.querySelectorAll('td');
   cells[0].textContent = cat.name;
   cells[1].textContent = cat.color;
   cells[2].textContent = cat.sex;
   template.parentNode.appendChild(clone);
 }
</script>

</html>
↓↓↓

ブラウザ上の表示

別画面で開く

■関連項目

  • <script> …… スクリプトを表す
  • <noscript> …… スクリプトが無効な環境向けの内容を表す
  • <template> …… テンプレートを表す
  • <slot> …… データの差し込みスロットを表す
広告
Sponsors
広告
MuuMuu Domain!
ドメイン取るならお名前.com
現役エンジニアのオンライン家庭教師【CodeCamp】
サイトに広告を掲載してお小遣いが稼げる!【A8.net】
Node.jsコース
はじめてのプログラミングコース
▲ページ先頭へ
HTMLクイックリファレンスについて
© HTMQ