微信小程序自定义模态弹窗组件详解


Posted in Javascript onDecember 24, 2019

小程序自带一个showModal弹窗,调用很简单,但是限制很多,title有字数限制,中间的content也只能放文字不能放组件,所以作为一个前端碰到那种连续好几个跟微信自带的模态弹窗风格一模一样,但是功能又花里胡哨的UI稿,就不能忍受频繁的复制粘贴了。自己写了一个组件,虽然调用起来比微信自带的麻烦一点,但是还蛮实用的。

微信小程序自定义模态弹窗组件详解

微信小程序自定义模态弹窗组件详解

微信小程序自定义模态弹窗组件详解

效果大概长这样。

上代码:

wxml:

<!-- 自定义模态弹窗 -->
<view class="modalDIY" wx:if="{{showModal}}">
 <view class="bg">
 <view class="modalTitle">{{title}}</view>
 <view class="modalContent">
  <view>{{content}}</view>
  <slot></slot>
 </view>
 <view class="modalOperate">
  <view bindtap="_cancel" hidden="{{!showCancel}}" style="color:{{cancelColor}}" class="cancelBtn">{{cancelText}}</view>
  <view bindtap="_comfirm" class="comfirmBtn" style="color:{{confirmColor}}">{{confirmText}}</view>
 </view>
 </view>
</view>

js:

const regeneratorRuntime = require('../../dependence/generator-runtime.js'); //这是一个es6转es5的js
Component({
 properties: {
 // 这里定义了innerText属性,属性值可以在组件使用时指定
 },
 data: {
 showModal: false,
 title: '温馨提示',
 content: '',
 showCancel: true,
 cancelColor: '#3a3a3a',
 cancelText: '取消',
 confirmColor: '#00800',
 confirmText: '确认',
 comfirm() { },
 cancel() { }
 },
 methods: {
 // 外部方法调用
 showModal(params) {
  this.setData({
  showModal: true,
  title: params.title || '温馨提示', //title
  content: params.content || '',//中间内容
  showCancel: params.showCancel == undefined ? true : params.showCancel,//是否显示左侧
  cancelColor: params.cancelColor || '#3a3a3a',//取消按钮文字颜色
  cancelText: params.cancelText || '取消',//左侧按钮文字
  confirmColor: params.confirmColor || '#09BA07',//右侧按钮文字颜色
  confirmText: params.confirmText || '确认',//右侧按钮文字
  /* 回调函数 */
  comfirm: params.comfirm || function(){},//点击确认(右侧按钮)
  cancel: params.cancel || function(){}//点击取消(左侧按钮)
  })
 },
 // 点击确定
 _comfirm() {
  this.setData({
  showModal: false
  },()=>{
  this.data.comfirm();
  })
 },
 // 点击取消
 _cancel() {
  this.setData({
  showModal: false
  },()=>{
  this.data.cancel();
  })
 }
 }
})
 
// 调用示例
// 引入组件后通过js selectComponent('#id')方法获得组件对象 再调用组件对象下的showModal方法 传入配置参数即可 可以在组件中自定义内容节点

wxss:

.modalDIY{
 position: fixed;
 z-index: 99999999;
 top: 0;
 left: 0;
 width: 100vw;
 height: 100vh;
 background: rgba(0,0,0,0.6);
 display: flex;
 align-items: center;
 align-content: center;
 justify-content: center;
}
.bg{
 background: #fff;
 text-align: center;
 border-radius: 10rpx;
 width: 90%;
}
.modalTitle{
 padding: 30rpx 40rpx 0 40rpx;
 font-size: 36rpx;
 line-height: 55rpx;
 color: #000;
}
.modalContent{
 padding: 20rpx 40rpx;
 font-size: 30rpx;
 color: #7a7a7a;
}
.modalOperate{
 height: 100rpx;
 line-height: 100rpx;
 border-top: 2rpx solid #eee;
 display: flex;
}
.cancelBtn{
 border-right: 2rpx solid #eee;
 flex: 1;
}
.comfirmBtn{
 flex: 1;
}

json:(记住要把component设置成true)

{
 "component": true,
 "usingComponents": {}
}

调用的时候需要贴别说明一下,拿我上面示例图的第二个弹窗的调用为例

首先引入组件

微信小程序自定义模态弹窗组件详解

在wxml中引用组件

微信小程序自定义模态弹窗组件详解

在js中可以配置一些颜色之类的样式

首先通过selectComponent这个方法获得组件对象,可以存成全局的常量。

微信小程序自定义模态弹窗组件详解

