微信小程序实战之自定义抽屉菜单(7)
程序员文章站
2022-04-10 11:52:01
微信提供了动画api,就是下面这个
相关链接:
通过使用这个创建动画的api,可以做出很多特效出来
下面介绍一个抽屉菜单的案例
实现代码:
wxml:...
微信提供了动画api,就是下面这个
相关链接:
通过使用这个创建动画的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 } ); } } })
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: 微信小程序 slider的简单实例
下一篇: VBS教程:正则表达式简介 -普通字符