国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

微信小程序功能之全屏滾動效果的實現代碼

2019-11-19 12:29:22
字體:
來源:轉載
供稿:網友

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

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

代碼:

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({  /**   * 頁面的初始數據   */  data: {      scrollindex: 0, // 當前頁面的索引值        totalnum: 4, // 總共頁面數        starty: 0, // 開始的位置x        startTime: 0,  // 開始的時間戳        endy: 0, // 結束的位置y        endTime: 0,  // 結束的時間戳        critical: 80, // 觸發翻頁的臨界值        maxTimeCritical: 300,  // 滑動的時間戳臨界值上限        minTimeCritical: 100,  // 滑動的時間戳臨界值下限        margintop: 0, // 滑動下拉距離      currentTarget: null,  // 當前點擊的元素的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, '結束:' + 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          })        })      }       },})

總結

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 台湾省| 洛宁县| 巴青县| 肥乡县| 汤阴县| 南靖县| 灵璧县| 苏州市| 视频| 高密市| 兴海县| 塘沽区| 桃源县| 麟游县| 兰考县| 淮北市| 吉安县| 霸州市| 化隆| 长子县| 上蔡县| 巢湖市| 新晃| 广安市| 瑞安市| 彝良县| 罗源县| 内乡县| 潞西市| 蚌埠市| 泰宁县| 漳平市| 徐州市| 阳泉市| 林口县| 绥滨县| 永清县| 麟游县| 平舆县| 左权县| 济南市|