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 相关文章推荐
javascript 面向对象编程 万物皆对象
Sep 17 Javascript
jquery 图片轮换效果
Jul 29 Javascript
基于Jquery与WebMethod投票功能实现代码
Jan 19 Javascript
jquery使用ColorBox弹出图片组浏览层实例演示
Mar 14 Javascript
javascript实现的DES加密示例
Oct 30 Javascript
巧用js提交表单轻松解决一个页面有多个提交按钮
Nov 17 Javascript
通过JQuery将DIV的滚动条滚动到指定的位置方便自动定位
May 05 Javascript
使用AngularJS创建自定义的过滤器的方法
Jun 18 Javascript
js实现滚动条滚动到页面底部继续加载
Dec 19 Javascript
Jquery uploadify上传插件使用详解
Jan 13 Javascript
深入理解JQuery循环绑定事件
Jun 02 Javascript
jQuery解析json格式数据示例
Sep 01 jQuery
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
用libtemplate实现静态网页生成
2006/10/09 PHP
如何将数据从文本导入到mysql
2006/10/09 PHP
用PHP的ob_start();控制您的浏览器cache!
2007/02/14 PHP
个人站长制做网页常用的php代码
2007/03/03 PHP
PHP Undefined index报错的修复方法
2011/07/17 PHP
PHP Cookie的使用教程详解
2013/06/03 PHP
PHP编程基本语法快速入门手册
2016/01/07 PHP
php实现文件预览功能
2017/05/23 PHP
Array对象方法参考
2006/10/03 Javascript
Extjs4 类的定义和扩展实例
2013/06/28 Javascript
js打开windows上的可执行文件示例
2014/05/27 Javascript
js怎么覆盖原有方法实现重写
2014/09/04 Javascript
无限树Jquery插件zTree的常用功能特性总结
2014/09/11 Javascript
jquery带下拉菜单和焦点图代码分享
2015/08/24 Javascript
jQuery实现动态添加tr到table的方法
2016/12/26 Javascript
Angular使用cli生成自定义文件、组件的方法
2018/09/04 Javascript
JavaScript中AOP的实现与应用
2019/05/06 Javascript
[01:02:48]2018DOTA2亚洲邀请赛小组赛 A组加赛 Newbee vs Liquid
2018/04/03 DOTA
Python中条件选择和循环语句使用方法介绍
2013/03/13 Python
python自动化测试之连接几组测试包实例
2014/09/28 Python
Python中列表的一些基本操作知识汇总
2015/05/20 Python
python多行字符串拼接使用小括号的方法
2020/03/19 Python
Python random模块的使用示例
2020/10/10 Python
孕妇内衣和胸罩:Cake Maternity
2018/07/16 全球购物
酒店人事专员岗位职责
2013/12/19 职场文书
大二学期个人自我评价
2014/01/13 职场文书
公务员职业生涯规划书范文  
2014/01/19 职场文书
成语的广告词
2014/03/19 职场文书
小学优秀班干部事迹材料
2014/05/25 职场文书
大学毕业生求职自荐书
2014/06/05 职场文书
授权委托书范文
2014/07/31 职场文书
小学班主任经验交流材料
2014/12/16 职场文书
超市督导岗位职责
2015/04/10 职场文书
校车司机安全责任书
2015/05/11 职场文书
OpenCV-Python使用cv2实现傅里叶变换
2021/06/09 Python
Java中Dijkstra(迪杰斯特拉)算法
2022/05/20 Java/Android