微信小程序实现弹框效果


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 相关文章推荐
prototype 中文参数乱码解决方案
Nov 09 Javascript
js操作时间(年-月-日 时-分-秒 星期几)
Jun 20 Javascript
js 编码转换 gb2312 和 utf8 互转的2种方法
Aug 07 Javascript
原生js编写设为首页兼容ie、火狐和谷歌
Jun 05 Javascript
jQuery焦点图切换简易插件制作过程全纪录
Aug 27 Javascript
javascript trim函数在IE下不能用的解决方法
Sep 12 Javascript
浅谈JavaScript数据类型及转换
Feb 28 Javascript
js多功能分页组件layPage使用方法详解
May 19 Javascript
jQuery实现文本显示一段时间后隐藏的方法分析
Jun 20 jQuery
element el-table表格的二次封装实现(附表格高度自适应)
Jan 19 Javascript
Vue OpenLayer测距功能的实现
Apr 20 Vue.js
vue如何清除浏览器历史栈
May 25 Vue.js
微信小程序自定义弹出层效果
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
星际中的相关伤害
2020/03/04 星际争霸
php实现上传图片保存到数据库的方法
2015/02/11 PHP
PHP多维数组元素操作类的方法
2016/11/14 PHP
PHP微商城开源代码实例
2019/03/27 PHP
解决laravel上传图片之后,目录有图片,但是访问不到(404)的问题
2019/10/14 PHP
Jquery实战_读书笔记2 选择器
2010/01/22 Javascript
JS模拟面向对象全解(一、类型及传递)
2011/07/13 Javascript
jquer之ajaxQueue简单实现代码
2011/09/15 Javascript
JQuery设置和去除disabled属性的5种方法总结
2013/05/16 Javascript
使用C++为node.js写扩展模块
2015/04/22 Javascript
Javascript类型系统之String字符串类型详解
2016/06/21 Javascript
Easy UI动态树点击文字实现展开关闭功能
2017/09/30 Javascript
微信小程序获取当前时间及星期几的实例代码
2020/09/20 Javascript
[02:47]DOTA2亚洲邀请赛 HR战队出场宣传片
2015/02/07 DOTA
python模块restful使用方法实例
2013/12/10 Python
python fabric实现远程操作和部署示例
2014/03/25 Python
Python Web框架Flask中使用百度云存储BCS实例
2015/02/08 Python
python定时检查某个进程是否已经关闭的方法
2015/05/20 Python
python实现线程池的方法
2015/06/30 Python
详解python单例模式与metaclass
2016/01/15 Python
简单实现python聊天程序
2018/04/01 Python
Python cookbook(字符串与文本)在字符串的开头或结尾处进行文本匹配操作
2018/04/20 Python
Python实用工具FuckIt.py介绍
2019/07/02 Python
Django Admin中增加导出Excel功能过程解析
2019/09/04 Python
python 函数的缺省参数使用注意事项分析
2019/09/17 Python
使用Python函数进行模块化的实现
2019/11/15 Python
python实现异常信息堆栈输出到日志文件
2019/12/26 Python
DataFrame 数据合并实现(merge,join,concat)
2020/06/14 Python
HTML5 script元素async、defer异步加载使用介绍
2013/08/23 HTML / CSS
点菜员岗位职责范本
2014/02/14 职场文书
工作骂脏话检讨书
2014/10/05 职场文书
观看焦裕禄观后感
2015/06/09 职场文书
同意报考证明
2015/06/17 职场文书
答谢酒会主持词
2015/07/02 职场文书
大学生社会服务心得体会
2016/01/22 职场文书
JavaScript parseInt0.0000005打印5原理解析
2022/07/23 Javascript