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

微信小程序功能之全屏滾動效果的實現(xiàn)代碼

 更新時間:2018年11月22日 10:11:39   作者:愫幕  
最近小編做項目遇到這樣的需求,要求實現(xiàn)一個全屏滾動的效果,在網(wǎng)上找了實例代碼,但是不是很完美,小編又結(jié)合自己的知識給大家補充下,對微信小程序全屏滾動效果的實例代碼感興趣的朋友參考下本文吧

想做一個全屏滾動的效果,于是在網(wǎng)上找了一個差不多的例子,但是覺得有些地方不是很好,于是改進了一下;

先給大家展示下效果圖,感覺不錯,請參考實例代碼。

代碼:

wxml: 

<!-- 第一頁 -- >
  <view id='hook1' class="section section01 {{scrollindex==0?'active':''}}" style='background:red' bindtouchstart="scrollTouchStart" bindtouchmove='scrollTouchMove' bindtouchend="scrollTouchEnd">
      <view class='cont'>
        <view class='cont-body'>
          <view>one</view>
        </view>
      </view>
    </view>
    <!-- 第二頁 -->
    <view id='hook2' class="section section02 {{scrollindex==1?'active':''}}" style='background:pink' bindtouchstart="scrollTouchStart" bindtouchmove='scrollTouchMove' bindtouchend="scrollTouchEnd">
      <view class='cont'>
        <view class='cont-body'>
          <view>two</view>
        </view>
      </view>
    </view>
    <!-- 第三頁 -->
    <view id='hook3' class="section section03 {{scrollindex==2?'active':''}}" style='background:blue' bindtouchstart="scrollTouchStart" bindtouchmove='scrollTouchMove' bindtouchend="scrollTouchEnd">
      <view class='cont'>
        <view class='cont-body'>
          <view>three</view>
        </view>
      </view>
    </view>
    <!-- 第四頁 -->
    <view id='hook4' class="section section04 {{scrollindex==3?'active':''}}" style='background:green' bindtouchstart="scrollTouchStart" bindtouchmove='scrollTouchMove' bindtouchend="scrollTouchEnd">
      <view class='cont'>
        <view class='cont-body'>
          <view>foure</view>
        </view>
      </view>
    </view>

wxss:

page {
  height: 100%;
  background: fff;
  color: #282828;
}
.container {
  flex: 1;
  flex-direction: column;
  box-sizing: border-box;
  padding: 0;
  align-items: initial;
  justify-content: first baseline;
}
.container-fill {
  height: 100%;
  overflow: hidden;
}
.scroll-fullpage {
  height: 100%;
}
.section {
  height: 100%;
}
.cont {
  width: 100%;
  height: 100%;
  margin: 0 auto;
  position: relative;
}
.cont .cont-body {
  width: 75%;
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
}

js:

Page({
  /**
   * 頁面的初始數(shù)據(jù)
   */
  data: {
      scrollindex: 0, // 當(dāng)前頁面的索引值
        totalnum: 4, // 總共頁面數(shù)
        starty: 0, // 開始的位置x
        startTime: 0,  // 開始的時間戳
        endy: 0, // 結(jié)束的位置y
        endTime: 0,  // 結(jié)束的時間戳
        critical: 80, // 觸發(fā)翻頁的臨界值
        maxTimeCritical: 300,  // 滑動的時間戳臨界值上限
        minTimeCritical: 100,  // 滑動的時間戳臨界值下限
        margintop: 0, // 滑動下拉距離
      currentTarget: null,  // 當(dāng)前點擊的元素的id
  },
  scrollTouchStart: function(e) {
    let py = e.touches[0].pageY,
      stamp = e.timeStamp,
      currentTarget = e.currentTarget.id;
    console.log(py);
    this.setData({
      starty: py,
      startTime: stamp,
      currentTarget: currentTarget
    })
  },
  scrollTouchMove(e) {
    // console.log(e);
  },
  scrollTouchEnd: function(e) {
    let py = e.changedTouches[0].pageY,
      stamp = e.timeStamp,
      d = this.data,
      timeStampdiffer = stamp - d.startTime;
    this.setData({
      endy: py,
      endTime: stamp
    })
    console.log('開始:' + d.starty, '結(jié)束:' + e.changedTouches[0].pageY);
    console.log('時間戳之差: ' + timeStampdiffer);
    if (timeStampdiffer <= d.maxTimeCritical && timeStampdiffer > d.minTimeCritical && (d.starty > e.changedTouches[0].pageY)) {
      let currentTarget = parseInt(d.currentTarget.slice(4)),
        nextTarget = currentTarget + 1;
      const query = wx.createSelectorQuery();
      query.select(`#hook${nextTarget}`).boundingClientRect();
      query.selectViewport().scrollOffset();
      query.exec(function (res) {
        // console.log(res);
             if (res[0] != null) {
          wx.pageScrollTo({
            scrollTop: res[0].height * currentTarget,
          })
        }
      })
      } else if (timeStampdiffer <= d.maxTimeCritical && timeStampdiffer > d.minTimeCritical && (d.starty < e.changedTouches[0].pageY)) {  // 下拉
      let currentTarget = parseInt(d.currentTarget.slice(4)),
        preTarget = currentTarget - 2 == -1 ? 0 : currentTarget - 2;
        const query = wx.createSelectorQuery();
        query.select(`#hook1`).boundingClientRect();
        query.selectViewport().scrollOffset();
        query.exec(function (res) {
          console.log(res);
          wx.pageScrollTo({
            scrollTop: res[0].height * preTarget
          })
        })
      }    
   },
})

