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 相关文章推荐
JS+XML 省份和城市之间的联动实现代码
Oct 14 Javascript
Chrome中JSON.parse的特殊实现
Jan 12 Javascript
jquery 与NVelocity 产生冲突的解决方法
Jun 13 Javascript
jQuery 插件仿百度搜索框智能提示(带Value值)
Jan 22 Javascript
解析使用js判断只能输入数字、字母等验证的方法(总结)
May 14 Javascript
兼容主流浏览器的jQuery+CSS 实现遮罩层的简单代码
Oct 14 Javascript
分享12个实用的jQuery代码片段
Mar 09 Javascript
JS识别浏览器类型(电脑浏览器和手机浏览器)
Nov 18 Javascript
总结几道关于Node.js的面试问题
Jan 11 Javascript
jquery实现input框获取焦点的方法
Feb 06 Javascript
React Router v4 入坑指南(小结)
Apr 08 Javascript
JavaScript中关于base64的一些事
May 06 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
一个oracle+PHP的查询的例子
2006/10/09 PHP
谈PHP生成静态页面分析 模板+缓存+写文件
2009/08/17 PHP
基于curl数据采集之正则处理函数get_matches的使用
2013/04/28 PHP
PHP无法访问远程mysql的问题分析及解决
2013/05/16 PHP
PHP封装请求类实例分析【基于Yii框架】
2019/10/17 PHP
jquery如何把参数列严格转换成数组实现思路
2013/04/01 Javascript
密码框显示提示文字jquery示例
2013/08/29 Javascript
JSON+HTML实现国家省市联动选择效果
2014/05/18 Javascript
jquery.mousewheel实现整屏翻屏效果
2015/08/30 Javascript
JS自定义选项卡函数及用法实例分析
2015/09/02 Javascript
jQuery拖动元素并对元素进行重新排序
2015/12/30 Javascript
写jQuery插件时的注意点
2017/02/20 Javascript
微信小程序实现瀑布流布局与无限加载的方法详解
2017/05/12 Javascript
基于打包工具Webpack进行项目开发实例
2018/05/29 Javascript
js神秘的电报密码 哈弗曼编码实现
2019/09/10 Javascript
[56:14]Fnatic vs OG 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python抓取京东商城手机列表url实例代码
2013/12/18 Python
Python中的zipfile模块使用详解
2015/06/25 Python
20个常用Python运维库和模块
2018/02/12 Python
解决Python一行输出不显示的问题
2018/12/03 Python
Python3 venv搭建轻量级虚拟环境的步骤(图文)
2019/08/09 Python
python有序查找算法 二分法实例解析
2020/02/18 Python
PIP和conda 更换国内安装源的方法步骤
2020/09/21 Python
CSS3制作苹果风格键盘特效
2015/02/26 HTML / CSS
解决html5中的video标签ios系统中无法播放使用的问题
2020/08/10 HTML / CSS
Laura Mercier官网:彩妆大师罗拉玛斯亚的化妆品牌
2018/01/04 全球购物
美国家居装饰店:Z Gallerie
2020/12/28 全球购物
夏季奶茶店创业计划书
2014/01/16 职场文书
技术负责人任命书
2014/06/05 职场文书
国际贸易毕业生自荐书
2014/06/22 职场文书
社区班子对照检查材料
2014/08/27 职场文书
公司会议开幕词
2015/01/29 职场文书
2015年度团总支工作总结
2015/04/23 职场文书
学习心理学心得体会
2016/01/22 职场文书
ztree+ajax实现文件树下载功能
2021/05/18 Javascript
Java中的随机数Random
2022/03/17 Java/Android