前言

本文主要介绍弹窗的代码,包括前端、js、css样式,以及点击按钮调用弹窗的过程详解。

步骤如下:

step1 创建一个弹窗

Modal.vue

template

<template><div class="modal-bg" v-show="show" @mousemove="modalMove" @mouseup="cancelMove"><div class="modal-container"><div class="modal-header" @mousedown="setStartingPoint">{{ title }}</div><div class="modal-main"><slot></slot><p>弹窗里面</p></div><div class="modal-footer"><el-button round @click="cancel">取消</el-button><el-button type="primary" round @click="submit">确认</el-button></div></div></div>
</template>

script

<script>export default {name: 'Modal',props: {show: {type: Boolean,default: false},title: {type: String,default: '弹窗'},},data() {return {x: 0,y: 0,node: null,isCanMove: false}},mounted() {this.node = document.querySelector('.modal-container')},methods: {cancel() {this.$emit('cancel')},submit() {this.$emit('submit')},setStartingPoint(e) {this.x = e.clientX - this.node.offsetLeftthis.y = e.clientY - this.node.offsetTopthis.isCanMove = true},modalMove(e) {if (this.isCanMove) {this.node.style.left = e.clientX - this.x + 'px'this.node.style.top = e.clientY - this.y + 'px'}},cancelMove() {this.isCanMove = false}}}
</script>

style

