微信小程序实现弹框效果


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函数
Dec 22 Javascript
html中的input标签的checked属性jquery判断代码
Sep 19 Javascript
JQuery入门—编写一个简单的JQuery应用案例
Jan 03 Javascript
js统计录入文本框中字符的个数并加以限制不超过多少
May 23 Javascript
jquery mobile 移动web(5)
Dec 20 Javascript
JavaScript面试题(指针、帽子和女朋友)
Nov 23 Javascript
webpack vue 项目打包生成的文件,资源文件报404问题的修复方法(总结篇)
Jan 09 Javascript
解决angularjs前后端分离调用接口传递中文时中文乱码的问题
Aug 13 Javascript
浅谈vue项目4rs vue-router上线后history模式遇到的坑
Sep 27 Javascript
详解vue路由篇(动态路由、路由嵌套)
Jan 27 Javascript
ES6中定义类和对象的方法示例
Jul 31 Javascript
JavaScript实现简单的计算器
Jan 16 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文件操作的详解
2013/06/05 PHP
PHP根据树的前序遍历和中序遍历构造树并输出后序遍历的方法
2017/11/10 PHP
关于laravel框架中的常用目录路径函数
2019/10/23 PHP
js的逻辑运算符 ||
2010/05/31 Javascript
TinyMCE 新增本地图片上传功能
2010/11/05 Javascript
JS实现字体选色板实例代码
2013/11/20 Javascript
简单纯js实现点击切换TAB标签实例
2015/08/23 Javascript
AngularJS中使用HTML5手机摄像头拍照
2016/02/22 Javascript
JS表格组件神器bootstrap table详解(强化版)
2016/05/26 Javascript
基于jQuery实现的查看全文功能【实用】
2016/12/11 Javascript
关于Vue.nextTick()的正确使用方法浅析
2017/08/25 Javascript
微信小程序使用toast消息对话框提示用户忘记输入用户名或密码功能【附源码下载】
2017/12/09 Javascript
react中实现搜索结果中关键词高亮显示
2018/07/31 Javascript
VUE实现密码验证与提示功能
2019/10/18 Javascript
[03:07]DOTA2英雄基础教程 冰霜诅咒极寒幽魂
2013/12/06 DOTA
Python兔子毒药问题实例分析
2015/03/05 Python
Python 描述符(Descriptor)入门
2016/11/20 Python
python基础教程之Filter使用方法
2017/01/17 Python
Python实现复杂对象转JSON的方法示例
2017/06/22 Python
有趣的python小程序分享
2017/12/05 Python
Python检测数据类型的方法总结
2019/05/20 Python
python检测服务器端口代码实例
2019/08/31 Python
Python实现图片识别加翻译功能
2019/12/26 Python
在tensorflow中设置保存checkpoint的最大数量实例
2020/01/21 Python
解决json中ensure_ascii=False的问题
2020/04/03 Python
django admin 根据choice字段选择的不同来显示不同的页面方式
2020/05/13 Python
html5 横向滑动导航栏的方法示例
2020/05/08 HTML / CSS
金蝶的一道SQL笔试题
2012/12/18 面试题
2014年打非治违工作总结
2014/11/13 职场文书
2015年小学实验室工作总结
2015/07/28 职场文书
中学政教处工作总结
2015/08/13 职场文书
2019年第四季度财务部门工作计划
2019/11/02 职场文书
python数据可视化使用pyfinance分析证券收益示例详解
2021/11/20 Python
vue使用echarts实现折线图
2022/03/21 Vue.js
Python各协议下socket黏包问题原理
2022/04/12 Python
服务器间如何实现文件共享
2022/05/20 Servers