微信小程序实战之自定义抽屉菜单(7)


Posted in Javascript onApril 18, 2017

微信提供了动画api,就是下面这个

微信小程序实战之自定义抽屉菜单(7)

相关链接:https://mp.weixin.qq.com/debug/wxadoc/dev/api/api-animation.html#wxcreateanimationobject

通过使用这个创建动画的api,可以做出很多特效出来

下面介绍一个抽屉菜单的案例

实现代码:
wxml:

<!--button--> 
<view class="btn" bindtap="powerDrawer" data-statu="open">button</view> 
<!--mask--> 
<view class="drawer_screen" bindtap="powerDrawer" data-statu="close" wx:if="{{showModalStatus}}"></view> 
<!--content--> 
<!--使用animation属性指定需要执行的动画--> 
<view animation="{{animationData}}" class="drawer_attr_box" wx:if="{{showModalStatus}}"> 
 <!--drawer content--> 
 <view class="drawer_content"> 
 <view class="drawer_title line">菜单1</view> 
 <view class="drawer_title line">菜单2</view> 
 <view class="drawer_title line">菜单3</view> 
 <view class="drawer_title line">菜单4</view> 
 <view class="drawer_title">菜单5</view> 
 </view> 
</view>

wxss:

/*button*/ 
.btn { 
 width: 80%; 
 padding: 20rpx 0; 
 border-radius: 10rpx; 
 text-align: center; 
 margin: 40rpx 10%; 
 background: #0C1939; 
 color: #fff; 
} 
/*mask*/ 
.drawer_screen { 
 width: 100%; 
 height: 100%; 
 position: fixed; 
 top: 0; 
 left: 0; 
 z-index: 1000; 
 background: #000; 
 opacity: 0.2; 
 overflow: hidden; 
} 
/*content*/ 
.drawer_attr_box { 
 width: 100%; 
 overflow: hidden; 
 position: fixed; 
 bottom: 0; 
 left: 0; 
 z-index: 1001; 
 background: #fff; 
} 
.drawer_content { 
 padding: 20rpx 40rpx; 
 height: 470rpx; 
 overflow-y: scroll; 
} 
.drawer_title{ 
 padding:20rpx; 
 font:42rpx "microsoft yahei"; 
 text-align: center; 
} 
.line{ 
 border-bottom: 1px solid #f8f8f8; 
}

js:

Page({ 
 data: { 
 showModalStatus: false 
 }, 
 powerDrawer: function (e) { 
 var currentStatu = e.currentTarget.dataset.statu; 
 this.util(currentStatu) 
 }, 
 util: function(currentStatu){ 
 /* 动画部分 */ 
 // 第1步:创建动画实例 
 var animation = wx.createAnimation({ 
  duration: 200, //动画时长 
  timingFunction: "linear", //线性 
  delay: 0 //0则不延迟 
 }); 
  
 // 第2步:这个动画实例赋给当前的动画实例 
 this.animation = animation; 
 
 // 第3步:执行第一组动画:Y轴偏移240px后(盒子高度是240px),停 
 animation.translateY(240).step(); 
 
 // 第4步:导出动画对象赋给数据对象储存 
 this.setData({ 
  animationData: animation.export() 
 }) 
  
 // 第5步:设置定时器到指定时候后,执行第二组动画 
 setTimeout(function () { 
  // 执行第二组动画:Y轴不偏移,停 
  animation.translateY(0).step() 
  // 给数据对象储存的第一组动画,更替为执行完第二组动画的动画对象 
  this.setData({ 
  animationData: animation 
  }) 
  
  //关闭抽屉 
  if (currentStatu == "close") { 
  this.setData( 
   { 
   showModalStatus: false 
   } 
  ); 
  } 
 }.bind(this), 200) 
 
 // 显示抽屉 
 if (currentStatu == "open") { 
  this.setData( 
  { 
   showModalStatus: true 
  } 
  ); 
 } 
 } 
})

