微信小程序实现漂亮的弹窗效果


Posted in Javascript onMay 26, 2020

最近项目里需要实现一个带着logo的美美哒弹窗,可是翻遍小程序的文档也只能见到wx.showModal这个丑丑的东西……
场面一度十分尴尬
可是得做啊,要不然产品大姐又要暴走了……
好吧,来研究一下模态对话框的性质自己DIY吧~

实现思路

模态对话框之所以被叫做“模态”,就是因为在它弹出的时候,用户如果不关闭这个对话框,是无法对其他窗口进行操作的。
那么这样一来,我们的思路就很明确了:

1. 构建一个蒙层(mask),使得背景变暗,并且阻止用户对对话框外界面的这里写代码片点击事件;
2. 构建一个对话框,在需要时弹出即可(弹出同时触发蒙层)。

示例代码

.wxml:

<view class="mask" catchtouchmove="preventTouchMove" wx:if="{{showModal}}"></view>

<view class="modalDlg" wx:if="{{showModal}}">
 <image src="/figures/logo-smile.png"/>
 <text>欢迎来到模态对话框~</text>
 <button bindtap="go">点我可以关掉对话框</button>
</view>

<button bindtap="submit">点我弹窗</button>

.wxss:

.mask{
 width: 100%;
 height: 100%;
 position: fixed;
 top: 0;
 left: 0;
 background: #000;
 z-index: 9000;
 opacity: 0.7;
}

.modalDlg{
 width: 580rpx;
 height: 620rpx;
 position: fixed;
 top: 50%;
 left: 0;
 z-index: 9999;
 margin: -370rpx 85rpx;
 background-color: #fff;
 border-radius: 36rpx;
 display: flex;
 flex-direction: column;
 align-items: center;
}

.js:

Page({

 data: {
  showModal: false
 },

 submit: function() {
  this.setData({
  showModal: true
  })
 },

 preventTouchMove: function() {

 },


 go: function() { 
  this.setData({
  showModal: false
  })
 }

})

需要注意的地方

  1. 蒙层view中绑定的preventTouchMove函数是一个空函数,使用了catch事件,目的就是阻止touchmove这样一个冒泡事件继续向下传递。
  2. 蒙层的wxss样式中,指定其大小为100%以占满整个屏幕。
  3. 模态对话框与蒙层的wxss样式中均有z-index属性,为的是保证对话框始终浮在蒙层的上方(即对话框的z-index始终要比蒙层的大)

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

Javascript 相关文章推荐
两种简单实现菜单高亮显示的JS类代码
Jun 27 Javascript
js调用后台servlet方法实例
Jun 09 Javascript
JavaScript实现的石头剪刀布游戏源码分享
Aug 22 Javascript
easyui tree带checkbox实现单选的简单实例
Nov 07 Javascript
史上最全JavaScript常用的简写技巧(推荐)
Aug 17 Javascript
详谈commonjs模块与es6模块的区别
Oct 18 Javascript
vue中动态绑定表单元素的属性方法
Feb 23 Javascript
微信小程序实现简单跑马灯效果
May 26 Javascript
实例讲解JavaScript预编译流程
Jan 24 Javascript
微信小程序开发的基本流程步骤
Jan 31 Javascript
详解Vue中的MVVM原理和实现方法
Jul 15 Javascript
vue+element使用动态加载路由方式实现三级菜单页面显示的操作
Aug 04 Javascript
Angular通过指令动态添加组件问题
Jul 09 #Javascript
js实现左右两侧浮动广告
Jul 09 #Javascript
vue-router中scrollBehavior的巧妙用法
Jul 09 #Javascript
JavaScript解决浮点数计算不准确问题的方法分析
Jul 09 #Javascript
Vue自定义指令封装节流函数的方法示例
Jul 09 #Javascript
JavaScript实现创建自定义对象的常用方式总结
Jul 09 #Javascript
vue-cli配置环境变量的方法
Jul 09 #Javascript
You might like
深入理解PHP原理之异常机制
2010/08/21 PHP
Codeigniter实现多文件上传并创建多个缩略图
2014/06/12 PHP
Thinkphp模板中截取字符串函数简介
2014/06/17 PHP
php中strtotime函数用法详解
2014/11/15 PHP
Yii实现多数据库主从读写分离的方法
2014/12/29 PHP
PHP对文件夹递归执行chmod命令的方法
2015/06/19 PHP
php使用flock阻塞写入文件和非阻塞写入文件的实例讲解
2017/07/10 PHP
PHP基于双向链表与排序操作实现的会员排名功能示例
2017/12/26 PHP
基于Jquery的仿Windows Aero弹出窗(漂亮的关闭按钮)
2010/09/28 Javascript
js下获得客户端操作系统的函数代码(1:vista,2:windows7,3:2000,4:xp,5:2003,6:2008)
2011/10/31 Javascript
js 在定义的时候立即执行的函数表达式(function)写法
2013/01/16 Javascript
学习JavaScript设计模式之享元模式
2016/01/18 Javascript
AngularJS封装指令方法详解
2016/12/12 Javascript
jQuery为DOM动态追加事件的方法
2017/02/16 Javascript
js转换对象为xml
2017/02/17 Javascript
实例详解display:none与visible:hidden的区别
2017/03/30 Javascript
详解使用Node.js 将txt文件转为Excel文件
2017/07/05 Javascript
JQuery 获取多个select标签option的text内容(实例)
2017/09/07 jQuery
layui 选择列表,打勾,点击确定返回数据的例子
2019/09/02 Javascript
忘记ftp密码使用python ftplib库暴力破解密码的方法示例
2014/01/22 Python
Python使用代理抓取网站图片(多线程)
2014/03/14 Python
python找出因数与质因数的方法
2019/07/25 Python
Django REST framework内置路由用法
2019/07/26 Python
pyinstaller将含有多个py文件的python程序做成exe
2020/04/29 Python
CSS3实现王者荣耀匹配人员加载页面的方法
2019/04/16 HTML / CSS
亚马逊印度站:Amazon.in
2017/10/15 全球购物
英国在线购买轮胎、预订汽车、汽车维修和装配网站:Protyre
2020/04/12 全球购物
网络编辑求职信
2014/04/30 职场文书
2014年为民办实事工作总结
2014/12/20 职场文书
小升初自荐信怎么写
2015/03/26 职场文书
2015年财务人员工作总结
2015/04/10 职场文书
2015年加油站站长工作总结
2015/05/27 职场文书
2015年社区国庆节活动总结
2015/07/30 职场文书
2016入党培训心得体会范文
2016/01/08 职场文书
2016年小学植树节活动总结
2016/03/16 职场文书
Windows server 2003卸载和安装IIS的图文教程
2022/07/15 Servers