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编程开发中的五个实用小技巧
Jul 22 Javascript
从jQuery.camelCase()学习string.replace() 函数学习
Sep 13 Javascript
使用jquery实现图文切换效果另加特效
Jan 20 Javascript
innerHTML在IE中报错解决方案
Dec 15 Javascript
DOM基础教程之事件对象
Jan 20 Javascript
JavaScript仿微信打飞机游戏
Jul 05 Javascript
jQuery常见面试题之DOM操作详析
Jul 05 jQuery
20道JS原理题助你面试一臂之力(必看)
Jul 22 Javascript
vuejs移动端实现div拖拽移动
Jul 25 Javascript
layer.open 获取不到表单信息的解决方法
Sep 26 Javascript
JavaScript制作3D旋转相册
Aug 02 Javascript
vue实现简单跑马灯效果
May 25 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+FLASH实现上传文件进度条相关文件 下载
2007/07/21 PHP
PHP中使用imagick实现把PDF转成图片
2015/01/26 PHP
学习YUI.Ext基础第一天
2007/03/10 Javascript
Javascript Tab 导航插件 (23个)
2009/06/11 Javascript
用document.documentElement取代document.body的原因分析
2009/11/12 Javascript
jQuery的强大选择器小结
2009/12/27 Javascript
jQuery.fn和jQuery.prototype区别介绍
2013/10/05 Javascript
JQuery中使文本框获得焦点的方法实例分析
2015/02/28 Javascript
JavaScript检测并限制复选框选中个数的方法
2015/08/12 Javascript
js仿支付宝填写支付密码效果实现多方框输入密码
2016/03/09 Javascript
基于原生JS实现图片裁剪
2016/08/01 Javascript
Vuejs第六篇之Vuejs与form元素实例解析
2016/09/05 Javascript
用Vue-cli搭建的项目中引入css报错的原因分析
2017/07/20 Javascript
JavaScript学习笔记之惰性函数示例详解
2017/08/27 Javascript
微信小程序仿朋友圈发布动态功能
2018/07/15 Javascript
vue 利用路由守卫判断是否登录的方法
2018/09/29 Javascript
jsonp跨域获取百度联想词的方法分析
2019/05/13 Javascript
python使用wxpython开发简单记事本的方法
2015/05/20 Python
Python爬虫实现抓取京东店铺信息及下载图片功能示例
2018/08/07 Python
在python中实现将一张图片剪切成四份的方法
2018/12/05 Python
python使用PyQt5的简单方法
2019/02/27 Python
tensorflow的计算图总结
2020/01/12 Python
python数字类型math库原理解析
2020/03/02 Python
使用PyCharm官方中文语言包汉化PyCharm
2020/11/18 Python
利用CSS3实现动态的二级三级菜单效果实例源码
2017/01/04 HTML / CSS
HTML5 Canvas的常用线条属性值总结
2016/03/17 HTML / CSS
Spartoo比利时:欧洲时尚购物网站
2017/12/06 全球购物
施华洛世奇匈牙利官网:SWAROVSKI匈牙利
2019/07/06 全球购物
27个经典Linux面试题及答案,你知道几个?
2013/01/10 面试题
财务分析个人的自荐书范文
2013/11/24 职场文书
秋游活动策划方案
2014/02/16 职场文书
Python爬虫基础之初次使用scrapy爬虫实例
2021/06/26 Python
javascript实现计算器功能详解流程
2021/11/01 Javascript
Golang Elasticsearches 批量修改查询及发送MQ
2022/04/19 Golang
详解OpenCV曝光融合
2022/04/29 Python
Zabbix对Kafka topic积压数据监控的问题(bug优化)
2022/07/07 Servers