小程序.jpg
最近做小程序時(shí)厌处,會(huì)經(jīng)常用到各種彈框。直接做顯示和隱藏雖然也能達(dá)到效果岁疼,但是體驗(yàn)性太差,也比較簡(jiǎn)單粗暴。想要美美地玩捷绒,添加點(diǎn)動(dòng)畫還是非常有必要的瑰排。下面做一個(gè)底部上滑的彈框。
wxml
<view class="modals modals-bottom-dialog" hidden="{{hideModal}}">
<view class="modals-cancel" bindtap="hideModal"></view>
<view class="bottom-dialog-body bottom-pos" animation="{{animationData}}"></view>
</view>
<button bindtap="showModal">點(diǎn)我</button>
wxss
/*模態(tài)框*/
.modals{position:fixed; z-index: 999; top:0; left: 0; right:0; bottom: 0;}
.modals-cancel{position:absolute; z-index:1000; top:0; left: 0; right:0; bottom: 0; background-color: rgba(0,0,0,.5);}
.bottom-dialog-body{position:absolute; z-index:10001; bottom:0; left:0; right:0; padding:30rpx; height:300rpx; background-color: #fff;}
/*動(dòng)畫前初始位置*/
.bottom-pos{-webkit-transform:translateY(100%);transform:translateY(100%);}
關(guān)鍵的部分來(lái)啦~~
js
Page({
data:{
hideModal:true, //模態(tài)框的狀態(tài) true-隱藏 false-顯示
animationData:{},//
},
// 顯示遮罩層
showModal: function () {
var that=this;
that.setData({
hideModal:false
})
var animation = wx.createAnimation({
duration: 600,//動(dòng)畫的持續(xù)時(shí)間 默認(rèn)400ms 數(shù)值越大暖侨,動(dòng)畫越慢 數(shù)值越小椭住,動(dòng)畫越快
timingFunction: 'ease',//動(dòng)畫的效果 默認(rèn)值是linear
})
this.animation = animation
setTimeout(function(){
that.fadeIn();//調(diào)用顯示動(dòng)畫
},200)
},
// 隱藏遮罩層
hideModal: function () {
var that=this;
var animation = wx.createAnimation({
duration: 800,//動(dòng)畫的持續(xù)時(shí)間 默認(rèn)400ms 數(shù)值越大,動(dòng)畫越慢 數(shù)值越小字逗,動(dòng)畫越快
timingFunction: 'ease',//動(dòng)畫的效果 默認(rèn)值是linear
})
this.animation = animation
that.fadeDown();//調(diào)用隱藏動(dòng)畫
setTimeout(function(){
that.setData({
hideModal:true
})
},720)//先執(zhí)行下滑動(dòng)畫京郑,再隱藏模塊
},
//動(dòng)畫集
fadeIn:function(){
this.animation.translateY(0).step()
this.setData({
animationData: this.animation.export()//動(dòng)畫實(shí)例的export方法導(dǎo)出動(dòng)畫數(shù)據(jù)傳遞給組件的animation屬性
})
},
fadeDown:function(){
this.animation.translateY(300).step()
this.setData({
animationData: this.animation.export(),
})
},
})
帶動(dòng)畫的底部彈框效果已經(jīng)做好了,想體驗(yàn)的小伙伴們可以試一試:簟些举!