微信小程序实现弹框效果


Posted in Javascript onMay 26, 2020

本文实例为大家分享了微信小程序实现弹框效果的具体代码,供大家参考,具体内容如下

先上代码

wxml部分:

<view class='top' bindtap='powerDrawer' data-statu="open" data-num='300'>
 <text>向上弹起</text>
</view>

<view class='top' bindtap='powerDrawer' data-statu="open" data-num='-300'>
 <text>向下弹出</text>
</view>



<!--遮罩部分-->
<view class="drawer_screen" wx:if="{{showModalStatus}}" bindtap="powerDrawer" data-statu="close"></view> 
<!--弹出层内容-->
<!--使用animation属性指定需要执行的动画-->
<view animation="{{animationData}}" class="drawer_box" wx:if="{{showModalStatus}}"> 
 <view class='modalBox'>
 <view class='modalQues'>是否退出?</view>
 <view class='modalConf'>是否确定退出</view>
 <view class='hidePick'>
  <text bindtap="powerDrawer" data-statu="close" class='hideModal' >确定</text>
  <text bindtap="powerDrawer" data-statu="close" class='hideModal' >取消</text>
 </view>
 </view>
</view>

wxss部分:

.top {
 margin: 0 auto;
 margin-top: 50rpx;
 background: #1da0ee;
 color: #fff;
 width: 50vw;
 text-align: center
}

.drawer_screen { 
 width: 100%; 
 height: 100%; 
 position: fixed; 
 top: 0; 
 left: 0; 
 z-index: 1000; 
 background: #000; 
 opacity: 0.5; 
 overflow: hidden; 
} 
 
/*content*/
.drawer_box { 
 width:600rpx;
 height:300rpx;
 overflow:hidden;
 position:fixed;
 top:50%;
 left:50%;
 z-index:1001;
 background:#FAFAFA;
 margin-top:-150rpx;
 border-radius:3px;
 margin-left:-300rpx;
} 

.modalBox {
 padding: 60rpx;
 font-size: 30rpx;
}


.modalConf {
 font-size: 24rpx;
 color: #999;
 margin-top: 20rpx; 
}

.hidePick {
 text-align: right;
 margin-top: 50rpx;
}

.hideModal {
 color: #1da0ee;
 margin-left: 130rpx;
}

js部分:

Page({
 data: {

 },
 // 自定义弹框
 powerDrawer: function (e) {
 console.log(e) //打印出当前对象
 var currentStatu = e.currentTarget.dataset.statu; //获取statu属性值
 var currentNum = e.currentTarget.dataset.num;//获取num属性值
 currentNum = parseInt(currentNum , 10) //注意,这一步是将字符串转换为数字
 this.util(currentStatu,currentNum) //将参数引入util方法
 },
 util: function (currentStatu,currentNum) {
 /* 动画部分 */
 // 第1步:创建动画实例 
 var animation = wx.createAnimation({
  duration: 200, //动画时长 
  timingFunction: "linear", //线性 
  delay: 0 //0则不延迟 
 });

 // 第2步:这个动画实例赋给当前的动画实例 
 this.animation = animation;
 console.log(currentNum)
 // 第3步:执行第一组动画 
 animation.opacity(0).translateY(currentNum).step();

 // 第4步:导出动画对象赋给数据对象储存 
 this.setData({
  animationData: animation.export()
 })

 // 第5步:设置定时器到指定时候后,执行第二组动画 
 setTimeout(function () {
  // 执行第二组动画 
  animation.opacity(1).translateY(0).step();
  // 给数据对象储存的第一组动画,更替为执行完第二组动画的动画对象 
  this.setData({
  animationData: animation
  })

  //关闭 
  if (currentStatu == "close") {
  this.setData(
   {
   showModalStatus: false
   }
  );
  }
 }.bind(this), 200)

 // 显示 
 if (currentStatu == "open") {
  this.setData(
  {
   showModalStatus: true
  }
  );
 }
 },
})

这只是很简单的一个弹框,类似的左右弹出只需要将translateY改为translateX就行了。 但是这段代码有一个问题就是当你点击关闭的时候,currentNum是不存在的,同时关闭弹框时currentNum我们不可以赋值 , 所以需要利用小程序的缓存APi来完善这个动效。

