Vue自定义全局弹窗组件操作


Posted in Javascript onAugust 11, 2020

写在前面

页面中会有很多时候需要弹窗提示,我们可以写一个弹窗组件,但是如果每个页面都引入这个组件,太麻烦了,所以我们将它变成全局组件,需要用的时候直接通过JS调用即可,不需要在每个页面引入了

效果图

Vue自定义全局弹窗组件操作

弹窗组件

新建一个弹窗的组件——popup.vue

<template>
 <transition name='fade'>
  <!-- 蒙版 -->
  <div class="mask" v-if="show" @touchmove.prevent>
   <div class="window">
    <img class="shadow" :src="imgUrl" alt="">
    <h1>{{title}}</h1>
    <p>{{content}}</p>
    <button @click="btnClick">{{btnText}}</button>
   </div>
   <img @click="show = false" v-fb class="close" src="../../../pages/signin/dialog/images/关闭.png" alt="">
  </div>
 </transition>
</template>

<script>
export default {
 name: 'app',
 data () {
  return {
   show: false,
   imgUrl: '',
   title: '',
   content: '',
   btnText: '',
   click: ''
  }
 },
 created () {
 },
 methods: {
  btnClick () {
   this.click()
   this.show = false
  }
 }
}
</script>

<style lang="less" scoped>
 @import "../../../assets/css/minx/minx";
 @import "../../../assets/css/pixel/pixel";
 // 渐变过渡
 .fade-enter,
 .fade-leave-active {
  opacity: 0;
 }
 .fade-enter-active,
 .fade-leave-active {
  transition: opacity .35s;
 }
 // 全局弹窗
 .mask {
  .fixed;
  z-index: 10;
  background:rgba(0,0,0,0.65);
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
   padding: 75/75rem;
  .window{
   height: 400/75rem;
   width: 100%;
   background: #fff;
   border-radius:8px;
   text-align: center;
   .shadow{
    width: 270/75rem;
    margin-top: -90/75rem;
   }
   h1{
    margin-top: 32/75rem;
    font-size:32/75rem;
    color:#f1300b;
    line-height:32/75rem;
    font-weight: 600;
   }
   p{
    margin-top: 32/75rem;
    font-size:28/75rem;
    color:#222222;
    line-height:40/75rem;
   }
   button{
    margin-top: 34/75rem;
    background:#f95644;
    border-radius:10px;
    width:23/75remx;
    height:64/75rem;
    font-size:28/75rem;
    color:#ffffff;
   }
  }
  .close{
   width:60/75rem;
   height:60/75rem;
   margin-top: 40/75rem;
  }
 }
</style>

popup.js文件

新建一个popup.js文件,写方法

import Vue from 'vue'
import Popup from './popup.vue'
const PopupBox = Vue.extend(Popup)

Popup.install = function (data) {
 let instance = new PopupBox({
  data
 }).$mount()

 document.body.appendChild(instance.$el)

 Vue.nextTick(() => {
  instance.show = true
  // show 和弹窗组件里的show对应,用于控制显隐
 })
}
export default Popup

main.js引入popup.js

// 自定义全局弹窗组件
import Vue from 'vue'
import Popup from './components/dialog/popup'
Vue.prototype.$popup = Popup.install

组件中使用方法

methods: {
 btnClick () {
  this.$popup({
   imgUrl: require('../../../static/images/shadow.png'), // 顶部图片
   title: '我是标题',
   content: '我是内容',
   btnText: '我是按钮',
   click: () => {
    // 点击按钮事件
    this.$router.push('……')
   }
  })
 }
}

方便以后自己使用,大家也可以参考哦,也希望大家多多支持三水点靠木,谢谢~~