我们要调用这个对象下自己封装的showModal方法

微信小程序自定义模态弹窗组件详解

完毕。

为大家推荐现在关注度比较高的微信小程序教程一篇:《微信小程序开发教程》小编为大家精心整理的,希望喜欢。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery 名称冲突的解决方法
Apr 08 Javascript
javascript获取网页中指定节点的父节点、子节点的方法小结
Apr 24 Javascript
ListBox实现上移,下移,左移,右移的简单实例
Feb 13 Javascript
js操作iframe父子窗体示例
May 22 Javascript
JavaScript显示表单内元素数量的方法
Apr 02 Javascript
Jquery效果大全之制作电脑健康体检得分特效附源码下载
Nov 02 Javascript
AngularJS框架的ng-app指令与自动加载实现方法分析
Jan 04 Javascript
详解vue-router 2.0 常用基础知识点之导航钩子
May 10 Javascript
JS解析url查询参数的简单代码
Aug 06 Javascript
vue实现的上传图片到数据库并显示到页面功能示例
Mar 17 Javascript
ES6 Generator基本使用方法示例
Jun 06 Javascript
OpenLayers3实现对地图的基本操作
Sep 28 Javascript
js实现鼠标点击页面弹出自定义文字效果
Dec 24 #Javascript
javascript实现鼠标点击生成文字特效
Dec 24 #Javascript
Javascript实现鼠标点击冒泡特效
Dec 24 #Javascript
javascript实现点击星星小游戏
Dec 24 #Javascript
JS实现小星星特效
Dec 24 #Javascript
JS实现星星海特效
Dec 24 #Javascript
JS实现图片切换特效
Dec 23 #Javascript
You might like
PHP cron中的批处理
2008/09/16 PHP
PHP实现删除非站内外部链接实例代码
2014/06/17 PHP
php实现的CSS更新类实例
2014/09/22 PHP
php获取远程文件内容的函数
2015/11/02 PHP
php设计模式之状态模式实例分析【星际争霸游戏案例】
2020/03/26 PHP
JavaScript 操作键盘的Enter事件(键盘任何事件),兼容多浏览器
2010/10/11 Javascript
最短的IE判断var ie=!-[1,]分析
2014/05/28 Javascript
JavaScript字符串对象substring方法入门实例(用于截取字符串)
2014/10/17 Javascript
javascript实现五星评分功能
2015/11/10 Javascript
JS中动态创建元素的三种方法总结(推荐)
2016/10/20 Javascript
用nodeJS搭建本地文件服务器的几种方法小结
2017/03/16 NodeJs
关于js中的鼠标事件总结
2017/07/11 Javascript
微信小程序后台持续定位功能使用详解
2019/08/23 Javascript
微信小程序官方动态自定义底部tabBar的例子
2019/09/04 Javascript
uni-app微信小程序登录授权的实现
2020/05/22 Javascript
[06:10]6.81新信使新套装!给你一个炫酷的DOTA2
2014/05/06 DOTA
[02:03]《现实生活中的DOTA2》—林书豪&DOTA2职业选手出演短片
2015/08/18 DOTA
[01:11:37]完美世界DOTA2联赛PWL S2 SZ vs FTD.C 第一场 11.19
2020/11/19 DOTA
Python扫描IP段查看指定端口是否开放的方法
2015/06/09 Python
Python3中详解fabfile的编写
2018/06/24 Python
详谈tensorflow gfile文件的用法
2020/02/05 Python
python中turtle库的简单使用教程
2020/11/11 Python
python中常用的数据结构介绍
2021/01/12 Python
Python爬虫获取op.gg英雄联盟英雄对位胜率的源码
2021/01/29 Python
HTML5微信播放全屏问题的解决方法
2017/03/09 HTML / CSS
教你使用Canvas处理图片的方法
2017/11/28 HTML / CSS
大女孩胸罩:Big Girls Bras
2016/12/15 全球购物
施华洛世奇水晶荷兰官方网站:SWAROVSKI荷兰
2017/05/12 全球购物
日语专业毕业生自荐信
2013/11/11 职场文书
初中高效课堂实施方案
2014/02/26 职场文书
销售会计岗位职责
2014/03/15 职场文书
环境卫生倡议书
2014/08/29 职场文书
幼儿园老师个人总结
2015/02/28 职场文书
回复函格式及范文
2015/07/14 职场文书
angular异步验证器防抖实例详解
2022/03/31 Javascript
shell进度条追踪指令执行时间的场景分析
2022/06/16 Servers