什么是Teleport?——
Teleport
是一种能够将我们的组件html结构移动到指定位置的技术。语法:
<teleport to="移动位置"> <div v-if="isShow" class="mask"> <div class="dialog"> <h3>我是一个弹窗</h3> <button @click="isShow = false">关闭弹窗</button> </div> </div> </teleport>
这里的移动位置可以是body,也可以是某些css选择器
例子:
将dialog从son组件中传送到html标签下,传送给body就好了,这样dialog就可以相对于全局进行绝对定位了
<template> <div> <button @click="isShow = true">点我弹个窗</button> <teleport to="body"> <div v-if="isShow" class="mask"> <div class="dialog"> <h3>我是一个弹窗</h3> <h4>一些内容</h4> <h4>一些内容</h4> <h4>一些内容</h4> <button @click="isShow = false">关闭弹窗</button> </div> </div> </teleport> </div> </template> <script> import { ref } from "vue"; export default { name: "Dialog", setup() { let isShow = ref(false); return { isShow }; }, }; </script> <style> .mask { position: absolute; top: 0; bottom: 0; left: 0; right: 0; background-color: rgba(0, 0, 0, 0.5); } .dialog { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); text-align: center; width: 300px; height: 300px; background-color: green; } </style>
解释:
参考链接:
https://www.bilibili.com/video/BV1Zy4y1K7SH?p=166&spm_id_from=pageDriver