最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

微信小程序之側(cè)邊欄滑動實(shí)現(xiàn)過程解析(附完整源碼)

 更新時間:2019年08月23日 14:37:01   作者:csdn_小東  
這篇文章主要介紹了微信小程序之側(cè)邊欄滑動實(shí)現(xiàn)過程解析(附完整源碼),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

一、效果圖

講什么都不如直接上效果圖好,所以我們先來看下實(shí)現(xiàn)效果如何。

通過滑動屏幕,或者點(diǎn)擊左上角的圖標(biāo)按鈕,都能實(shí)現(xiàn)側(cè)邊欄的劃出效果。

二、原理解析

1.先實(shí)現(xiàn)側(cè)邊欄的內(nèi)容,讓側(cè)邊欄的內(nèi)容居左,然后將側(cè)邊欄的內(nèi)容置于屏幕的最底部。

2.接著實(shí)現(xiàn)主頁的內(nèi)容,并且讓主頁的內(nèi)容默認(rèn)是覆蓋在側(cè)邊欄的內(nèi)容上面。

3.然后,實(shí)現(xiàn)手指滑動屏幕的時候,主頁的內(nèi)容,向左滑動一定的寬度,讓側(cè)邊欄的內(nèi)容顯示出來,而滑動的效果是通過 css 的 transition 來實(shí)現(xiàn)的。

三、源碼

由于實(shí)現(xiàn)過程的時,我對代碼作了比較詳細(xì)的注釋,所有這里就不廢話,直接上代碼。

slide.wxml

<view class="page">
  <!-- 側(cè)邊欄內(nèi)容 -->
  <view class="page-slidebar">
    <view class="page-content">
      <view class="wc">
        <text>首頁</text>
      </view>
      <view class="wc">
        <text>導(dǎo)航一</text>
      </view>
      <view class="wc">
        <text>導(dǎo)航二</text>
      </view>
      <view class="wc">
        <text>導(dǎo)航三</text>
      </view>
    </view>
  </view>
  
  <!-- 主頁內(nèi)容 --> 
  <!-- (open ? 'c-state' : '')三元運(yùn)算符: -->
  <!-- 1.默認(rèn)情況下 open 為 false -->
  <!-- 2.當(dāng)點(diǎn)擊左上角圖標(biāo)的時候或者屏幕向左滑動,open 變化 true -->
  <!-- 3.當(dāng) open 為 true 時,會加上類名為 c-state 和 cover 的 css 樣式 --> 
  <!-- bindtouchstart、 bindtouchmove、bindtouchend -->
  <!-- 當(dāng)手指觸摸屏幕并滑動時,所觸發(fā)的三個函數(shù) -->
  <view bindtouchmove="tap_drag" bindtouchend="tap_end" bindtouchstart="tap_start" class="page-top {{open ? ['c-state','cover'] : ''}} ">
    <image bindtap="tap_ch" src="../../images/btn.png"></image>
    <view class='content'> 
      <text>為了幫助開發(fā)者簡單和高效地開發(fā)和調(diào)試微信小程序,我們在原有的公眾號網(wǎng)頁調(diào)試工具的基礎(chǔ)上,推出了全新的 微信開發(fā)者工具,集成了公眾號網(wǎng)頁調(diào)試和小程序調(diào)試兩種開發(fā)模式。 
使用公眾號網(wǎng)頁調(diào)試,開發(fā)者可以調(diào)試微信網(wǎng)頁授權(quán)和微信JS-SDK 詳情
使用小程序調(diào)試,開發(fā)者可以完成小程序的 API 和頁面的開發(fā)調(diào)試、代碼查看和編輯、小程序預(yù)覽和發(fā)布等功能。
為了更好的開發(fā)體驗(yàn),我們從視覺、交互、性能等方面對開發(fā)者工具進(jìn)行升級,推出了 1.0.0 版本。</text>
      <button>按鈕</button>
    </view>
  </view>
</view>

slide.wcss

/* 全局樣式 */
page, .page {
  height: 100%;
  font-family: 'PingFang SC',
         'Helvetica Neue',
         Helvetica,
         'Droid Sans Fallback',
         'Microsoft Yachei',
         sans-serif;
} 
/* 側(cè)邊欄樣式 */
.page-slidebar {
  height: 100%;
  width: 750rpx;
  position: fixed;
  background-color:white;
  z-index: 0;
}
 
