微信小程序?qū)崙?zhàn)之自定義抽屜菜單(7)
微信提供了動(dòng)畫(huà)api,就是下面這個(gè)
相關(guān)鏈接:https://mp.weixin.qq.com/debug/wxadoc/dev/api/api-animation.html#wxcreateanimationobject
通過(guò)使用這個(gè)創(chuàng)建動(dòng)畫(huà)的api,可以做出很多特效出來(lái)
下面介紹一個(gè)抽屜菜單的案例
實(shí)現(xiàn)代碼:
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屬性指定需要執(zhí)行的動(dòng)畫(huà)--> <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){ /* 動(dòng)畫(huà)部分 */ // 第1步:創(chuàng)建動(dòng)畫(huà)實(shí)例 var animation = wx.createAnimation({ duration: 200, //動(dòng)畫(huà)時(shí)長(zhǎng) timingFunction: "linear", //線性 delay: 0 //0則不延遲 }); // 第2步:這個(gè)動(dòng)畫(huà)實(shí)例賦給當(dāng)前的動(dòng)畫(huà)實(shí)例 this.animation = animation; // 第3步:執(zhí)行第一組動(dòng)畫(huà):Y軸偏移240px后(盒子高度是240px),停 animation.translateY(240).step(); // 第4步:導(dǎo)出動(dòng)畫(huà)對(duì)象賦給數(shù)據(jù)對(duì)象儲(chǔ)存 this.setData({ animationData: animation.export() }) // 第5步:設(shè)置定時(shí)器到指定時(shí)候后,執(zhí)行第二組動(dòng)畫(huà) setTimeout(function () { // 執(zhí)行第二組動(dòng)畫(huà):Y軸不偏移,停 animation.translateY(0).step() // 給數(shù)據(jù)對(duì)象儲(chǔ)存的第一組動(dòng)畫(huà),更替為執(zhí)行完第二組動(dòng)畫(huà)的動(dòng)畫(huà)對(duì)象 this.setData({ animationData: animation }) //關(guān)閉抽屜 if (currentStatu == "close") { this.setData( { showModalStatus: false } ); } }.bind(this), 200) // 顯示抽屜 if (currentStatu == "open") { this.setData( { showModalStatus: true } ); } } })
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
JSON傳遞bool類型數(shù)據(jù)的處理方式介紹
如果服務(wù)器端生成的JSON中有bool類型的數(shù)據(jù)時(shí),到客戶端解析時(shí)出現(xiàn)了小小的問(wèn)題,下面簡(jiǎn)單為大家介紹下正確的處理方式2013-09-09webpack學(xué)習(xí)筆記之優(yōu)化緩存、合并、懶加載
這篇文章主要介紹了webpack學(xué)習(xí)筆記之優(yōu)化緩存、合并、懶加載,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08解決js數(shù)據(jù)包含加號(hào)+通過(guò)ajax傳到后臺(tái)時(shí)出現(xiàn)連接錯(cuò)誤
測(cè)試過(guò)程中發(fā)現(xiàn)js數(shù)據(jù)包含加號(hào)+通過(guò)ajax傳到后臺(tái)時(shí)出現(xiàn)連接錯(cuò)誤,刪除+,鏈接暢通了,果然是這塊問(wèn)題,對(duì)加號(hào)進(jìn)行轉(zhuǎn)義2013-08-08基于JS實(shí)現(xiàn)密碼框(password)中顯示文字提示功能代碼
這篇文章主要介紹了實(shí)現(xiàn)密碼框(password)中顯示文字提示功能代碼,在項(xiàng)目開(kāi)發(fā)中經(jīng)常會(huì)用到,需要的朋友可以參考下2016-05-05JavaScript 引用類型實(shí)例詳解【數(shù)組、對(duì)象、嚴(yán)格模式等】
這篇文章主要介紹了JavaScript 引用類型,結(jié)合實(shí)例形式詳細(xì)分析了JavaScript 數(shù)組、對(duì)象、嚴(yán)格模式引用類型相關(guān)概念、原理及操作注意事項(xiàng),需要的朋友可以參考下2020-05-05基于javascript實(shí)現(xiàn)圖片左右切換效果
這篇文章主要為大家介紹了基于javascript實(shí)現(xiàn)圖片左右切換效果,感興趣的小伙伴們可以參考一下2016-01-01async/await實(shí)現(xiàn)Promise.acll()簡(jiǎn)介
Promise.all() 方法接收一個(gè) promise 的 iterable 類型的輸入,并且只返回一個(gè)Promise實(shí)例,并且輸入的所有 promise 的 resolve 回調(diào)的結(jié)果是一個(gè)數(shù)組,這篇文章主要介紹了async/await實(shí)現(xiàn)Promise.acll()簡(jiǎn)介,需要的朋友可以參考下2022-11-11