全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

微信小程序自定义模态对话框实例详解

由于官方API提供的显示模态弹窗,只能简单地显示文字内容,不能对对话框内容进行自定义,欠缺灵活性,所以自己从模态弹窗的原理角度来实现了自定义的模态对话框。

wx.showModal(OBJECT)
自定义
模态对话框

涉及文件

界面 wxml
样式 wxcss
事件及方法 js

效果图

界面代码 .wxml

<button class="show-btn" bindtap="showDialogBtn">弹窗</button>

<!--弹窗-->
<view class="modal-mask" bindtap="hideModal" catchtouchmove="preventTouchMove" wx:if="{{showModal}}"></view>
<view class="modal-dialog" wx:if="{{showModal}}">
 <view class="modal-title">添加数量</view>
 <view class="modal-content">
 <view class="modal-input">
  <input placeholder-class="input-holder" type="number" maxlength="10" bindinput="inputChange" class="input" placeholder="请输入数量"></input>
 </view>
 </view>
 <view class="modal-footer">
 <view class="btn-cancel" bindtap="onCancel" data-status="cancel">取消</view>
 <view class="btn-confirm" bindtap="onConfirm" data-status="confirm">确定</view>
 </view>
</view>

样式 .wxss

.show-btn {
 margin-top: 100rpx;
 color: #22cc22;
}

.modal-mask {
 width: 100%;
 height: 100%;
 position: fixed;
 top: 0;
 left: 0;
 background: #000;
 opacity: 0.5;
 overflow: hidden;
 z-index: 9000;
 color: #fff;
}

.modal-dialog {
 width: 540rpx;
 overflow: hidden;
 position: fixed;
 top: 50%;
 left: 0;
 z-index: 9999;
 background: #f9f9f9;
 margin: -180rpx 105rpx;
 border-radius: 36rpx;
}

.modal-title {
 padding-top: 50rpx;
 font-size: 36rpx;
 color: #030303;
 text-align: center;
}

.modal-content {
 padding: 50rpx 32rpx;
}

.modal-input {
 display: flex;
 background: #fff;
 border: 2rpx solid #ddd;
 border-radius: 4rpx;
 font-size: 28rpx;
}


.input {
 width: 100%;
 height: 82rpx;
 font-size: 28rpx;
 line-height: 28rpx;
 padding: 0 20rpx;
 box-sizing: border-box;
 color: #333;
}

input-holder {
 color: #666;
 font-size: 28rpx;
}

.modal-footer {
 display: flex;
 flex-direction: row;
 height: 86rpx;
 border-top: 1px solid #dedede;
 font-size: 34rpx;
 line-height: 86rpx;
}

.btn-cancel {
 width: 50%;
 color: #666;
 text-align: center;
 border-right: 1px solid #dedede;
}

.btn-confirm {
 width: 50%;
 color: #ec5300;
 text-align: center;
}

事件及方法 .js

Page({
 data: {
  showModal: false,
 },
 onLoad: function () {
 },
 /**
  * 弹窗
  */
 showDialogBtn: function() {
  this.setData({
  showModal: true
  })
 },
 /**
  * 弹出框蒙层截断touchmove事件
  */
 preventTouchMove: function () {
 },
 /**
  * 隐藏模态对话框
  */
 hideModal: function () {
  this.setData({
  showModal: false
  });
 },
 /**
  * 对话框取消按钮点击事件
  */
 onCancel: function () {
  this.hideModal();
 },
 /**
  * 对话框确认按钮点击事件
  */
 onConfirm: function () {
  this.hideModal();
 }
})

实现思路解读及原理

界面解读:

用一个蒙层+弹窗来组成,用绑定的数据{{showModal}}来控制弹窗的显示和隐藏

事件及方法解读:
让弹窗显示的方法:

showDialogBtn: function() {
  this.setData({
  showModal: true
  })
 }

让弹窗消失的方法:

hideModal: function () {
  this.setData({
  showModal: false
  });
 }

这里有个要特别注意的地方,就是下面这个方法:

preventTouchMove: function () {
 }

