<Teleport> 传送到其他 DOM 位置
最后更新:2026-10-22
<Teleport> 传送到其他 DOM 位置
| 分组 | 内置组件与元素 |
|---|---|
| 类型 | 组件/元素 |
| 作用域 | 模板 |
| Vue 版本 | 3.0+ |
| SSR 支持 | 支持 |
📝 语法
<Teleport to="body">
<div class="modal">弹窗内容</div>
</Teleport>
⚙️ 参数
| props | to(CSS 选择器或元素)/ disabled(禁用传送) |
|---|
▶ 示例
修改下面的代码,在预览区实时查看效果:
输出:
点按钮后弹窗挂在 body 下(不再受 #app 容器约束)。
💡 要点
ℹ️ 说明 逻辑上仍是组件的子节点: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",先确保目标元素存在。