<slot>:ウェブコンポーネントで独自に扱える枠を提供する要素・HTMLタグの解説

取り扱い 標準仕様
カテゴリー フロー・コンテンツ
フレージング・コンテンツ
親にできる要素 フレージング・コンテンツを受け入れる要素
子にできる要素 トランスパレント・コンテンツ
対応ブラウザ caniuseで確認

<slot>タグの解説

<slot>は、ウェブコンポーネントを使ってDOMツリーを構築した祭、独自に扱える枠を提供します。この要素が配置された箇所は差し替え可能なプレースホルダーとなり、範囲に記述された内容はブラウザがスロットに対応していない場合の代替テキストになります。

基本的には、<template>と組み合わせて記述します。この要素のname属性に指定された値が、呼び出し側の要素のslot属性の値と連動し、書き換えを可能にします。

ウェブコンポーネントに対応していない環境では、<slot>に囲われた内容が代替コンテンツとして表示されます。

<slot>タグの特徴

  • レイアウトの初期値はインラインです。文章の改行には影響を与えません。
  • 視覚的な効果は特に与えられません。必要に応じてスタイルシートを調整して下さい。
  • 同一のページ内に複数使うことができます。ただし、この要素自体を入れ子にすることはできません。

<slot>要素に指定できる属性

name
スロットの名前を指定します。
グローバル属性
全てのHTML要素に指定できる共通の属性です。詳細は一覧表で解説します。
イベントハンドラ
全てのHTML要素に指定できるコンテンツ属性です。

<slot>要素の使い方とサンプルコード

この要素の最も基本的な書き方は以下の通りです。name属性の値は、他の要素に付与されたslot属性から参照するために使われます。


<p>
	<slot name="name">代替テキスト</slot>
</p>

このタグを使ったマークアップのサンプルです。


<template id="temp_sample">
<style>
h1 {
	margin: 1em 0;
	padding-bottom: 0.5em;
	border-bottom: 1px solid #eee;
	font-size: 1.5rem;
}
.contents {
	font-size: 1rem;
}
</style>

<h1>
	<slot name="temp_h1">タイトル</slot>
</h1>
<div class="contents">
	<slot name="temp_c1">
		<p>コンテンツ</p>
	</slot>
</div>
</template>
 
<div id="sample">
	<span slot="temp_h1">置き換え文字</span>
	<p slot="temp_c1">置き換えコンテンツ</p>
</div>

<slot>に関連するHTMLタグ

オブジェクトやスクリプトを埋め込む要素
<img> 画像ファイルを読み込む
<picture> 画像に対して複数のリソースを提供可能なコンテナを配置する
<figure> 写真や図表などの自己完結した要素を表す
<figcaption> 参照される写真や図表にキャプションを追加する
<canvas> スクリプトで描かれたグラフィックやアニメーションを表示する
<audio> ページに音声コンテンツを埋め込む
<video> ページに動画コンテンツを埋め込む
<source> 再生候補となる動画や音源などのメディアソースを指定する
<track> 音声や動画コンテンツにテキストトラックを提供する
<embed> 外部コンテンツを埋め込む
<object> 外部リソースのオブジェクトを埋め込む
<param> パラメーターを指定する
<script> HTMLで実行可能なスクリプトを埋め込む
<noscript> スクリプトが動作しない環境での表示内容を指定する
<meter> 規定範囲内の数量や測定値を表す
<progress> 作業の進捗状況を示すプログレスバーを表示する
<output> 計算結果やユーザーアクションの出力欄を作成する
<dialog> 任意のタイミングで開くダイアログボックスを作成する
<template> ページ読み込み後にスクリプトの実行によって挿入可能な要素を定義する
<slot> ウェブコンポーネントで独自に扱える枠を提供する