微信小程序实现弹框效果


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实例教程(19) 使用HoTMetal(6)
Dec 23 Javascript
Javascript学习笔记6 prototype的提出
Jan 11 Javascript
js实现仿网易点击弹出提示同时背景变暗效果
Aug 13 Javascript
关于JavaScript的变量的数据类型的判断方法
Aug 14 Javascript
javascript bom是什么及bom和dom的区别
Nov 26 Javascript
JS简单获取客户端IP地址的方法【调用搜狐接口】
Sep 05 Javascript
bootstrap timepicker在angular中取值并转化为时间戳
Jun 13 Javascript
vue+Java后端进行调试时解决跨域问题的方式
Oct 19 Javascript
JS+CSS实现滚动数字时钟效果
Dec 25 Javascript
微信小程序实现时间预约功能
Nov 27 Javascript
小程序绑定用户方案优化小结
May 15 Javascript
js 实现 list转换成tree的方法示例(数组到树)
Aug 18 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 的异常处理程序
2014/06/22 PHP
Laravel模板引擎Blade中section的一些标签的区别介绍
2015/02/10 PHP
使用PHP生成二维码的方法汇总
2015/07/22 PHP
laravel 实现登陆后返回登陆前的页面方法
2019/10/03 PHP
phpQuery采集网页实现代码实例
2020/04/02 PHP
关于恒等于(===)和非恒等于(!==)
2007/08/20 Javascript
JQuery for与each性能比较分析
2013/05/14 Javascript
js处理自己不能定义二维数组的方法详解
2014/03/03 Javascript
JavaScript实现找出数组中最长的连续数字序列
2014/09/03 Javascript
基于JS实现数字+字母+中文的混合排序方法
2016/06/06 Javascript
js模式化窗口问题![window.dialogArguments]
2016/10/30 Javascript
javascript删除html标签函数cIsHTML
2017/01/09 Javascript
原生js获取left值和top值的三种方法
2017/08/02 Javascript
Angular实现图片裁剪工具ngImgCrop实践
2017/08/17 Javascript
JavaScript数据结构与算法之二叉树实现查找最小值、最大值、给定值算法示例
2019/03/01 Javascript
JS表单验证插件之数据与逻辑分离操作实例分析【策略模式】
2020/05/01 Javascript
基于JavaScript实现猜数字游戏代码实例
2020/07/30 Javascript
[04:54]DOTA2-DPC中国联赛1月31日Recap集锦
2021/03/11 DOTA
python中的代码编码格式转换问题
2015/06/10 Python
Python实现在线暴力破解邮箱账号密码功能示例【测试可用】
2017/09/06 Python
pyqt5实现按钮添加背景图片以及背景图片的切换方法
2019/06/13 Python
Python pandas DataFrame操作的实现代码
2019/06/21 Python
Python selenium 自动化脚本打包成一个exe文件(推荐)
2020/01/14 Python
python学生管理系统的实现
2020/04/05 Python
什么是python类属性
2020/06/10 Python
Python利用imshow制作自定义渐变填充柱状图(colorbar)
2020/12/10 Python
CSS3文本换行word-wrap解决英文文本超过固定宽度不换行
2013/10/10 HTML / CSS
浅谈CSS3特性查询(Feature Query: @supports)功能简介
2017/07/31 HTML / CSS
利用HTML5绘制点线面组成的3D图形的示例
2015/05/12 HTML / CSS
Html5元素及基本语法详解
2016/08/02 HTML / CSS
HTML5操作WebSQL数据库的实例代码
2017/08/26 HTML / CSS
美国户外运动商店:Sun & Ski
2018/08/23 全球购物
C++:局部变量能否和全局变量重名
2014/03/03 面试题
外语专业毕业生个人的自荐信
2013/11/19 职场文书
社会实践感言
2014/01/25 职场文书
2014年机关党建工作总结
2014/11/11 职场文书