为什么是空方法?因为要结合界面wxml看,蒙层view里有一个事件绑定catchtouchmove="preventTouchMove"。这养写的原因是阻断事件向下传递,避免在弹窗后还可以点击或者滑动蒙层下的界面。如果不这样写的话,如果主界面是一个可以滚动的界面,想想看,当弹窗弹出的时候用户还可以操作滚动列表,我想你的产品经理会来找你的。

 3. 样式解读:(这个标题没加代码块标识,但还是像代码块一样被显示了,这是个bug!!!- -)

.modal-mask和.modal-dialog样式的写法需要特别注意。

主要是层级关系,弹窗要保证在最上层,不被界面遮挡,然后蒙层要遮挡住界面,但是不可遮挡弹窗。所以.modal-mask和.modal-dialog的z-index值要注意。

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


# 微信小程序模态对话框  # 微信小程序对话框  # 微信小程序自定义底部弹出框  # JS中微信小程序自定义底部弹出框  # 微信小程序 自定义消息提示框  # 微信小程序自定义对话框弹出和隐藏动画  # 微信小程序开发之实现自定义Toast弹框  # 微信小程序 自定义对话框实例详解  # 如何自定义微信小程序tabbar上边框的颜色  # 微信小程序自定义select下拉选项框组件的实现代码  # 微信小程序 自定义复选框实现代码实例  # 微信小程序实现自定义动画弹框/提示框的方法实例  # 对话框  # 自定义  # 模态  # 还可以  # 弹出  # 绑定  # 是一个  # 我想  # 有个  # 要注意  # 请输入  # 找你  # 不被  # 这是个  # 会来  # 大家多多  # 有一个  # 主要是  # 实现了  # 最上层 


相关文章: 宝塔新建站点报错如何解决?  建站主机SSH密钥生成步骤及常见问题解答?  实惠建站价格推荐:2025年高性价比自助建站套餐解析  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  如何快速查询网址的建站时间与历史轨迹?  如何在IIS管理器中快速创建并配置网站?  简单实现Android文件上传  广州顶尖建站服务:企业官网建设与SEO优化一体化方案  如何通过虚拟主机快速完成网站搭建?  建站主机选购指南:核心配置与性价比推荐解析  XML的“混合内容”是什么 怎么用DTD或XSD定义  怀化网站制作公司,怀化新生儿上户网上办理流程?  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  三星网站视频制作教程下载,三星w23网页如何全屏?  非常酷的网站设计制作软件,酷培ai教育官方网站?  香港服务器如何优化才能显著提升网站加载速度?  制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?  c# 服务器GC和工作站GC的区别和设置  建站之星后台管理:高效配置与模板优化提升用户体验  如何快速搭建高效WAP手机网站吸引移动用户?  python的本地网站制作,如何创建本地站点?  GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?  如何确保西部建站助手FTP传输的安全性?  制作网站公司那家好,网络公司是做什么的?  php json中文编码为null的解决办法  网站制作说明怎么写,简述网页设计的流程并说明原因?  招商网站制作流程,网站招商广告语?  北京网站制作公司哪家好一点,北京租房网站有哪些?  如何通过二级域名建站提升品牌影响力?  如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?  制作宣传网站的软件,小红书可以宣传网站吗?  北京网站制作的公司有哪些,北京白云观官方网站?  高端建站如何打造兼具美学与转化的品牌官网?  网站制作模板下载什么软件,ppt模板免费下载网站?  孙琪峥织梦建站教程如何优化数据库安全?  建站之星免费版是否永久可用?  如何选择高效便捷的WAP商城建站系统?  表情包在线制作网站免费,表情包怎么弄?  交易网站制作流程,我想开通一个网站,注册一个交易网址,需要那些手续?  网站插件制作软件免费下载,网页视频怎么下到本地插件?  广州网站制作的公司,现在专门做网站的公司有没有哪几家是比较好的,性价比高,模板也多的?  巅云智能建站系统:可视化拖拽+多端适配+免费模板一键生成  青浦网站制作公司有哪些,苹果官网发货地是哪里?  建站之星备案是否影响网站上线时间?  ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?  如何在万网自助建站平台快速创建网站?  济南专业网站制作公司,济南信息工程学校怎么样?  红河网站制作公司,红河事业单位身份证如何上传?  网站制作与设计教程,如何制作一个企业网站,建设网站的基本步骤有哪些?  电视网站制作tvbox接口,云海电视怎样自定义添加电视源? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。