總結(jié)

以上所述是小編給大家介紹的微信小程序功能之全屏滾動效果的實現(xiàn)代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • JS定義網(wǎng)頁表單提交(submit)的方法

    JS定義網(wǎng)頁表單提交(submit)的方法

    這篇文章主要介紹了JS定義網(wǎng)頁表單提交(submit)的方法,實例分析了javascript實現(xiàn)表單提交執(zhí)行自定義函數(shù)的方法,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-03-03
  • 利用JavaScript獲取用戶IP屬地方法詳解

    利用JavaScript獲取用戶IP屬地方法詳解

    最近很多平臺都上線了顯示用戶的位置信息的功能,那么這是如何做到的, 據(jù)說這個位置信息的準(zhǔn)確性在通信網(wǎng)絡(luò)運營商那里?本文將來探究一下
    2022-05-05
  • js實現(xiàn)文本框中輸入文字頁面中div層同步獲取文本框內(nèi)容的方法

    js實現(xiàn)文本框中輸入文字頁面中div層同步獲取文本框內(nèi)容的方法

    這篇文章主要介紹了js實現(xiàn)文本框中輸入文字頁面中div層同步獲取文本框內(nèi)容的方法,實例分析了javascript操作dom元素的技巧,需要的朋友可以參考下
    2015-03-03
  • Three.js如何實現(xiàn)霧化效果示例代碼

    Three.js如何實現(xiàn)霧化效果示例代碼

    霧化效果是3D的比較常見的特性,在游戲中見到的煙霧、爆炸火焰以及白云等效果都是霧化的結(jié)果,下面這篇文章主要給大家介紹了關(guān)于Three.js如何實現(xiàn)霧化效果的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-09-09
  • 微信小程序自定義底部彈出框功能

    微信小程序自定義底部彈出框功能

    這篇文章主要為大家詳細(xì)介紹了微信小程序自定義底部彈出框功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • 鼠標(biāo)放在圖片上顯示大圖的JS代碼

    鼠標(biāo)放在圖片上顯示大圖的JS代碼

    將圖片查詢出來之后,還需要加一個查看大圖的功能,于是就用js寫了一個方法,然后在image的onmouseover事件中調(diào)用此方法,這樣在鼠標(biāo)懸浮在小圖上面的時候,其大圖就會自動的顯示出來。
    2013-03-03
  • javascript實現(xiàn)動態(tài)導(dǎo)入js與css等靜態(tài)資源文件的方法

    javascript實現(xiàn)動態(tài)導(dǎo)入js與css等靜態(tài)資源文件的方法

    這篇文章主要介紹了javascript實現(xiàn)動態(tài)導(dǎo)入js與css等靜態(tài)資源文件的方法,基于回調(diào)函數(shù)實現(xiàn)該功能,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • 淺析js中的every()對空數(shù)組總返回true

    淺析js中的every()對空數(shù)組總返回true

    JavaScript?語言的核心部分足夠大,以至于我們很容易誤解其某些部分的工作方式,本文就來和大家一起討論下為什么JS中的?every()對空數(shù)組總返回?true,需要的可以參考下
    2023-09-09
  • 利用ES6實現(xiàn)單例模式及其應(yīng)用詳解

    利用ES6實現(xiàn)單例模式及其應(yīng)用詳解

    單例是在程序設(shè)計非常基礎(chǔ)的東西,這篇文章主要給大家介紹了關(guān)于利用ES6實現(xiàn)單例模式及其應(yīng)用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-12-12
  • 檢測用戶按鍵

    檢測用戶按鍵

    檢測用戶按鍵...
    2006-07-07

最新評論

太仓市| 遵化市| 承德市| 三原县| 郎溪县| 青海省| 崇信县| 两当县| 六枝特区| 巴彦县| 朝阳区| 黄大仙区| 邯郸市| 华宁县| 龙陵县| 屏山县| 沙雅县| 霞浦县| 无棣县| 扶风县| 大宁县| 罗江县| 亚东县| 台北县| 平山县| 湘西| 缙云县| 万载县| 兴义市| 会泽县| 察雅县| 陕西省| 崇信县| 当涂县| 新巴尔虎左旗| 四子王旗| 偃师市| 苏尼特左旗| 汉川市| 建宁县| 达日县|