vue插件--仿微信小程序showModel实现模态提示窗功能


Posted in Javascript onAugust 19, 2020

效果图:

vue插件--仿微信小程序showModel实现模态提示窗功能

下面是源码:

index.js

import Vue from 'vue';
import model from './model.vue';
 
 
export default {
 install(Vue) {
 
 const defaults = {
  show: false,
  mask: true,
  title: '提示',
  content: '这是正文',
  confirmButton: true,
  cancelButton: true,
  confirmText: '确认',
  cancelText: '取消',
  cancelCallBack: () => {},
  confirmCallBack: () => {}
 };
 
 const modelVueConstructor = Vue.extend(model);
 
 Vue.prototype.$model = (options = {}) => {
  if (Vue.prototype.$isServer) return;
  options = Object.assign({}, defaults, options);
  let parent = document.body ;
  let instance = new modelVueConstructor({
  el: document.createElement('div'),
  data: options
  });
  parent.appendChild(instance.$el);
 
  return instance;
 };
 
 },
};

model.vue

<template>
 <div v-if="show" class="model-container">
 <div class="model-main">
  <div class="model-title">{{title}}</div>
  <div class="model-content" v-html="content"></div>
  <div class="model-buttons">
  <button v-if="cancelButton" @click="cancelClick" class="button">{{cancelText}}</button>
  <button v-if="confirmButton" @click="confirmClick" class="button confirm">{{confirmText}}</button>
  </div>
 </div>
 <div v-show="mask" class="model-mask"></div>
 </div>
 
</template>
 
<script type="text/babel">
 export default {
 data() {
 return {
 show: false,
 mask: true,
 title: '提示',
 content: '这是正文',
 confirmButton: true,
 cancelButton: true,
 confirmText: '确认',
 cancelText: '取消',
 cancelCallBack: () => {},
 confirmCallBack: () => {}
 };
 },
 methods: {
 cancelClick(){
  this.show = false;
  this.cancelCallBack();
 },
 confirmClick(){
  this.show = false;
  this.confirmCallBack();
 }
 }
 };
</script>
<style lang="less" scoped>
 .model-container{
 width: 100%;
 height: 100vh;
 position: fixed;
 top: 0;
 left: 0;
 z-index: var(--model-index);
 display: flex;
 justify-content: center;
 align-items: center;
 .model-main{
  position: relative;
  z-index: 9;
  width: 80%;
  background-color: #ffffff;
  border-radius: 10px;
  overflow: hidden;
  text-align: center;
  .model-title{
  font-size: 18px;
  color: #333;
  width: 100%;
  padding: 18px;
  font-weight: bold;
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
  }
  .model-content{
  font-size: 16px;
  color: #666;
  padding: 10px;
  padding-top: 0px;
  padding-bottom: 20px;
  }
  .model-buttons{
  width: 100%;
  display: flex;
  align-items: center;
  .button{
   flex: 1;
   padding: 18px 10px;
   overflow: hidden;
   white-space: nowrap;
   text-overflow: ellipsis;
   font-size: 16px;
   outline: none;
   background-color: #ffffff;
   border-top: 1px solid #f2f2f2;
   border-right: 1px solid #f2f2f2;
   &.confirm{
   color: var(--theme);
   font-weight: bold;
   }
   &:last-child{
   border-right: 0;
   }
   &:active{
   background-color: #f2f2f2;
   }
  }
  }
 }
 .model-mask{
  width: 100%;
  height: 100%;
  position: absolute;
  top: 0;
  left: 0;
  z-index: 1;
  background-color: rgba(0,0,0,0.45);
 }
 }
</style>

通过添加实例方法,把插件添加到vue.prototype上来实现。

在使用之前需要将插件挂载到Vue全局实例上:

main.js

import VueModel from './components/model/index.js';
Vue.use(VueModel);

完成上述条件后,就可以在你的vue项目中使用啦:

this.$model({
 show: true,
 title: "提示",
 content: "提示内容",
 cancelButton: true,
 confirmCallBack: () => {
 console.log("确认");
 },
 cancelCallBack: () => {
 console.log("取消");
 }
});

总结

