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


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 相关文章推荐
javascript不同页面传值的改进版
Sep 30 Javascript
Javascript代码在页面加载时的执行顺序介绍
May 03 Javascript
用jQuery模拟select下拉框的简单示例代码
Jan 26 Javascript
创建你的第一个AngularJS应用的方法
Jun 16 Javascript
浅谈js原生拖放
Nov 21 Javascript
bootstrap3-dialog-master模态框使用详解
Aug 22 Javascript
jQuery实现动态添加节点与遍历节点功能示例
Nov 09 jQuery
node.js博客项目开发手记
Mar 16 Javascript
JS实现获取word文档内容并输出显示到html页面示例
Jun 23 Javascript
vue.js实现h5机器人聊天(测试版)
Jul 16 Javascript
React Hook用法示例详解(6个常见hook)
Apr 28 Javascript
详解JS WebSocket断开原因和心跳机制
May 07 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文件操作之小型留言本实例
2015/06/20 PHP
PHP读MYSQL中文乱码的快速解决方法
2016/10/01 PHP
PHP实现一个限制实例化次数的类示例
2019/09/16 PHP
laravel-admin的多级联动方法
2019/09/30 PHP
JS input 数字验证代码
2009/07/30 Javascript
ExtJS Grid使用SimpleStore、多选框的方法
2009/11/20 Javascript
jQuery AjaxQueue改进步骤
2011/10/06 Javascript
js实现仿QQ秀换装效果的方法
2015/03/04 Javascript
javascript实现随机读取数组的方法
2015/08/03 Javascript
js实现文本框宽度自适应文本宽度的方法
2015/08/13 Javascript
如何利用AngularJS打造一款简单Web应用
2015/12/05 Javascript
jQuery实现选项卡切换效果简单演示
2015/12/09 Javascript
举例讲解如何判断JavaScript中对象的类型
2016/04/22 Javascript
Angular 4.x 动态创建表单实例
2017/04/25 Javascript
Hexo已经看腻了,来手把手教你使用VuePress搭建个人博客
2018/04/26 Javascript
webpack手动配置React开发环境的步骤
2018/07/02 Javascript
js验证身份证号码记录的方法
2019/04/26 Javascript
node.js事件轮询机制原理知识点
2019/12/22 Javascript
小程序新版订阅消息模板消息
2019/12/31 Javascript
JavaScript Window浏览器对象模型原理解析
2020/05/30 Javascript
[02:32]DOTA2英雄基础教程 祸乱之源
2013/12/23 DOTA
分享Python文本生成二维码实例
2016/01/06 Python
基于python实现学生管理系统
2018/10/17 Python
详解Python 解压缩文件
2019/04/09 Python
如何不用安装python就能在.NET里调用Python库
2019/07/12 Python
Python实现代码统计工具
2019/09/19 Python
python数据库编程 Mysql实现通讯录
2020/03/27 Python
python 删除excel表格重复行,数据预处理操作
2020/07/06 Python
python获取命令行参数实例方法讲解
2020/11/02 Python
图解CSS3制作圆环形进度条的实例教程
2016/05/26 HTML / CSS
X/HTML5 和 XHTML2
2008/10/17 HTML / CSS
世界知名接发和假发品牌:Poze Hair
2017/03/08 全球购物
linux面试题参考答案(6)
2016/06/23 面试题
化验室技术员岗位职责
2013/12/24 职场文书
开展批评与自我批评发言材料
2014/10/17 职场文书
西安导游词
2015/02/12 职场文书