Javascript 相关文章推荐
javascript eval(func())使用示例
Dec 05 Javascript
js中function()使用方法
Dec 24 Javascript
JSON+HTML实现国家省市联动选择效果
May 18 Javascript
jQuery中dequeue()方法用法实例
Dec 29 Javascript
Javascript类型系统之undefined和null浅析
Jul 13 Javascript
angularjs实现文字上下无缝滚动特效代码
Sep 04 Javascript
javascript鼠标跟随运动3种效果(眼球效果,苹果菜单,方向跟随)
Oct 27 Javascript
微信小程序开发一键登录 获取session_key和openid实例
Nov 23 Javascript
vue中组件的过渡动画及实现代码
Nov 21 Javascript
Vue页面手动刷新,实现导航栏激活项还原到初始状态
Aug 06 Javascript
微信小程序通过websocket实时语音识别的实现代码
Aug 19 Javascript
微信小程序入门之指南针
Oct 22 Javascript
基于Vue全局组件与局部组件的区别说明
Aug 11 #Javascript
VUE使用 wx-open-launch-app 组件开发微信打开APP功能
Aug 11 #Javascript
vue实现图片按比例缩放问题操作
Aug 11 #Javascript
JavaScript中while循环的基础使用教程
Aug 11 #Javascript
vue-cli3 引入 font-awesome的操作
Aug 11 #Javascript
js实现列表按字母排序
Aug 11 #Javascript
Vue使用轮询定时发送请求代码
Aug 10 #Javascript
You might like
PHP图片上传类带图片显示
2006/11/25 PHP
一个基于phpQuery的php通用采集类分享
2014/04/09 PHP
PHP回溯法解决0-1背包问题实例分析
2015/03/23 PHP
PHP API接口必备之输出json格式数据示例代码
2017/06/27 PHP
thinkphp框架无限级栏目的排序功能实现方法示例
2020/03/29 PHP
PHP文件操作简单介绍及函数汇总
2020/12/11 PHP
Dom 结点创建 基础知识
2011/10/01 Javascript
使用JavaScript和C#中获得referer
2014/11/14 Javascript
JavaScript前端图片加载管理器imagepool使用详解
2014/12/29 Javascript
基于BootStrap的Metronic框架实现页面链接收藏夹功能按钮移动收藏记录(使用Sortable进行拖动排序)
2016/08/29 Javascript
js转html实体的方法
2016/09/27 Javascript
jQuery.Validate表单验证插件的使用示例详解
2017/01/04 Javascript
js实现消息滚动效果
2017/01/18 Javascript
JS实现数组按升序及降序排列的方法
2017/04/26 Javascript
AngularJS动态绑定ng-options的ng-model实例代码
2017/06/21 Javascript
详解Vue Elememt-UI构建管理后台
2018/02/27 Javascript
JavaScript强制类型转换和隐式类型转换操作示例
2019/05/01 Javascript
[51:26]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#3Secret VS OG第二局
2016/03/03 DOTA
python实现探测socket和web服务示例
2014/03/28 Python
Python无损音乐搜索引擎实现代码
2018/02/02 Python
python+ffmpeg视频并发直播压力测试
2018/03/06 Python
对Python3 序列解包详解
2019/02/16 Python
python制作填词游戏步骤详解
2019/05/05 Python
Python寻找路径和查找文件路径的示例
2019/07/10 Python
Django CBV模型源码运行流程详解
2020/08/17 Python
thinkphp5 redis缓存新增方法实例讲解
2021/03/24 PHP
临床医学专业毕业生的自我评价
2013/10/17 职场文书
酒店执行总经理岗位职责
2013/12/15 职场文书
运动会通讯稿300字
2014/02/02 职场文书
《植物妈妈有办法》教学反思
2014/02/25 职场文书
婚庆司仪主持词
2014/03/15 职场文书
旅游饭店管理专业自荐书
2014/06/28 职场文书
讲党性心得体会
2014/09/03 职场文书
合同和协议有什么区别?
2014/10/08 职场文书
2014年医院工作总结
2014/11/20 职场文书
Python极值整数的边界探讨分析
2021/09/15 Python