溫馨提示×

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

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

微信小程序頁(yè)面縮放式側(cè)滑效果的實(shí)現(xiàn)代碼

發(fā)布時(shí)間:2020-09-24 06:06:40 來(lái)源:腳本之家 閱讀:205 作者:站住,別跑 欄目:web開(kāi)發(fā)

先給大家展示下效果圖,大家感覺(jué)不錯(cuò),請(qǐng)參考實(shí)現(xiàn)代碼:

微信小程序頁(yè)面縮放式側(cè)滑效果的實(shí)現(xiàn)代碼

實(shí)現(xiàn)原理:點(diǎn)擊按鈕,往需要?jiǎng)赢?huà)的div中添加或移除擁有動(dòng)畫(huà)效果的class。

由于微信小程序中不能操作page這個(gè)根節(jié)點(diǎn),所以,只有用一個(gè)div(view)來(lái)模仿page根節(jié)點(diǎn)。

1.結(jié)構(gòu)

<view class='page {{isFix?"pageShow":"pageHide"}}' >
  <view class='header'>    
    <view class='h-toggle iconfont icon-list' bindtap='pageBtn'></view>
  </view>
</view>
<view class='r-box {{isFix?"fixShow":"fixHide"}}' bindtap='fixHide'>
  <view class='r-list' catchtap='fixStopBu'>
    <view class='rl-close' catchtap='fixClose'>
      <text class='iconfont icon-close'></text>
    </view>    
  </view>
</view>

 上面的是最主要的結(jié)構(gòu),其它的內(nèi)容就不貼了。

  (1)  isFix是切換動(dòng)畫(huà)名的狀態(tài)

  (2)  r-box設(shè)置了bindtap點(diǎn)擊事件之后,r-list也設(shè)置了一個(gè)不冒泡的catchtap事件,是為了實(shí)現(xiàn)點(diǎn)擊r-box的空白處時(shí),不冒泡的效果。

2.樣式

page {
 height: 100%;
 width: 100%;
}
.page {
 width: 100%;
 height: 100%;
 box-shadow: 0 0 10px rgba(26,26,26,.1);
}
.r-box {
 position: fixed;
 top: 0;
 right: 0;
 width: 100%;
 height: 100%;
}
.r-box .r-list {
 float: right;
 width: 66%;
 height: 100%;
 background: white;
}
.fixHide {
 transition: all .3s ease;
 transform: translateX(100%);
}
.fixShow {
 transition: all .3s ease;
 transform: translateX(0%);
}
.pageHide {
 transition: all .3s ease;
 transform: translateX(0) scaleY(1);
}
.pageShow {
 transition: all .3s ease;
 transform: translateX(-70%) scaleY(0.9);
}

 這些是最主要的樣式:

  (1)  class為page的div(view),就是模擬整個(gè)page頁(yè)面,所以寬高需要設(shè)為100%。

  (2)  r-box是右邊側(cè)滑的div(view)

  (3)  fixHide,fixShow這是側(cè)滑欄的動(dòng)畫(huà)效果。

  (4)  pageHide,pageShow這是整個(gè)頁(yè)面的動(dòng)畫(huà)效果

  (5)  由于transform只能出現(xiàn)一次,所以當(dāng)有兩個(gè)即以上的動(dòng)畫(huà)效果時(shí),只寫(xiě)在一個(gè)transform里,然后把不同的動(dòng)畫(huà)效果分開(kāi)就行。

  (6)  過(guò)渡效果的速度曲線我使用的是ease,如果用linear,在手機(jī)上會(huì)感覺(jué)很卡頓。

 3.js

Page({
  data:{
   isFix:false,//右側(cè)列表是否顯示    
  },
  // 右側(cè)列表顯示按鈕
  pageBtn:function(){
   this.setData({
    isFix:true
   })
  },
  //右側(cè)列表空白點(diǎn)擊
  fixHide:function(){
   this.setData({
    isFix: false
   })
  },
  //右側(cè)列表防冒泡,必須有,雖然沒(méi)內(nèi)容
  fixStopBu: function () {},
  //右側(cè)列表關(guān)閉按鈕
  fixClose:function(){
   this.setData({
    isFix:false
   })
  },
})

 實(shí)現(xiàn)的過(guò)程大致就是這樣。還是挺簡(jiǎn)單的。不知道用小程序的動(dòng)畫(huà)api做起來(lái)會(huì)不會(huì)簡(jiǎn)單一些或者更順暢一點(diǎn),這個(gè)就看自己勤不勤了。

總結(jié)

以上所述是小編給大家介紹的微信小程序頁(yè)面縮放式側(cè)滑效果的實(shí)現(xiàn)代碼,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)億速云網(wǎng)站的支持!

向AI問(wèn)一下細(xì)節(jié)

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

AI