<Teleport> 別の DOM 位置へテレポートする
最終更新:2026-10-22
<Teleport> 別の DOM 位置へテレポートする
| グループ | ビルトイン |
|---|---|
| 種類 | コンポーネント・要素 |
| スコープ | テンプレート |
| Vue バージョン | 3.0+ |
| SSR 対応 | 対応 |
📝 構文
<Teleport to="body">
<div class="modal">モーダルの内容</div>
</Teleport>
⚙️ 引数
| props | to(CSS セレクターまたは要素)/ disabled(テレポートの無効化) |
|---|
▶ 例
以下のコードを編集して結果を確認しましょう:
出力:
The modal mounts under body, escaping the #app container.
💡 ポイント
ℹ️ 補足 論理的には依然としてコンポーネントの子ノードです。props、イベント、provide / inject の関係は変わりません。
💡 ヒント body や専用のレイヤーコンテナへのテレポートを優先すると、親の overflow / z-index による干渉を避けられます。
ℹ️ 補足 複数の Teleport の目標順序は v-if で制御できます。disabled を使うと一時的にその場に描画されます。
🏷️ 関連ビルトイン
💡 関連ケース
関連ケースは近日公開予定。
📚 関連チュートリアル
❓ よくある質問
Q モーダルが切り取られるのはなぜですか?
A 親コンテナに overflow:hidden があるか、transform が新しい重なりコンテキストを作っているためです。body へテレポートすれば回避できます。
Q イベントはまだコンポーネントツリーへバブルしますか?
A DOM イベントは実際の DOM に沿ってバブルしますが、Vue のコンポーネントイベントやリアクティブな関係は変わりません。
Q 指定したコンテナへ送れますか?
A 送れます。to="#modal-root" と書きます。対象の要素が先に存在することを確認してください。