/* 控制側(cè)邊欄的內(nèi)容距離頂部的距離 */
.page-content {
  padding-top: 60rpx;
}
 
/* 側(cè)邊欄內(nèi)容的 css 樣式 */
.wc {
  color:black;
  padding: 30rpx 0 30rpx 150rpx;
  border-bottom: 1px solid #eee; 
}
 
/* 當(dāng)屏幕向左滑動,出現(xiàn)側(cè)邊欄的時候,主頁的動畫樣式 */
/* scale:取值范圍 0~1 ,表示屏幕大小是原來的百分之幾,可以自己修改成 0.8 試下*/
/* translate(60%,0%) 表示向左滑動的時候,側(cè)邊欄占用平時的寬度為 60%  */
.c-state {
  transform: rotate(0deg) scale(1) translate(60%, 0%);
  -webkit-transform: rotate(0deg) scale(1) translate(60%, 0%);
}
 
/* 主頁樣式 */
.page-top {
  height: 100%;
  position: fixed;
  width: 750rpx;
  background-color:white;
  z-index: 0;
  transition: All 0.4s ease;
  -webkit-transition: All 0.4s ease;
}
/* 左上角圖標(biāo)的樣式 */
.page-top image {
  position: absolute;
  width: 68rpx;
  height: 68rpx;
  left: 20rpx;
  top: 20rpx;
}
 
/* 遮蓋層樣式 */
.cover{
  width: 100%;
  height: 100%;
  background-color:gray;
  opacity: 0.5;
  z-index: 9000;
}
 
.content{
  margin-top: 100rpx; 
}

slide.js

Page({ 
  data: {
    open: false,
    // mark 是指原點(diǎn)x軸坐標(biāo)
    mark: 0,
    // newmark 是指移動的最新點(diǎn)的x軸坐標(biāo) 
    newmark: 0,
    istoright: true
  }, 
  // 點(diǎn)擊左上角小圖標(biāo)事件
  tap_ch: function(e) {
    if (this.data.open) {
      this.setData({
        open: false
      });
    } else {
      this.setData({
        open: true
      });
    }
  },
 
  tap_start: function(e) {
    // touchstart事件
    // 把手指觸摸屏幕的那一個點(diǎn)的 x 軸坐標(biāo)賦值給 mark 和 newmark
    this.data.mark = this.data.newmark = e.touches[0].pageX;
  },
 
  tap_drag: function(e) {
    // touchmove事件
    this.data.newmark = e.touches[0].pageX;
    
    // 手指從左向右移動
    if (this.data.mark < this.data.newmark) {
      this.istoright = true;
    }
    
    // 手指從右向左移動
    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;
    // 通過改變 opne 的值,讓主頁加上滑動的樣式
    if (this.istoright) {
      this.setData({
        open: true
      });
    } else {
      this.setData({
        open: false
      });
    }
  }
})

四、項(xiàng)目下載

git 在線下載:

https://github.com/yyzheng1729/slide

五、同類文章推薦

微信小程序 授權(quán)登錄詳解(附完整源碼)

