微信小程序实现弹框效果


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 相关文章推荐
用JavaScript页面不刷新时全选择,全删除(GridView)
Apr 14 Javascript
DIV+CSS+JS不间断横向滚动实现代码
Mar 19 Javascript
动态添加option及createElement使用示例
Jan 26 Javascript
JavaScript中的style.cssText使用教程
Nov 06 Javascript
javascript如何写热点图
Dec 08 Javascript
js利用正则表达式检验输入内容是否为网址
Jul 05 Javascript
jQuery取得元素标签名称小结(附代码)
Aug 16 jQuery
node.js文件上传重命名以及移动位置的示例代码
Jan 19 Javascript
基于js中的存储键值对以及注意事项介绍
Mar 30 Javascript
Vue.set() this.$set()引发的视图更新思考及注意事项
Aug 30 Javascript
详解vue配置后台接口方式
Mar 29 Javascript
微信小程序前端promise封装代码实例
Aug 24 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中strpos、strstr和stripos、stristr函数分析
2016/06/11 PHP
php微信公众平台示例代码分析(二)
2016/12/06 PHP
Laravel框架实现redis集群的方法分析
2017/09/14 PHP
PHP基于pdo的数据库操作类【可支持mysql、sqlserver及oracle】
2018/05/21 PHP
laravel5 Eloquent 实现事务方式
2019/10/21 PHP
CSS中简写属性要注意TRouBLe的顺序问题(避免踩坑)
2021/03/09 HTML / CSS
网页的标准,IMG不支持onload标签怎么办
2006/06/29 Javascript
document.createElement()用法
2013/03/13 Javascript
如何正确使用javascript 来进行我们的程序开发
2014/06/23 Javascript
浅谈javascript中自定义模版
2015/01/29 Javascript
javascript实现鼠标拖动改变层大小的方法
2015/04/30 Javascript
jQuery结合ajax实现动态加载文本内容
2015/05/19 Javascript
基于jQuery实现表格的排序
2016/12/02 Javascript
BootStrap CSS全局样式和表格样式源码解析
2017/01/20 Javascript
xmlplus组件设计系列之网格(DataGrid)(10)
2017/05/05 Javascript
webpack踩坑之路图片的路径与打包
2017/09/05 Javascript
JS设计模式之观察者模式实现实时改变页面中金额数的方法
2018/02/05 Javascript
react-native封装插件swiper的使用方法
2018/03/20 Javascript
jQuery实现的淡入淡出与滑入滑出效果示例
2018/04/18 jQuery
浅谈PDF.js使用心得
2018/06/07 Javascript
TypeScript中使用getElementXXX()的示例代码
2019/09/12 Javascript
layui: layer.open加载窗体时出现遮罩层的解决方法
2019/09/26 Javascript
微信小程序服务器日期格式化问题
2020/01/07 Javascript
详解JavaScript中的数据类型,以及检测数据类型的方法
2020/09/17 Javascript
python 获取文件列表(或是目录例表)
2009/03/25 Python
Python爬虫框架Scrapy实战之批量抓取招聘信息
2015/08/07 Python
Python输出由1,2,3,4组成的互不相同且无重复的三位数
2018/02/01 Python
Python爬虫的两套解析方法和四种爬虫实现过程
2018/07/20 Python
Python数据可视化教程之Matplotlib实现各种图表实例
2019/01/13 Python
python实现五子棋游戏(pygame版)
2020/01/19 Python
Python发送邮件封装实现过程详解
2020/05/09 Python
python小白切忌乱用表达式
2020/05/29 Python
广州喜创信息技术有限公司JAVA软件工程师笔试题
2012/10/17 面试题
日语系毕业生推荐信
2013/11/11 职场文书
乡镇总工会学雷锋活动总结
2014/03/01 职场文书
小学校园广播稿(3篇)
2014/09/19 职场文书