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 实现父窗口引用弹出窗口的值的脚本
Aug 07 Javascript
jQuery ctrl+Enter shift+Enter实现代码
Feb 07 Javascript
js简单实现删除记录时的提示效果
Dec 05 Javascript
jquery实现简单的无缝滚动
Apr 15 Javascript
vue.js实现备忘录功能的方法
Jul 10 Javascript
深入探究node之Transform
Jul 20 Javascript
原生js调用json方法总结
Feb 22 Javascript
原生JS实现动态添加新元素、删除元素方法
May 05 Javascript
微信小程序框架的页面布局代码
Aug 17 Javascript
layui 实现表格某一列显示图标
Sep 19 Javascript
vue实现计步器功能
Nov 01 Javascript
React实现阿里云OSS上传文件的示例
Aug 10 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 无法载入mysql扩展
2010/03/12 PHP
PHP实现简易计算器功能
2020/08/28 PHP
php更新cookie内容的详细方法
2019/09/30 PHP
通过PHP实现获取访问用户IP
2020/05/09 PHP
ExtJs中简单的登录界面制作方法
2010/08/19 Javascript
JS实现的省份级联实例代码
2013/06/24 Javascript
酷! 不同风格页面布局幻灯片特效js实现
2021/02/19 Javascript
利用原生JS自动生成文章标题树的实例
2016/08/22 Javascript
JS操作input标签属性checkbox全选的实现代码
2017/03/02 Javascript
webpack实现热加载自动刷新的方法
2017/07/30 Javascript
Vue 2.5 Level E 发布了: 新功能特性一览
2017/10/24 Javascript
vue.js使用watch监听路由变化的方法
2018/07/08 Javascript
jquery 通过ajax请求获取后台数据显示在表格上的方法
2018/08/08 jQuery
详解ESLint在Vue中的使用小结
2018/10/15 Javascript
vue自定义指令directive的使用方法
2019/04/07 Javascript
微信小程序表单验证插件WxValidate的二次封装功能(终极版)
2019/09/03 Javascript
使用JavaScript和MQTT开发物联网应用示例解析
2020/08/07 Javascript
python Django模板的使用方法(图文)
2013/11/04 Python
Python3编程实现获取阿里云ECS实例及监控的方法
2017/08/18 Python
在Python web中实现验证码图片代码分享
2017/11/09 Python
python放大图片和画方格实现算法
2018/03/30 Python
python读取和保存视频文件
2018/04/16 Python
浅谈Python中函数的定义及其调用方法
2019/07/19 Python
基于django传递数据到后端的例子
2019/08/16 Python
Django中从mysql数据库中获取数据传到echarts方式
2020/04/07 Python
HTML+CSS3 模仿Windows7 桌面效果
2010/06/17 HTML / CSS
Canvas引入跨域的图片导致toDataURL()报错的问题的解决
2018/09/19 HTML / CSS
俄罗斯品牌服装在线商店:VIPAVENUE
2020/08/10 全球购物
说说在weblogic中开发消息Bean时的persistent与non-persisten的差别
2013/04/07 面试题
行政人员岗位职责
2013/12/08 职场文书
人力资源总监工作说明
2014/03/03 职场文书
中班开学寄语
2014/04/04 职场文书
活动倡议书范文
2014/05/13 职场文书
企业党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
员工规章制度范本
2015/08/07 职场文书
Java无向树分析 实现最小高度树
2022/04/09 Javascript