微信小程序实现弹框效果


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 相关文章推荐
让ie运行js时提示允许阻止内容运行的解决方法
Oct 24 Javascript
基于jquery实现状态限定编辑的代码
Feb 11 Javascript
jQuery隔行变色与普通JS写法的对比
Apr 21 Javascript
Extjs 4.x 得到form CheckBox 复选框的值
May 04 Javascript
异步JavaScript编程中的Promise使用方法
Jul 28 Javascript
js基础之DOM中元素对象的属性方法详解
Oct 28 Javascript
详解angular中如何监控dom渲染完毕
Jan 03 Javascript
关于ES6的六个小特性(二)
Feb 20 Javascript
jQuery实现的简单在线计算器功能
May 11 jQuery
详解Vue.use自定义自己的全局组件
Jun 14 Javascript
clipboard在vue中的使用的方法示例
Oct 19 Javascript
在vue中使用el-tab-pane v-show/v-if无效的解决
Aug 03 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
dedecms模板标签代码官方参考
2007/03/17 PHP
连接到txt文本的超链接,不直接打开而是点击后下载的处理方法
2009/07/01 PHP
php批量上传的实现代码
2013/06/09 PHP
Yii查询生成器(Query Builder)用法实例教程
2014/09/04 PHP
如何实现php图片等比例缩放
2015/07/28 PHP
PHP简单实现生成txt文件到指定目录的方法
2016/04/25 PHP
PHP小白必须要知道的php基础知识(超实用)
2017/10/10 PHP
PHP实现从上往下打印二叉树的方法
2018/01/18 PHP
jquery二级导航内容均分的原理及实现
2013/08/13 Javascript
javascript实现动态侧边栏代码
2014/02/19 Javascript
js定时调用方法成功后并停止调用示例
2014/04/08 Javascript
jQuery Validate表单验证插件 添加class属性形式的校验
2016/01/18 Javascript
jQuery Ajax页面局部加载方法汇总
2016/06/02 Javascript
微信小程序 石头剪刀布实例代码
2017/01/04 Javascript
尝试自己动手用react来写一个分页组件(小结)
2018/02/09 Javascript
vue组件文档(.md)中如何自动导入示例(.vue)详解
2019/01/25 Javascript
javascript绘制简单钟表效果
2020/04/07 Javascript
通过实例了解Render Props回调地狱解决方案
2020/11/04 Javascript
python中实现指定时间调用函数示例代码
2017/09/08 Python
Python数据结构与算法之图的基本实现及迭代器实例详解
2017/12/12 Python
Python数据结构与算法之图的广度优先与深度优先搜索算法示例
2017/12/14 Python
python游戏地图最短路径求解
2019/01/16 Python
python如何实现异步调用函数执行
2019/07/08 Python
python 申请内存空间,用于创建多维数组的实例
2019/12/02 Python
python两个_多个字典合并相加的实例代码
2019/12/26 Python
解决python -m pip install --upgrade pip 升级不成功问题
2020/03/05 Python
Autopep8的使用(python自动编排工具)
2021/03/02 Python
购买原创艺术品:Zatista
2019/11/09 全球购物
在C语言中实现抽象数据类型什么方法最好
2014/06/26 面试题
某公司部分笔试题
2013/11/05 面试题
大三毕业自我鉴定
2014/01/15 职场文书
俞敏洪励志演讲稿
2014/04/29 职场文书
机电一体化专业求职信
2014/07/22 职场文书
2016年小学端午节活动总结
2016/04/01 职场文书
nginx内存池源码解析
2021/11/20 Servers
nginx实现多geoserver服务的负载均衡
2022/05/15 Servers