<style scoped>.modal-bg {position: fixed;top: 0;left: 0;width: 100%;height: 100%;background: rgba(0,0,0,.5);z-index: 10;}.modal-container {background: #fff;border-radius: 10px;overflow: hidden;position: fixed;top: 50%;left: 50%;transform: translate(-50%,-50%);}.modal-header {height: 56px;background: #409EFF;color: #fff;display: flex;align-items: center;justify-content: center;cursor: move;}.modal-footer {display: flex;align-items: center;justify-content: center;height: 57px;border-top: 1px solid #ddd;}.modal-footer button {width: 100px;}.modal-main {padding: 15px 40px;}
</style>

step2 在router里面引入Modal.vue

import modal from '../components/Modal';return[{ path: 'modal', name: '弹窗', component: modal }]

step3 调用

template

<Modal :show="show" @cancel="cancel" @submit="submit"></Modal>

script

import Modal from '../../components/Modal';
export default {data() {return {show: false,}},components: {Modal},methods: {cancel() {// 取消弹窗回调this.show = false},submit() {// 确认弹窗回调this.show = false},showWindow(){this.show = true},changeRoute() {this.$router.push('/welcome/page2');}}
};

OK, GAME OVER!

更多精彩内容请关注:程序员高手之路

回复“vue项目”,免费获取以下项目视频教程

VUE系列——弹窗代码编写与调用弹窗过程详解相关推荐

  1. JVM系列(一):JVM类加载过程详解

    Java 通过引入字节码和 JVM 机制,提供了强大的跨平台能力,理解 Java 的类加载机制是深入 Java 开发的必要条件. 一.Java代码执行流程 Java程序运行时,必须经过编译和运行两个步 ...

  2. SCSF 系列:Smart Client Software Factory 启动过程详解

    应网友要求,结合参考实现(BankBranchWorkbench)写一篇关于 SCSF 内部工作原理的文章,需要读者有 SCSF 基础.基本概念和基本理念后面相关文章介绍. SCSF 自动为我们建立了 ...

  3. for根据ID去重_汽车ECU参数标定之配置Overlay RAM实现Qorivva MPC57xx系列MCU参数在线标定和代码重映射原理和方法详解...

    内容提要 引言 1. MPC5744P的Overlay RAM工作原理介绍 2 MPC5744P的Flash Overlay配置详解 2.1 平台Flash标定区域描述字寄存器配置字0--PFLASH ...

  4. 浅谈嵌入式MCU软件开发之S32K1xx系列MCU启动过程及重映射代码到RAM中运行方法详解

    内容提要 注:本文摘自NXP工程师胡恩伟的微信公众号"汽车电子expert成长之路",大家感兴趣可以关注一下. 引言 1. S32K1xx系列MCU启动过程详解(startup_S ...

  5. vue中如何调用ios摄像头_vue2.0调用摄像头步骤详解

    这次给大家带来vue2.0调用摄像头步骤详解,使用vue2.0调用摄像头的注意事项有哪些,下面就是实战案例,一起来看一下. 可以在github 上下载demo链接 vue组件代码 import {Ex ...

  6. Git学习系列之Git基本操作提交项目(图文详解)

    前面博客 Git学习系列之Git基本操作克隆项目(图文详解) 然后可以 cd 切换到 LispGentleIntro 目录, 新增或者修改某些文件.这里只是模拟一下操作, 实际情况可能是 使用 Ecl ...

  7. [系统安全] 四十四.APT系列(9)Metasploit技术之基础用法万字详解及防御机理

    您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...

  8. Vue的生命周期过程详解

    Vue的生命周期 Vue实例有一个完整的生命周期,也就是从开始创建.初始化数据.编译模板.挂载Dom.渲染→更新→渲染.销毁等一系列过程,我们称这是Vue的生命周期.通俗说就是Vue实例从创建到销毁的 ...

  9. SpringSecurity权限管理框架系列(六)-Spring Security框架自定义配置类详解(二)之authorizeRequests配置详解

    1.预置演示环境 这个演示环境继续沿用 SpringSecurit权限管理框架系列(五)-Spring Security框架自定义配置类详解(一)之formLogin配置详解的环境. 2.自定义配置类 ...

  10. Python 在子类中调用父类方法详解(单继承、多层继承、多重继承)

    Python 在子类中调用父类方法详解(单继承.多层继承.多重继承)   by:授客 QQ:1033553122   测试环境: win7 64位 Python版本:Python 3.3.5 代码实践 ...

最新文章

  1. 6D位姿估计Point Pair Feature (PPF)算法详解
  2. 利用深度学习(Keras)进行癫痫分类-Python案例
  3. 殊途同归的策略梯度与零阶优化
  4. Go服务迁到K8s后老抽风重启? 记一次完整的线上问题解决过程
  5. MySQL学习笔记(二):MyISAM 存储引擎
  6. LightOJ 1026 桥 1063 割点
  7. 贝叶斯分类器与贝叶斯网络
  8. C#基础-Func,Action
  9. 特征工程一:特征缩放、选择
  10. 产品读书《浪潮之巅》
  11. C10K 和 C1000K
  12. win7驱动精灵_win7驱动打不上?黑科技H310/B360 USB核显驱动安装教程
  13. python pyhook_python使用pyHook.HookManager()返回来的event中,event.Time怎么转换成为datetime形式?...
  14. php excel库,phpexcel类库下载
  15. DNX SDK版本 “dnx-clr-win-x86.1.0.0-beta5”无法安装
  16. java调用打印机没反应_java调用打印机问题
  17. 中专计算机英语词汇,中职英语新课标词汇表.doc
  18. 001_Whetting Your Appetite_引言
  19. 基于单目视觉的同时定位与地图构建方法综述
  20. 【BOOST C++字串专题11】Boost.Spirit(三)

热门文章

  1. 《Linux内核修炼之道》——第1章 初识Linux 1.1 Linux史记
  2. JavaScript绘制矢量图
  3. 内存颗粒位宽和容量_【存储器】浅谈SDRAM内存芯片位宽
  4. 浙江大学计算机学院陈越教授,科学网—浙大教授陈越:快乐教学 行者无疆
  5. 快速非支配排序 python版
  6. C语言之volatile
  7. 导入Zip bomb detected
  8. 离散元 python_开源离散元软件YADE的安装与编译(基于ubuntu18.04) | 望天博客
  9. linux 密码字典生成,Linux下的字典生成工具Crunch 创造自己的专属字典
  10. Javascript 如何实现继承?