为大家推荐现在关注度比较高的微信小程序教程一篇:《微信小程序开发教程》小编为大家精心整理的,希望喜欢。

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

Javascript 相关文章推荐
JQuery 无废话系列教程(一) jquery入门 [推荐]
Jun 23 Javascript
JavaScript replace(rgExp,fn)正则替换的用法
Mar 04 Javascript
jQuery获取样式中颜色值的方法
Jan 29 Javascript
jQuery中animate动画第二次点击事件没反应
May 07 Javascript
百度地图api如何使用
Aug 03 Javascript
深入理解JavaScript程序中内存泄漏
Mar 17 Javascript
webuploader模态框ueditor显示问题解决方法
Dec 27 Javascript
微信小程序 弹框和模态框实现代码
Mar 10 Javascript
详解angularjs获取元素以及angular.element()用法
Jul 25 Javascript
react中fetch之cors跨域请求的实现方法
Mar 14 Javascript
vue-cli 首屏加载优化问题
Nov 06 Javascript
vue路由拦截器和请求拦截器知识点总结
Nov 08 Javascript
微信小程序自定义弹出层效果
May 26 #Javascript
详解JSON.stringify()的5个秘密特性
May 26 #Javascript
微信小程序实现简单文字跑马灯
May 26 #Javascript
微信小程序实现带放大效果的轮播图
May 26 #Javascript
vue实现图片上传功能
May 28 #Javascript
小程序实现图片移动缩放效果
May 26 #Javascript
jQuery实现的分页插件完整示例
May 26 #jQuery
You might like
细谈php中SQL注入攻击与XSS攻击
2012/06/10 PHP
常用PHP框架功能对照表
2014/10/23 PHP
PHP借助phpmailer发送邮件
2015/05/11 PHP
PHP文件缓存smarty模板应用实例分析
2016/02/26 PHP
php代码检查代理ip的有效性
2016/08/19 PHP
基于PHP的加载类操作以及其他两种魔术方法的应用实例
2017/08/28 PHP
ASP SQL防注入的方法
2008/12/25 Javascript
关于javascript document.createDocumentFragment()
2009/04/04 Javascript
js中获取事件对象的方法小结
2011/03/13 Javascript
各种页面定时跳转(倒计时跳转)代码总结
2013/10/24 Javascript
JS实现清除指定cookies的方法
2014/09/20 Javascript
jQuery中:button选择器用法实例
2015/01/04 Javascript
javascript鼠标滑动评分控件完整实例
2015/05/13 Javascript
JS与jQuery实现隔行变色的方法
2016/09/09 Javascript
AngularJS 中的Promise --- $q服务详解
2016/09/14 Javascript
深入学习js瀑布流布局
2016/10/14 Javascript
使用vue.js实现checkbox的全选和多个的删除功能
2017/02/17 Javascript
JavaScript实现无刷新上传预览图片功能
2017/08/02 Javascript
js 判断一个数字是不是2的n次方幂的实例
2017/11/26 Javascript
Vue实现active点击切换方法
2018/03/16 Javascript
this在vue和小程序中的使用详解
2019/01/28 Javascript
[29:16]完美世界DOTA2联赛决赛日 Inki vs LBZS 第三场 11.08
2020/11/10 DOTA
Python中用Ctrl+C终止多线程程序的问题解决
2013/03/30 Python
Python中实现对Timestamp和Datetime及UTC时间之间的转换
2015/04/08 Python
浅谈Python中带_的变量或函数命名
2017/12/04 Python
python实现QQ空间自动点赞功能
2019/04/09 Python
Windows10下Tensorflow2.0 安装及环境配置教程(图文)
2019/11/21 Python
Tensorflow轻松实现XOR运算的方式
2020/02/03 Python
python logging.info在终端没输出的解决
2020/05/12 Python
阿提哈德航空官方网站:Etihad Airways
2017/01/06 全球购物
下面这个程序执行后会有什么错误或者效果
2014/11/03 面试题
如何在Oracle中查看各个表、表空间占用空间的大小
2015/10/31 面试题
写求职信有哪些注意事项
2014/05/08 职场文书
2014年电工工作总结
2014/11/20 职场文书
同学聚会通知书
2015/04/20 职场文书
php 获取音视频时长,PHP 利用getid3 获取音频文件时长等数据
2021/04/01 PHP