微信小程序之下拉列表實(shí)現(xiàn)方法解析(附完整源碼)

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • postMessage消息通信Promise化的方法實(shí)現(xiàn)

    postMessage消息通信Promise化的方法實(shí)現(xiàn)

    postMessage Api 想必大家都不陌生,WebWorker 通信會用到,iframe 窗口之間通信也會用到,那么我們能不能將 postMessage 進(jìn)行一次轉(zhuǎn)化,把他變成類似 Promise 的使用方式,所以本文給大家介紹了postMessage消息通信Promise化的方法實(shí)現(xiàn),需要的朋友可以參考下
    2024-03-03
  • webpack4.0 入門實(shí)踐教程

    webpack4.0 入門實(shí)踐教程

    webpack4.0發(fā)布了一段時間了,這篇文章主要介紹了webpack4.0 入門實(shí)踐教程,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-10-10
  • js二維數(shù)組排序的簡單示例代碼

    js二維數(shù)組排序的簡單示例代碼

    本篇主要是對js二維數(shù)組排序的簡單示例代碼進(jìn)行了介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2014-01-01
  • 基于Typescript與Axios的接口請求管理詳解

    基于Typescript與Axios的接口請求管理詳解

    接口是一系列抽象方法的聲明,是一些方法特征的集合,這些方法都應(yīng)該是抽象的,需要由具體的類去實(shí)現(xiàn),然后第三方就可以通過這組抽象方法調(diào)用,讓具體的類執(zhí)行具體的方法,這篇文章主要給大家介紹了基于Typescript與Axios的接口請求管理的相關(guān)資料,需要的朋友可以參考下
    2021-09-09
  • JavaScript實(shí)現(xiàn)設(shè)置默認(rèn)日期范圍為最近40天的方法分析

    JavaScript實(shí)現(xiàn)設(shè)置默認(rèn)日期范圍為最近40天的方法分析

    這篇文章主要介紹了JavaScript實(shí)現(xiàn)設(shè)置默認(rèn)日期范圍為最近40天的方法,結(jié)合實(shí)例形式分析了javascript結(jié)合HTML5 date元素進(jìn)行時間運(yùn)算相關(guān)操作技巧,需要的朋友可以參考下
    2017-07-07
  • webpack HappyPack實(shí)戰(zhàn)詳解

    webpack HappyPack實(shí)戰(zhàn)詳解

    這篇文章主要介紹了webpack HappyPack實(shí)戰(zhàn)詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • ES6入門教程之let和const命令詳解

    ES6入門教程之let和const命令詳解

    最近做項(xiàng)目的過程中,使用到了ES6,因?yàn)橹昂苌俳佑|,所以使用起來還不夠熟悉。通過學(xué)習(xí)網(wǎng)上的教程后覺著有必要整理下遇到的let和const命令,所以這篇文章主要給大家介紹了ES6中l(wèi)et和const命令的相關(guān)資料,需要的朋友可以參考下。
    2017-05-05
  • js模仿php中strtotime()與date()函數(shù)實(shí)現(xiàn)方法

    js模仿php中strtotime()與date()函數(shù)實(shí)現(xiàn)方法

    這篇文章主要介紹了js模仿php中strtotime()與date()函數(shù)實(shí)現(xiàn)方法,涉及javascript時間操作的相關(guān)技巧,非常具有實(shí)用價值,需要的朋友可以參考下
    2015-08-08
  • JavaScript判斷變量數(shù)據(jù)類型的常見方法小結(jié)

    JavaScript判斷變量數(shù)據(jù)類型的常見方法小結(jié)

    在JavaScript開發(fā)中,了解和判斷變量的數(shù)據(jù)類型是編寫健壯代碼的基礎(chǔ),變量的類型可以在運(yùn)行時改變,這為開發(fā)者帶來了靈活性的同時也增加了復(fù)雜性,本文將深入探討幾種常見的判斷變量類型的技巧,并結(jié)合實(shí)際案例進(jìn)行分析,需要的朋友可以參考下
    2024-12-12
  • Select標(biāo)簽下拉列表二級聯(lián)動級聯(lián)實(shí)例代碼

    Select標(biāo)簽下拉列表二級聯(lián)動級聯(lián)實(shí)例代碼

    這篇文章主要介紹了Select標(biāo)簽下拉列表二級聯(lián)動級聯(lián)實(shí)例代碼,需要的朋友可以參考下
    2014-02-02

最新評論

陈巴尔虎旗| 金山区| 滕州市| 阿瓦提县| 保靖县| 明溪县| 图木舒克市| 阜康市| 松阳县| 嵩明县| 阳高县| 金寨县| 德钦县| 清水河县| 精河县| 焉耆| 罗城| 苏尼特右旗| 互助| 葫芦岛市| 汶上县| 河东区| 通山县| 清水河县| 淮南市| 监利县| 伊通| 屏东市| 武义县| 安乡县| 辛集市| 石棉县| 常宁市| 洛南县| 乐山市| 紫金县| 桃源县| 邯郸市| 天全县| 邯郸县| 道孚县|