溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

小程序開發(fā)中如何實現(xiàn)自定義底部彈出框

發(fā)布時間:2020-11-19 14:55:49 來源:億速云 閱讀:392 作者:Leah 欄目:開發(fā)技術(shù)

本篇文章給大家分享的是有關(guān)小程序開發(fā)中如何實現(xiàn)自定義底部彈出框,小編覺得挺實用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

具體內(nèi)容如下

小程序開發(fā)中如何實現(xiàn)自定義底部彈出框

1. wxml代碼

<view class="wrap">
 <view bindtap="showModal">
 <text>{{value}}</text>
 <icon class="arrow"></icon>
 </view>
 
 <!-- modal -->
 <view class="modal modal-bottom-dialog" hidden="{{hideFlag}}">
 <view class="modal-cancel" bindtap="hideModal"></view>
 <view class="bottom-dialog-body bottom-positon" animation="{{animationData}}">
  <!-- -->
  <view class='Mselect'>
  <view wx:for="{{optionList}}" wx:key="unique" data-value='{{item}}' bindtap='getOption'>
   {{item}}
  </view>
  </view>
  <view></view>
  <view class='Mcancel' bindtap='mCancel'>
  <text>取消</text>
  </view>
 
 </view>
 </view>
 
</view>

modal中,藍色框框起來的,可按需替換。

小程序開發(fā)中如何實現(xiàn)自定義底部彈出框

2. wxss代碼

.arrow{
 display:inline-block;
 border:6px solid transparent;
 border-top-color:#000;
 margin-left:8px;
 position:relative;
 top:6rpx;
}
/* ---------------------------- */
/*模態(tài)框*/
.modal{position:fixed; top:0; right:0; bottom:0; left:0; z-index:1000;}
.modal-cancel{position:absolute; z-index:2000; top:0; right:0; bottom: 0; left:0; background:rgba(0,0,0,0.3);}
.bottom-dialog-body{width:100%; position:absolute; z-index:3000; bottom:0; left:0;background:#dfdede;}
/*動畫前初始位置*/
.bottom-positon{-webkit-transform:translateY(100%);transform:translateY(100%);}
 
 
/* 底部彈出框 */
.bottom-positon{
 text-align: center;
}
.Mselect{
 margin-bottom: 20rpx;
}
.Mselect view{
 padding: 26rpx 0;
 background: #fff;
}
.Mselect view:not(:last-of-type){
 border-bottom: 1px solid #dfdede;
}
.Mcancel{
 background: #fff;
 padding: 26rpx 0;
}

如果項目中,多個頁面使用了同樣效果彈出框,如下的代碼可以放到公共樣式文件app.wxss中。

小程序開發(fā)中如何實現(xiàn)自定義底部彈出框

3. js代碼

Page({
 
 /**
 * 頁面的初始數(shù)據(jù)
 */
 data: {
 optionList:['所有','選項1','選項2'],
 value:'所有',
 
 hideFlag: true,//true-隱藏 false-顯示
 animationData: {},//
 },
 // 點擊選項
 getOption:function(e){
 var that = this;
 that.setData({
  value:e.currentTarget.dataset.value,
  hideFlag: true
 })
 },
 //取消
 mCancel: function () {
 var that = this;
 that.hideModal();
 },
 
 // ----------------------------------------------------------------------modal
 // 顯示遮罩層
 showModal: function () {
 var that = this;
 that.setData({
  hideFlag: false
 })
 // 創(chuàng)建動畫實例
 var animation = wx.createAnimation({
  duration: 400,//動畫的持續(xù)時間
  timingFunction: 'ease',//動畫的效果 默認值是linear->勻速,ease->動畫以低速開始,然后加快,在結(jié)束前變慢
 })
 this.animation = animation; //將animation變量賦值給當(dāng)前動畫
 var time1 = setTimeout(function () {
  that.slideIn();//調(diào)用動畫--滑入
  clearTimeout(time1);
  time1 = null;
 }, 100)
 },
 
 // 隱藏遮罩層
 hideModal: function () {
 var that = this;
 var animation = wx.createAnimation({
  duration: 400,//動畫的持續(xù)時間 默認400ms
  timingFunction: 'ease',//動畫的效果 默認值是linear
 })
 this.animation = animation
 that.slideDown();//調(diào)用動畫--滑出
 var time1 = setTimeout(function () {
  that.setData({
  hideFlag: true
  })
  clearTimeout(time1);
  time1 = null;
 }, 220)//先執(zhí)行下滑動畫,再隱藏模塊
 
 },
 //動畫 -- 滑入
 slideIn: function () {
 this.animation.translateY(0).step() // 在y軸偏移,然后用step()完成一個動畫
 this.setData({
  //動畫實例的export方法導(dǎo)出動畫數(shù)據(jù)傳遞給組件的animation屬性
  animationData: this.animation.export()
 })
 },
 //動畫 -- 滑出
 slideDown: function () {
 this.animation.translateY(300).step()
 this.setData({
  animationData: this.animation.export(),
 })
 },
 
})

以上就是小程序開發(fā)中如何實現(xiàn)自定義底部彈出框,小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降?。希望你能通過這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI