微信小程式開發中實現側邊欄的滑動效果的方法代碼

高洛峰
發布: 2017-03-17 14:33:35
原創
2687 人瀏覽過

在手機應用程式的開發中側邊欄滑動是很常見的功能,當然在小程式中也不會例外,但是小程式出來不久,很多特效還沒有成熟案例,只能原生重寫,所以今天在網路上為大家收集整理來四個非常漂亮的側邊欄特效~~
NO1.側邊欄的滑動效果圖如下:    

 微信小程序开发中实现侧边栏的滑动效果的方法代码

其中wxml的程式碼如下:

<!--page/one/index.wxml-->  
<view class="page"> 
    <view class="page-bottom"> 
        <view class="page-content"> 
            <view  class="wc"> 
                <text>第一个item1</text> 
            </view> 
            <view  class="wc"> 
                <text>第二个item2</text> 
            </view> 
            <view  class="wc"> 
                <text>第三个item3</text> 
            </view> 
            <view  class="wc"> 
                <text>第四个item4</text> 
            </view> 
        </view> 
    </view> 
    <view class="page-top {{open ? &#39;c-state1&#39; : &#39;&#39;}}"> 
        <image bindtap="tap_ch" src="../../images/btn.png"></image> 
    </view> 
</view>
登入後複製

建立上下兩層介面

寫一段css3的右移動畫樣式.c-state1

wxss

.c-state1{ 
  transform: rotate(0deg) scale(1) translate(75%,0%);   
  -webkit-transform: rotate(0deg) scale(1) translate(75%,0%);   
}
登入後複製

點選按鈕,新增樣式.c-state1

再點選,移除樣式.c-state1

NO2.側邊欄的滑動效果圖如下:(特點:

滑動且螢幕縮小

 微信小程序开发中实现侧边栏的滑动效果的方法代码

#wxss的程式碼如下:

.c-state2{ 
  transform: rotate(0deg) scale(.8) translate(75%,0%);   
  -webkit-transform: rotate(0deg) scale(.8) translate(75%,0%);   
}
登入後複製

wxml程式碼與特效一相同

.c-state2與.c-state1唯一不同在於scale值

#js程式碼:

<font face="&quot"><font style="font-size:15px">Page({ 
  data:{ 
    open : false 
  }, 
  tap_ch: function(e){ 
    if(this.data.open){ 
      this.setData({ 
        open : false 
      });  
    }else{ 
      this.setData({ 
        open : true 
      });  
    } 
  } 
})  </font></font>
登入後複製

程式碼很簡單,就是透過open值控制view對類別的選取

NO3.側邊欄的滑動效果圖如下:(特點:不僅可以點選按鈕觸發側滑,也可以拖曳主介面觸發側滑特效)

 微信小程序开发中实现侧边栏的滑动效果的方法代码

#.js的程式碼如下:

tap_start:function(e){ 
    // touchstart事件  
    this.data.mark = this.data.newmark = e.touches[0].pageX;  
}, 
tap_drag: function(e){ 
    // touchmove事件  
   
    /*
     * 手指从左向右移动 
     * @newmark是指移动的最新点的x轴坐标 , @mark是指原点x轴坐标 
     */ 
    this.data.newmark = e.touches[0].pageX;  
    if(this.data.mark < this.data.newmark){ 
      this.istoright = true;  
    } 
    /*
     * 手指从右向左移动 
     * @newmark是指移动的最新点的x轴坐标 , @mark是指原点x轴坐标 
     */ 
    if(this.data.mark > this.data.newmark){ 
      this.istoright = false;  
   
    } 
    this.data.mark = this.data.newmark;  
}, 
tap_end: function(e){ 
    // touchend事件  
    this.data.mark = 0;  
    this.data.newmark = 0;  
    if(this.istoright){ 
      this.setData({ 
        open : true 
      });  
    }else{ 
      this.setData({ 
        open : false 
      });  
    } 
}
登入後複製

tap_drag中判斷手勢是從左到右,或從右向左

tap_end表示手勢抬起,如果是從左到右,則觸發從左到右的滑動

tap_end表示手勢抬起,如果是從右到左,則觸發從右到左的滑動

NO4.側邊欄的滑動效果圖如下:

 微信小程序开发中实现侧边栏的滑动效果的方法代码

此特效會隨著手勢滑動而滑動;如果鬆手時候不到螢幕寬度的20%,那麼會自動還原;如果鬆手時候超過20%,那麼會向右滑動~~

此效果很複雜,我們將其拆分為多個步驟來分析~

1)螢幕隨著手勢動而動

.JS的程式碼是

this.setData({ 
    translate: &#39;transform: translateX(&#39;+(this.data.newmark - this.data.startmark)+&#39;px)&#39;  
})
登入後複製

這句是關鍵,很好理解,就是用js控制淺藍色螢幕translateX的數值,這樣手勢不斷左右滑動,螢幕也就跟著手勢慢慢滑動了。

2)彈動效果

拖曳螢幕不足螢幕寬20%,還原預設狀態;超過20%,滑動到最右側~~

#JS程式碼:

if(x < 20%){ 
     this.setData({ 
         translate: &#39;transform: translateX(0px)&#39;  
     }) 
}else{ 
     this.setData({ 
         translate: &#39;transform: translateX(&#39;+this.data.windowWidth*0.75+&#39;px)&#39;  
     }) 
}
登入後複製

小於20%,讓translateX(0px)則螢幕還原;大於20%,tanslateX(75%)則螢幕右移到螢幕的75%處。

以上是微信小程式開發中實現側邊欄的滑動效果的方法代碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板