到此这篇关于vue插件--仿微信小程序showModel实现模态提示窗的文章就介绍到这了,更多相关微信小程序showModel实现模态提示窗内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
extjs关于treePanel+chekBox全部选中以及清空选中问题探讨
Apr 02 Javascript
js substr支持中文截取函数代码(中文是双字节)
Apr 17 Javascript
JavaScript中的Math 使用介绍
Apr 21 Javascript
js闭包的用途详解
Nov 09 Javascript
JQuery中$.each 和$(selector).each()的区别详解
Mar 13 Javascript
html判断当前页面是否在iframe中的实例
Nov 30 Javascript
jQuery实现点击关注和取消功能
Jul 03 jQuery
利用JavaScript实现栈的数据结构示例代码
Aug 02 Javascript
关于webpack2和模块打包的新手指南(小结)
Aug 07 Javascript
AngularJs每天学习之总体介绍
Aug 07 Javascript
Vue项目使用CDN优化首屏加载问题
Apr 01 Javascript
基于vue+uniapp直播项目实现uni-app仿抖音/陌陌直播室功能
Nov 12 Javascript
jQuery实现评论模块
Aug 19 #jQuery
javaScript代码飘红报错看不懂?读完这篇文章再试试
Aug 19 #Javascript
jQuery实现简单评论功能
Aug 19 #jQuery
原生JS实现多条件筛选
Aug 19 #Javascript
微信小程序wx.getUserInfo授权获取用户信息(头像、昵称)的实现
Aug 19 #Javascript
微信小程序通过websocket实时语音识别的实现代码
Aug 19 #Javascript
JS实现炫酷雪花飘落效果
Aug 19 #Javascript
You might like
PHP迭代与递归实现无限级分类
2017/08/28 PHP
PHP中的self关键字详解
2019/06/23 PHP
JS图片预加载 JS实现图片预加载应用
2012/12/03 Javascript
Javascript图像处理—亮度对比度应用案例
2013/01/03 Javascript
Json对象与Json字符串互转(4种转换方式)
2013/03/27 Javascript
当鼠标移动到图片上时跟随鼠标显示放大的图片效果
2013/06/06 Javascript
JS实现根据出生年月计算年龄
2014/01/10 Javascript
jquery ajaxSubmit 异步提交的简单实现
2014/02/28 Javascript
jquery实现将获取的颜色值转换为十六进制形式的方法
2014/12/20 Javascript
JS+CSS实现可拖动的弹出提示框
2015/02/16 Javascript
jQuery实现按键盘方向键翻页特效
2015/03/18 Javascript
七夕情人节丘比特射箭小游戏
2015/08/20 Javascript
js实现(全选)多选按钮的方法【附实例】
2016/03/30 Javascript
AngularJs实现分页功能不带省略号的代码
2016/05/30 Javascript
使用Bootstrap typeahead插件实现搜索框自动补全的方法
2016/07/07 Javascript
基于bootstrap实现广告轮播带图片和文字效果
2016/07/22 Javascript
React教程之Props验证的具体用法(Props Validation)
2017/09/04 Javascript
JavaScript中while循环的基础使用教程
2020/08/11 Javascript
[02:31]DOTA2帕克 英雄基础教程
2013/11/26 DOTA
[06:21]2014DOTA2国际邀请赛 庆祝VG首阶段领跑;B叔为挣牛排半夜整理情报
2014/07/13 DOTA
[01:48]完美圣典齐天大圣至宝宣传片
2016/12/17 DOTA
各种Python库安装包下载地址与安装过程详细介绍(Windows版)
2016/11/02 Python
Python实现七彩蟒蛇绘制实例代码
2018/01/16 Python
Python针对给定列表中元素进行翻转操作的方法分析
2018/04/27 Python
使用python打印十行杨辉三角过程详解
2019/07/10 Python
Python3的高阶函数map,reduce,filter的示例详解
2019/07/23 Python
解决python flask中config配置管理的问题
2019/07/26 Python
django 自定义filter 判断if var in list的例子
2019/08/20 Python
python实现FTP文件传输的方法(服务器端和客户端)
2020/03/20 Python
使用python创建Excel工作簿及工作表过程图解
2020/05/27 Python
PyCharm 2020.1版安装破解注册码永久激活(激活到2089年)
2020/09/24 Python
html5利用canvas实现颜色容差抠图功能
2019/12/23 HTML / CSS
高校辅导员推荐信范文
2013/12/25 职场文书
大学生素质拓展活动方案
2014/02/11 职场文书
ThinkPHP5和ThinkPHP6的区别
2021/03/31 PHP
CSS3常见动画的实现方式
2021/04/14 HTML / CSS