描述: 在Vue3中<Teleport> 是一个内置组件,使我们可以将一个组件的一部分模板“传送”到该组件的 DOM 层次结构之外的 DOM 节点中;现在在vue2实现一下效果:将组件挂载到body上

先看效果:

代码:

Teleport 组件:


<script>
export default {props: {to: {type: String,required: true},disabled: {type: Boolean,required: true}},inject: ['parent'],//   inject 选项应该是:// 一个字符串数组,或 一个对象,对象的 key 是本地的绑定名,value 是://     在可用的注入内容中搜索用的 key (字符串或 Symbol),或//     一个对象,该对象的://          from property 是在可用的注入内容中搜索用的 key (字符串或 Symbol)//          default property 是降级情况下使用的 value// Vue 选项中的 render 函数若存在,则 Vue 构造函数不会从 template 选项或通过 el 选项指定的挂载元素中提取出的 HTML 模板编译渲染函数。render() {return <div class="Teleport">{this.$scopedSlots.default()}</div>// $scopedSlots用来访问作用域插槽。对于包括 默认 slot 在内的每一个插槽,该对象都包含一个返回相应 VNode 的函数。},watch: {disabled() {if (!this.disabled) {// this指向组件的实例。$el指向当前组件的DOM元素。document.querySelector(this.to).appendChild(this.$el);} else {this.parent.toSourceDom(this.$el);}}},mounted() {if(!this.disabled) document.querySelector(this.to).appendChild(this.$el)},methods: {},
};
</script>
<style lang="scss" scoped>
.Teleport {width: 100%;height: 100%;
}
</style>

index.vue 中引用 Teleport.vue 组件

<template><div><Teleport v-if="isShow" :disabled="isTeleport" to="body"><div class="cover"><div class="inner">我是弹窗<div class="close" @click="closed">关闭按钮</div></div></div></Teleport><button @click="show">显示</button></div>
</template>
<script>
import Teleport from "./Teleport.vue";
import model from "./model.vue";
export default {data() {return {isShow: false, // 控制 Teleport 组件挂载时机isTeleport: false, // 控制什么时候被传送};},provide() {return {parent: this,};},components: { Teleport, model },methods: {show() {this.isShow = true;},closeModel() {this.isShow = false;},toSourceDom(dom) {document.getElementById("sourceBox").appendChild(dom);},},
};
</script>
<style lang="scss" scoped>
.cover {position: fixed;top: 0;left: 0;right: 0;bottom: 0;background: rgba($color: #000000, $alpha: 0.3);.inner {width: 500px;height: 300px;border-radius: 10px;background: #fff;color: red;font-weight: 600;position: absolute;left: 40%;top: 30%;text-align: center;font-size: 30px;.close{position: absolute;bottom: 0;right: 0;background: skyblue;padding: 10px;cursor: pointer;border-radius: 10px 0 0 0;}}
}
</style>

vue2实现传送门效果相关推荐

  1. Unity 之 ShaderGraph 实现旋涡(传送门)效果入门级教程

    Unity 之 ShaderGraph 实现旋涡[传送门]效果入门级教程 一,最终效果展示 二,创建PBRGraph 三,实现原理介绍 四,完整效果实现 五,应用到场景中 若你的工程还没有进行基础配置 ...

  2. Unity中用shader graph制作一个简单的传送门效果

    Unity中用shader graph制作一个简单的传送门效果 一.配置渲染管线 1.通过菜单"Asset" --> "Create" --> &q ...

  3. Vue2实现放大镜效果

    本文实例为大家分享了Vue2实现放大镜效果的具体代码,供大家参考,具体内容如下 一,需求描述 在使用vue进行项目开发时,需要通过鼠标在一定范围内滑动使项目图片放大以便于查看 步骤思路 对原图的显示空 ...

  4. 用Unity实现传送门效果(一)

    知乎专栏:游戏开发入门指南--Unity+ https://zhuanlan.zhihu.com/gdguide 大家好. 接下来的两篇内容,是用Unity来做传送门的效果.这里是用自己的方法来做的, ...

  5. 用Unity实现传送门效果

    大家好. 接下来的两篇内容,是用Unity来做传送门的效果.这里是用自己的方法来做的,中途踩了许多坑不过最终还是实现了.下面是效果图: 前半段内容几乎没有代码.主要是介绍一下实现的原理. 先不说如何打 ...

  6. Unity3d 传送门效果制作

    准备工作:.psd  或者.png 纹理图片1张 制作 材质球 :shader 选择如下:Particles/Additive 接下来制作 传送门的动画(field):修改的重点在于:对材质处理动画, ...

  7. unity 2D游戏实现传送门效果

    第一步:首先制作一个传送门的2D的图片(这个是我做的有点简陋大家可以拿去使用) 第二步:给传送门添加一个胶囊碰撞体 第三步:添加代码 public class Portal : MonoBehavio ...

  8. 【vue】 vue2 实现飘窗效果

    文章目录 具体效果 代码 注册使用 具体效果 飘窗效果 代码 Baywindow.vue <template><!-- 飘窗效果 --><divid="thed ...

  9. vue2简单实现一个传送门的效果

    今天,给大家分享一个有趣的技术,一个叫传送门的小组件实现,我们平时看直播的时候,直播软件上会有贴心的小窗口,今天我带大家就来实现一个传送门. 实现这个传送门我们借助三个插件大家先装好 分别为 西瓜视频 ...

最新文章

  1. iOS WebView的用法
  2. 机器学习快速截图工具matlab版本——文件夹批量处理(原创)
  3. JanusGraph: 可视化 Gephi 插件安装
  4. 零基础带你学习计算机网络—(四)
  5. 【leetcode】1053. Previous Permutation With One Swap
  6. IBM - 开拓语音识别 - 概述 - 中国
  7. 三丰三坐标编程基本步骤_日常皮肤护理的基本三步骤,问题皮肤不要作
  8. 塞班系统微信连接不上服务器,充满情怀的塞班系统:手机QQ、微信将无法登陆使用...
  9. 数电模电基础(1)分压电路
  10. 华为是不是培养人工智能人才花费最大的公司?
  11. 【APP自动化测试环境】安装jdk---安装android SDK---安装appium---安装node.js---安装夜神模拟器--调试appium连接夜神模拟器
  12. java date 减去5分钟_java里让一个date每次加5分钟等于另外一个指定的date
  13. Linux之旅 - 入⻔命令集 - 文件管理(1/2)
  14. 三星S8国行android 8,用户泪奔 三星S8系列国行获安卓8.0更新
  15. 金蝶软件各版本安装包下载地址(即时更新)
  16. DGraph的安装与使用
  17. 北京工作居住证续签流程条件及材料
  18. Build a project
  19. 2017开发语言排行(本人是搞C#+javascript的)
  20. 2018年中国互联网婚恋交友行业发展现状分析及未来发展趋势预测【转】

热门文章

  1. 【Unity3D 常用插件】Haste插件
  2. 办公效率该怎么提高呢?五个高效办公小技巧分享给你,职场的你必备的神器。
  3. 期望、方差的线性关系证明
  4. SLAM代码(SVO ros )
  5. 网络编程+go+java,Go语言中的TCP/IP网络编程
  6. python绘制多个散点图_绘制多个散点图熊猫
  7. 广域网技术(PAP和CHAP)
  8. P 算法与 K 算法
  9. 光流传感器 定位精度_光流传感器其它方面的应用
  10. c语言怎样控制键盘的方向键,c++怎么获取键盘的方向键