
こんにちは!静岡県浜松市でWEBデザイナーをしています小瀧です。
今回はWeb制作の現場で地味だけどめちゃくちゃ便利な「<template>要素」について、応用的な使い方をご紹介します。
「コンポーネントのようにHTMLを使い回したい…」
「リスト表示やカード生成を効率よく管理したい…」
そんなときに活躍するのが、HTMLの<template>要素 × JavaScriptの組み合わせです。
<template>要素とは?
<template id="card-template">
<div class="card">
<h3></h3>
<p></p>
</div>
</template>
このように定義された <template> 要素は、HTMLとしてDOMに読み込まれますが表示されません。
しかも、中身はJavaScriptから動的に複製・加工が可能。
VueやReactのようなコンポーネントフレームワークを使わなくても、ちょっとした再利用に重宝します。
主な特徴
- ブラウザに描画されないため初期表示に影響なし
- JavaScriptで .contentを使って複製・変更できる
- JavaScript内でDOM構築を一から書かずに済む
基本的な使い方:カードの複製
次のように、カードのテンプレートをHTML側に定義し、JavaScriptで複製・挿入します。
See the Pen
Untitled by 小瀧賢 (@ekwwawpb-the-styleful)
on CodePen.
これだけで、HTMLを複製しながら内容だけ差し替えるUIが完成します。
実用性も高く、読み込み速度にも優れています。
応用テク:ユーザー入力からカードを生成
次に、ユーザーがフォームから送信した内容をもとに、<template> を使ってリアルタイムに表示する例です。
See the Pen
Untitled by 小瀧賢 (@ekwwawpb-the-styleful)
on CodePen.
VueやReactに頼らずとも、テンプレートを用いた軽量なリアクティブUIが実現可能です。
注意点:templateはJS必須
<template> 要素は、HTMLとして読み込まれてもDOMに表示されません。
また、CSSによる制御や :hover などのスタイル適用もできません。
- JavaScriptで .content.cloneNode(true) を使って展開する
- VueやReactのようにテンプレート機能をラップしない
- JavaScriptが無効な環境では表示されない
という前提を理解して使うことが重要です。
まとめ
<template> 要素は、軽量かつ柔軟にUIを複製・管理できる便利な仕組みです。
特に「似た構造を何度も出力したい」「JavaScriptで生成するHTMLの見通しをよくしたい」という場面で活躍します。
- テンプレートHTMLをあらかじめ埋め込める
- JavaScriptで動的に複製・内容の変更が可能
- フレームワークがなくても効率の良いDOM構築ができる
VueやReactを導入するほどではないけど、UIをもっと柔軟に扱いたい方に最適な技術です。
あなたの制作に、ぜひ取り入れてみてください!













