我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Vue中代码传送(teleport)的实现

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Vue中代码传送(teleport)的实现

代码传送是啥

在Vue中,代码传送就是将某部分的代码从Vue的template标签下传送到指定的地方,这个地方通常是body标签下。在使用Vue编写界面时,我们都是在html的Body中写一个div,然后指定一个id,然后在Vue的实例中的template中写我们的界面代码,然后由Vue来帮我们将templte中的dom元素渲染到界面上。如下所示:

<!DOCTYPE html>
<html lang="en">
<head>
...
</head>
<body>
    <div id="root"></div>
</body>
<script>

 const app = Vue.createApp({
        template: 
        `
        <div>
          ...界面描述
        </div>
        `
    });

    const vm = app.mount('#root');
</script>

从上面的代码可知,我们在Vue实例的template标签中渲染的dom元素都会挂载到body中的id为root的div下面,如下图:

这样本来已经能够完成大部分界面描述需求了,但是有种场景需要我们去解决,那就是比如我们删除一个内容时,为了防止是用户的误触,会弹出一个对话框,然后对话框背后会有一个铺满整个窗口的蒙层。假设我们的展示内容的div很小,这时蒙层就只能展示到我们当前的div中,如下图:

点击显示蒙层的按钮后:

我们发现,这个蒙层无法覆盖所有窗口的区域,这很明显是不符合需求,因为我们所有的界面代码都会被挂载到body标签中的id="root"的div中,如果这个div下的界面的大小被固定了,那么蒙层的大小就会被限制,蒙层的做法我们最好放到body标签中,这样蒙层就不会收到父DIV的大小限制了。那我们的代码都是在template中编写的,如何将其传送到body标签下呢,这就是本文的内容teleport.

实例解析

为了展示Vue传送的例子,我们在界面的中心写了一个绿色的块,代表我们的UI,有一个按钮,点击后显示蒙层。如下图所示:

这个需求就可以使用代码传送的技术实现,代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>传送门</title>
    <style>
        .area{
            position: absolute;
            left: 50%;
            top: 50%;
            transform: translate(-50%,-50%);
            width: 200px;
            height: 300px;
            background: green;
        }

        .mask{
           position: absolute;
           left: 0;
           top: 0;
           right: 0;
           bottom: 0;
           background: #000;
           opacity: 0.5;
           color: #ffff;
           font-size: 100px;
        }
    </style>
    <script class="lazy" data-src="https://unpkg.com/vue@next"></script>
</head>
<body>
    <div id="root"></div>
    <div id="hello"></div>
</body>
<script>

 const app = Vue.createApp({
    data(){
        return{
            show:false,
            message:'hello world'
        }  
    },
    methods:{
        handleClick(){
            this.show = !this.show;
        }
    },
        template: 
        `
        <div class="area">
            <button @click="handleClick">点击显示蒙层</button>
         <teleport to="#hello">
                <div class="mask" v-show="show">
                    {{message}}
                    <div>海塔灯</div>
                </div>
        </teleport>
     
        </div>
        `
    });

    const vm = app.mount('#root');
</script>

运行结果:

我们可以看到,在template下定义的蒙层代码就被传送到body标签下了,传送代码的实现也很简单,就是使用

<teleport to="#hello">要传送的内容</teleport>

在teleport标签上,可以是用to="标签或者是id",假设要传送到body下,就使用to="body",要传送到指定的id对应的div下就使用 to="#id名称"的形式

到此这篇关于Vue中代码传送(teleport)的实现的文章就介绍到这了,更多相关Vue 代码传送内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Vue中代码传送(teleport)的实现

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Vue中代码传送(teleport)的实现

本文主要介绍了Vue中代码传送(teleport)的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-05-16

Vue使用axios发送请求简单实现代码

axios是一个基于Promise的,发送http请求的一个工具库,并不是vue中的第三方插件,使用时不能通过“Vue.use()”安装插件,需要在原型上进行绑定
2023-05-14

Mybatis 传输List的实现代码

1. 当查询的参数只有一个时findByIds(List ids)
2023-05-31

Vue实现文件切片上传功能的示例代码

在实际开发项目过程中有时候需要上传比较大的文件,然后呢,上传的时候相对来说就会慢一些,so,后台可能会要求前端进行文件切片上传。本文介绍了Vue实现文件切片上传的示例代码,需要的可以参考一下
2022-11-13

vue实现父子组件间传值的代码怎么写

今天小编给大家分享一下vue实现父子组件间传值的代码怎么写的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。先定义一个子组件,在
2023-07-04

node+vue实现用户注册和头像上传的实例代码

最近正好空闲,写了个实用注册代码,分享给大家,有需要的朋友可以了解一下数据库我使用的是MongoDB。 首先做文件上传,要保证协议里面的'Content-Type'为'multipart/form-data'。 注册的步骤:将用户名密码,图
2022-06-04

vue传值的编码和解码怎么实现

本文小编为大家详细介绍“vue传值的编码和解码怎么实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“vue传值的编码和解码怎么实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。vue传值的编码和解码第一步:传值
2023-07-02

Android中利用App实现消息推送机制的代码

1.消息推送机制 服务器器端需要变被动为主动,通知客户一些开发商认为重要的信息,无论应用程序是否正在运行或者关闭。 我想到了一句话:don't call me,i will call you! qq今天在右下角弹出了一个对话框:"奥巴马宣布
2022-06-06

Vue实现自定义视频和图片上传的示例代码

这篇文章主要为大家详细介绍了如何通过Vue实现自定义视频和图片上传的功能,文中的示例代码简洁易懂,感兴趣的小伙伴可以跟随小编一起学习一下
2023-05-17

Android接收和发送短信的实现代码

Android收到短信时会广播android.provider.Telephony.SMS_RECEIVED消息,因此只要定义一个Receiver,收听该消息,就能接收短信。2022-06-06

编程热搜

目录