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


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 相关文章推荐
让iframe框架网页在任何浏览器下自动伸缩
Aug 18 Javascript
jQuery 1.2.x 升? 1.3.x 注意事项
May 06 Javascript
javascript 添加和移除函数的通用方法
Oct 20 Javascript
jquery仿QQ商城带左右按钮控制焦点图片切换滚动效果
Jun 27 Javascript
基于jQuery仿淘宝产品图片放大镜特效
Oct 19 Javascript
JavaScript将base64图片转换成formData并通过AJAX提交的实现方法
Oct 24 Javascript
基于百度地图api清除指定覆盖物(Overlay)的方法
Jan 26 Javascript
深入浅析AngularJs模版与v-bind
Jul 06 Javascript
JS二级菜单不同实现方法分析【4种方法】
Dec 21 Javascript
vue中的使用token的方法示例
Mar 10 Javascript
JavaScript仿京东秒杀倒计时
Mar 17 Javascript
小程序wx.getUserProfile接口的具体使用
Jun 02 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
第十节 抽象方法和抽象类 [10]
2006/10/09 PHP
php获取数组元素中头一个数组元素值的实现方法
2014/12/20 PHP
PHP文件操作详解
2016/12/30 PHP
PHP session垃圾回收机制实例分析
2019/06/28 PHP
jquery实现的带缩略图的焦点图片切换(自动播放/响应鼠标动作)
2013/01/23 Javascript
js用闭包遍历树状数组的方法
2014/03/19 Javascript
JQuery 给元素绑定click事件多次执行的解决方法
2014/09/09 Javascript
javascript制作坦克大战全纪录(1)
2014/11/27 Javascript
了不起的node.js读书笔记之node的学习总结
2014/12/22 Javascript
js实现绿白相间竖向网页百叶窗动画切换效果
2015/03/02 Javascript
纯javascript实现四方向文本无缝滚动效果
2015/06/16 Javascript
javascript实现tab切换特效
2015/11/12 Javascript
NodeJS实现阿里大鱼短信通知发送
2016/01/17 NodeJs
AngularJS通过$location获取及改变当前页面的URL
2016/09/23 Javascript
微信小程序 ecshop地址三级联动实现实例代码
2017/02/28 Javascript
jQuery.Form实现Ajax上传文件同时设置headers的方法
2017/06/26 jQuery
详解vue 模版组件的三种用法
2017/07/21 Javascript
vue实现验证码输入框组件
2017/12/14 Javascript
微信开发之微信jssdk录音功能开发示例
2018/10/22 Javascript
vue实现简单的星级评分组件源码
2018/11/16 Javascript
Python 出现错误TypeError: ‘NoneType’ object is not iterable解决办法
2017/01/12 Python
python3+dlib实现人脸识别和情绪分析
2018/04/21 Python
python如何操作mysql
2020/08/17 Python
MSC邮轮官方网站:加勒比海、地中海和世界各地的假期
2018/08/27 全球购物
介绍一下SQL注入攻击的种类和防范手段
2012/02/18 面试题
介绍下java.util.Arrays类
2012/10/16 面试题
大学生职业生涯规划书范文
2014/01/14 职场文书
公司晚会策划方案
2014/05/17 职场文书
民族精神月活动总结
2014/08/28 职场文书
浪漫婚礼主题活动策划方案
2014/09/15 职场文书
综合素质评价思想道德自我评价
2015/03/09 职场文书
大学生求职信怎么写
2015/03/19 职场文书
运动会通讯稿100字
2015/07/20 职场文书
Python爬虫之自动爬取某车之家各车销售数据
2021/06/02 Python
分位数回归模型quantile regeression应用详解及示例教程
2021/11/02 Python
电脑开机弹出documents文件夹怎么回事?弹出documents文件夹解决方法
2022/04/08 数码科技