微信小程序实战之自定义抽屉菜单(7)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js中获取事件对象的方法小结
Mar 13 Javascript
JavaScript计算字符串中每个字符出现次数的小例子
Jul 02 Javascript
浅谈JavaScript 框架分类
Nov 10 Javascript
JavaScript实现自动生成网页元素功能(按钮、文本等)
Nov 21 Javascript
在JavaScript中模拟类(class)及类的继承关系
May 20 Javascript
基于JavaScript实现前端文件的断点续传
Oct 17 Javascript
js 实现一些跨浏览器的事件方法详解及实例
Oct 27 Javascript
vue.js绑定事件监听器示例【基于v-on事件绑定】
Jul 07 Javascript
回顾Javascript React基础
Jun 15 Javascript
Vue + Scss 动态切换主题颜色实现换肤的示例代码
Apr 27 Javascript
vue 动态创建组件的两种方法
Dec 31 Vue.js
vue使用节流函数的踩坑实例指南
May 20 Vue.js
微信小程序--onShareAppMessage分享参数用处(页面分享)
Apr 18 #Javascript
微信小程序实战之自定义toast(6)
Apr 18 #Javascript
Jquery-data的三种用法
Apr 18 #jQuery
微信小程序实战之登录页面制作(5)
Mar 30 #Javascript
Angular2数据绑定详解
Apr 18 #Javascript
微信小程序教程系列之设置标题栏和导航栏(7)
Jun 29 #Javascript
微信小程序实战之仿android fragment可滑动底部导航栏(4)
Apr 16 #Javascript
You might like
php中理解print EOT分界符和echo EOT的用法区别小结
2010/02/21 PHP
AMFPHP php远程调用(RPC, Remote Procedure Call)工具 快速入门教程
2010/05/10 PHP
php将会员数据导入到ucenter的代码
2010/07/18 PHP
PHP中的Streams详细介绍
2014/11/12 PHP
php从csv文件读取数据并输出到网页的方法
2015/03/14 PHP
php脚本运行时的超时机制详解
2016/02/17 PHP
PHP和MySql中32位和64位的整形范围是多少
2016/02/18 PHP
php使用PDO获取结果集的方法
2017/02/16 PHP
php中文乱码问题的终极解决方案汇总
2017/08/01 PHP
Javascript模块模式分析
2008/05/16 Javascript
JavaScript的public、private和privileged模式
2009/12/28 Javascript
JavaScript的类型简单说明
2010/09/03 Javascript
仿JQuery输写高效JSLite代码的一些技巧
2015/01/13 Javascript
自定义jQuery插件方式实现强制对象重绘的方法
2015/03/23 Javascript
PHP和NodeJs开发的应用如何共用Session
2015/04/16 NodeJs
javascript如何实现360度全景照片问题汇总
2016/04/04 Javascript
JavaScript实现小球沿正弦曲线运动
2020/09/07 Javascript
WebGL three.js学习笔记之阴影与实现物体的动画效果
2019/04/25 Javascript
小程序和web画三角形实现解析
2019/09/02 Javascript
[00:36]DOTA2上海特级锦标赛 Alliance战队宣传片
2016/03/04 DOTA
python以环状形式组合排列图片并输出的方法
2015/03/17 Python
关于Python如何避免循环导入问题详解
2017/09/14 Python
详解Python nose单元测试框架的安装与使用
2017/12/20 Python
python 实现将字典dict、列表list中的中文正常显示方法
2018/07/06 Python
在ubuntu16.04中将python3设置为默认的命令写法
2018/10/31 Python
Python打包工具PyInstaller的安装与pycharm配置支持PyInstaller详细方法
2020/02/27 Python
Python迭代器协议及for循环工作机制详解
2020/07/14 Python
Html5 Canvas 实现一个“刮刮乐”游戏
2019/09/05 HTML / CSS
德国奢侈品网上商城:Mytheresa
2016/08/24 全球购物
参观考察邀请函范文
2014/01/29 职场文书
《再别康桥》教学反思
2014/02/12 职场文书
学校师德师风整改措施
2014/10/27 职场文书
铁路安全反思材料
2014/12/24 职场文书
学校国庆节活动总结
2015/03/23 职场文书
爱护环境建议书
2015/09/14 职场文书
2016大学生就业指导课心得体会
2016/01/15 职场文书