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

首頁 > 課堂 > 小程序 > 正文

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

2020-03-21 16:06:28
字體:
供稿:網(wǎng)友

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

先給大家展示下效果圖,感覺不錯(cuò),請參考實(shí)例代碼。

微信小程序,全屏,滾動(dò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,  // 開始的時(shí)間戳        endy: 0, // 結(jié)束的位置y        endTime: 0,  // 結(jié)束的時(shí)間戳        critical: 80, // 觸發(fā)翻頁的臨界值        maxTimeCritical: 300,  // 滑動(dòng)的時(shí)間戳臨界值上限        minTimeCritical: 100,  // 滑動(dòng)的時(shí)間戳臨界值下限        margintop: 0, // 滑動(dòng)下拉距離      currentTarget: null,  // 當(dāng)前點(diǎn)擊的元素的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('時(shí)間戳之差: ' + 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é)

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


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 大英县| 堆龙德庆县| 双桥区| 龙川县| 布拖县| 运城市| 焦作市| 杭州市| 中方县| 东宁县| 康马县| 德州市| 乌兰浩特市| 霍林郭勒市| 肇东市| 长子县| 长宁区| 化州市| 寻甸| 建湖县| 晋宁县| 仲巴县| 桃江县| 安陆市| 驻马店市| 建瓯市| 依安县| 都昌县| 格尔木市| 天津市| 洪泽县| 锦屏县| 平邑县| 凉城县| 富顺县| 瓮安县| 城固县| 剑河县| 将乐县| 富阳市| 尼木县|