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


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 相关文章推荐
javascript 学习之旅 (3)
Feb 05 Javascript
js chrome浏览器判断代码
Mar 28 Javascript
jQuery 表单验证扩展(四)
Oct 20 Javascript
js实现日历可获得指定日期周数及星期几示例分享(js获取星期几)
Mar 14 Javascript
jQuery随机密码生成的方法
Mar 09 Javascript
jQuery插件slick实现响应式移动端幻灯片图片切换特效
Apr 12 Javascript
js操作cookie保存浏览记录的方法
Dec 25 Javascript
jquery引入外部CDN 加载失败则引入本地jq库
May 23 jQuery
vue + webpack如何绕过QQ音乐接口对host的验证详解
Jul 01 Javascript
在vue中使用Autoprefixed的方法
Jul 27 Javascript
Vue实现导航栏点击当前标签变色功能
Aug 19 Javascript
vue仿淘宝滑动验证码功能(样式模仿)
Dec 10 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 无法载入mysql扩展
2010/03/12 PHP
php selectradio和checkbox默认选择的实现方法详解
2013/06/29 PHP
解析php防止form重复提交的方法
2013/07/01 PHP
php 过滤英文标点符号及过滤中文标点符号代码
2014/06/12 PHP
php超快高效率统计大文件行数
2015/07/05 PHP
对于Laravel 5.5核心架构的深入理解
2018/02/22 PHP
Add Formatted Data to a Spreadsheet
2007/06/12 Javascript
Mozilla 表达式 __noSuchMethod__
2009/04/05 Javascript
jQuery.autocomplete 支持中文输入(firefox)修正方法
2011/03/10 Javascript
详解JavaScript中的every()方法
2015/06/08 Javascript
原生JS封装Ajax插件(同域、jsonp跨域)
2016/05/03 Javascript
Node.js下自定义错误类型详解
2016/10/17 Javascript
js中利用cookie实现记住密码功能
2020/08/20 Javascript
Vue.js常用指令汇总(v-if、v-for等)
2016/11/03 Javascript
简单实现js鼠标跟随效果
2020/08/02 Javascript
jQuery图片加载失败替换默认图片方法汇总
2017/11/29 jQuery
vue学习教程之带你一步步详细解析vue-cli
2017/12/26 Javascript
jQuery实现的电子时钟效果完整示例
2018/04/28 jQuery
jQuery zTree插件使用简单教程
2019/08/16 jQuery
解决ele ui 表格表头太长问题的实现
2019/11/13 Javascript
javascript实现蒙版与禁止页面滚动
2020/01/11 Javascript
JS实现点星星消除小游戏
2020/03/24 Javascript
用不到50行的Python代码构建最小的区块链
2017/11/16 Python
pyqt5 删除layout中的所有widget方法
2019/06/25 Python
python实现二分类和多分类的ROC曲线教程
2020/06/15 Python
使用CSS3配合IE滤镜实现渐变和投影的效果
2015/09/06 HTML / CSS
基于HTML5 Canvas 实现商场监控实例详解
2017/11/20 HTML / CSS
美国著名的女性内衣零售商:Frederick’s of Hollywood
2018/02/24 全球购物
医药营销专业个人自荐信
2013/09/29 职场文书
网络信息管理员岗位职责
2014/01/05 职场文书
英语课外活动总结
2014/08/27 职场文书
大学生感恩父母演讲稿
2014/08/28 职场文书
2014年办公室人员工作总结
2014/12/09 职场文书
酒店辞职书范文
2015/02/26 职场文书
Nginx设置日志打印post请求参数的方法
2021/03/31 Servers
Python中非常使用的6种基本变量的操作与技巧
2022/03/22 Python