微信小程序实战之自定义抽屉菜单(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 相关文章推荐
JQuery Tab选项卡效果代码改进版
Apr 01 Javascript
JavaScript实现网页上的浮动广告的简单方法
Jun 14 Javascript
javascript获取url上某个参数的方法
Nov 08 Javascript
jQuery循环滚动新闻列表示例代码
Jun 17 Javascript
Bootstrap实现响应式导航栏效果
Dec 28 Javascript
JavaScript中的时间处理小结
Feb 24 Javascript
微信小程序 Button 组件详解及简单实例
Jan 10 Javascript
移动端基础事件总结与应用
Jan 12 Javascript
原生JS发送异步数据请求
Jun 08 Javascript
jquery ztree实现右键收藏功能
Nov 20 jQuery
原生js调用json方法总结
Feb 22 Javascript
JS中循环遍历数组的四种方式总结
Jan 23 Javascript
微信小程序--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
解决PHP4.0 和 PHP5.0类构造函数的兼容问题
2013/08/01 PHP
ThinkPHP使用心得分享-ThinkPHP + Ajax 实现2级联动下拉菜单
2014/05/15 PHP
微信公众平台网页授权获取用户基本信息中授权回调域名设置的变动
2014/10/21 PHP
thinkphp模板赋值与替换实例简述
2014/11/24 PHP
PHP实现linux命令tail -f
2016/02/22 PHP
php curl发送请求实例方法
2019/08/01 PHP
JSON为什么那样红为什么要用json(另有洞天)
2012/12/26 Javascript
javascript和HTML5利用canvas构建猜牌游戏实现算法
2013/07/17 Javascript
JS实现的一个简单的Autocomplete自动完成例子
2014/04/16 Javascript
iframe实用操作锦集
2014/04/22 Javascript
js图片处理示例代码
2014/05/12 Javascript
Bootstrap精简教程
2015/11/27 Javascript
理解js对象继承的N种模式
2016/01/25 Javascript
JavaScript 数组some()和filter()的用法及区别
2016/05/20 Javascript
聊聊Vue.js的template编译的问题
2017/10/09 Javascript
简述vue路由打开一个新的窗口的方法
2018/11/29 Javascript
详解如何模拟实现node中的Events模块(通俗易懂版)
2019/04/15 Javascript
Node.js Windows Binary二进制文件安装方法
2019/05/16 Javascript
jQuery实现轮播图源码
2019/10/23 jQuery
JS中数组实现代码(倒序遍历数组,数组连接字符串)
2019/12/29 Javascript
vue v-on:click传递动态参数的步骤
2020/09/11 Javascript
详解webpack的clean-webpack-plugin插件报错
2020/10/16 Javascript
[00:34]TI7不朽珍藏III——地穴编织者不朽展示
2017/07/15 DOTA
python安装与使用redis的方法
2016/04/19 Python
Python提取支付宝和微信支付二维码的示例代码
2019/02/15 Python
Python docx库用法示例分析
2019/02/16 Python
python处理excel绘制雷达图
2019/10/18 Python
在Python中使用turtle绘制多个同心圆示例
2019/11/23 Python
浅析python 字典嵌套
2020/09/29 Python
简单掌握CSS3中resize属性的用法
2016/04/01 HTML / CSS
使用Canvas操作像素的方法
2018/06/14 HTML / CSS
工程部经理岗位职责
2013/12/08 职场文书
《莫泊桑拜师》教学反思
2014/04/23 职场文书
代领报检证委托书范本
2014/10/11 职场文书
2014年库房工作总结
2014/11/26 职场文书
汉语拼音教学反思
2016/02/22 职场文书