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中强制执行toString()具体实现
Apr 27 Javascript
js截取字符串的两种方法及区别详解
Nov 05 Javascript
js 获取页面高度和宽度兼容 ie firefox chrome等
May 14 Javascript
jQuery中remove()方法用法实例
Dec 25 Javascript
jquery插件hiAlert实现网页对话框美化
May 03 Javascript
JavaScript闭包实例详解
Jun 03 Javascript
JS实现页面载入时随机显示图片效果
Sep 07 Javascript
AngularJS实践之使用NgModelController进行数据绑定
Oct 08 Javascript
jQuery实现字体颜色渐变效果的方法
Mar 29 jQuery
jQuery菜单实例(全选,反选,取消)
Aug 28 jQuery
vue的列表交错过渡实现代码示例
May 05 Javascript
微信小程序APP页面的之间的相互传递参数以及自定义组件
Apr 19 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+APACHE实现用户论证的方法
2006/10/09 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(五)
2014/06/23 PHP
一个不错的应用,用于提交获取文章内容,不推荐用
2007/03/03 Javascript
js 鼠标拖动对象 可让任何div实现拖动效果
2009/11/09 Javascript
jquery获取元素值的方法(常见的表单元素)
2013/11/15 Javascript
JS随机打乱数组的方法小结
2016/06/22 Javascript
将input框中输入内容显示在相应的div中【三种方法可选】
2017/05/08 Javascript
详解webpack和webpack-simple中如何引入css文件
2017/06/28 Javascript
浅谈es6 javascript的map数据结构
2017/12/14 Javascript
angularjs $http调用接口的方式详解
2018/08/13 Javascript
JavaScript对象拷贝与赋值操作实例分析
2018/12/10 Javascript
elementUI select组件value值注意事项详解
2019/05/29 Javascript
vue简单封装axios插件和接口的统一管理操作示例
2020/02/02 Javascript
vue解决跨域问题(推荐)
2020/11/10 Javascript
[03:40]DOTA2亚洲邀请赛小组赛第二日 赛事回顾
2015/01/31 DOTA
[01:25]DOTA2自定义游戏灵园鬼域等你踏足
2015/10/30 DOTA
python 算法 排序实现快速排序
2012/06/05 Python
Python实现字符串逆序输出功能示例
2017/06/24 Python
django 常用orm操作详解
2017/09/13 Python
Python 列表理解及使用方法
2017/10/27 Python
python采集微信公众号文章
2018/12/20 Python
pandas.read_csv参数详解(小结)
2019/06/21 Python
django框架模板语言使用方法详解
2019/07/18 Python
Django的Modelforms用法简介
2019/07/27 Python
python微信公众号开发简单流程实现
2020/03/09 Python
详解如何在css3打包后自动追加前缀插件:autoprefixer
2018/12/18 HTML / CSS
沃达丰英国有限公司:Vodafone英国
2019/04/16 全球购物
台湾专柜女包:KINAZ
2019/12/26 全球购物
大学生找工作推荐信范文
2013/11/28 职场文书
大学学生会竞选演讲稿
2014/04/25 职场文书
《陈毅探母》教学反思
2014/05/01 职场文书
个人向公司借款协议书
2014/10/09 职场文书
工作表扬信范文
2015/01/17 职场文书
2015年人力资源工作总结
2015/04/08 职场文书
国博复兴之路观后感
2015/06/02 职场文书
大学自主招生自荐信(2016精选篇)
2016/01/28 职场文书