微信小程序功能之全屏滾動(dòng)效果的實(shí)現(xiàn)代碼
最近小編做項(xiàng)目遇到這樣的需求,要求實(shí)現(xiàn)一個(gè)全屏滾動(dòng)的效果,在網(wǎng)上找了實(shí)例代碼,但是不是很完美,小編又結(jié)合自己的知識(shí)給大家補(bǔ)充下,對(duì)微信小程序全屏滾動(dòng)效果的實(shí)例代碼感興趣的...
想做一個(gè)全屏滾動(dòng)的效果,于是在網(wǎng)上找了一個(gè)差不多的例子,但是覺得有些地方不是很好,于是改進(jìn)了一下;
先給大家展示下效果圖,感覺不錯(cuò),請(qǐng)參考實(shí)例代碼。

代碼:
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,// 開始的位置xstartTime: 0,// 開始的時(shí)間戳endy: 0,// 結(jié)束的位置yendTime: 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,})}})}elseif(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)代碼,希望對(duì)大家有所幫助,也非常感謝大家的支持!
- 微信小程序?qū)崿F(xiàn)點(diǎn)贊、取消點(diǎn)贊,和多項(xiàng)點(diǎn)擊功能
- 十款實(shí)用微信小程序推薦 好玩的微信小程序有哪些?
- 微信小程序群里有事使用方法 群里有事怎么用?
- 支付寶牌“小程序”也來了 對(duì)拼微信小程序
- 新的時(shí)代開啟 微信小程序的觀察與思考
- 微信小程序上手體驗(yàn):沒有比這個(gè)更全的了
- 微信小程序在哪里打開?目前已經(jīng)有100多小程序可以使用
- 微信小程序開放公測(cè) 做好這4件事?lián)屨枷葯C(jī)
- 微信小程序?yàn)楹瓮蝗换鹆耍课⑿判〕绦虻陌l(fā)展趨勢(shì)
- 微信小程序:只是開發(fā)者的良藥,而非“一切App”的毒藥
微信小程序?qū)崿F(xiàn)點(diǎn)贊、取消點(diǎn)贊,和多項(xiàng)點(diǎn)擊功能
文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)點(diǎn)贊、取消點(diǎn)贊,和多項(xiàng)點(diǎn)擊功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下...
十款實(shí)用微信小程序推薦 好玩的微信小程序有哪些?
現(xiàn)在微信小程序的種類非常多,這不僅省去我們下載軟件的麻煩,還可以節(jié)省手機(jī)的內(nèi)存空間,那么,有什么微信小程序既好玩又實(shí)用的呢?小編今天就給大家介紹十款非常實(shí)用的小程序,記得收...
微信小程序群里有事使用方法 群里有事怎么用?
相信很多小伙伴都有這樣的經(jīng)歷,在微信群里發(fā)消息,通常只有群主才能@所有人發(fā)通知,普通用戶發(fā)通知很少被人看到。即便是群主,發(fā)布通知后也不知道哪些人看過,而且重要的通知以文字...
支付寶牌“小程序”也來了 對(duì)拼微信小程序
就在微信“小程序”開發(fā)者們還在焦頭爛額,一頭霧水的時(shí)候,支付寶也殺入了戰(zhàn)場(chǎng)。近日,有多名互聯(lián)網(wǎng)行業(yè)從業(yè)者向鈦媒體記者透露,已經(jīng)有支付寶的相關(guān)工作人員與他們?nèi)〉寐?lián)系,討論的正是“小程序”的開發(fā)問題。“支付寶...
新的時(shí)代開啟 微信小程序的觀察與思考
一、關(guān)于小程序的“入口”小程序可在微信聊天頁面中置頂,可添加到桌面。但如果是在聊天頁面中置頂,只能置頂一個(gè)小程序。以及,在“發(fā)現(xiàn)”Tab中,也有“小程序”入口——這還是出乎不少人意料的。目前來看,這個(gè)入口有...
微信小程序上手體驗(yàn):沒有比這個(gè)更全的了
2017年1月9日,是一個(gè)值得載入互聯(lián)網(wǎng)史冊(cè)的日子。這一天,零點(diǎn)剛過,張小龍和他的團(tuán)隊(duì),在夜色籠罩下,正式發(fā)布了微信小程序。所以,從這一刻開始,只要有開發(fā)者登錄小程序后臺(tái),并在「開發(fā)管理」頁面點(diǎn)擊了「發(fā)布」按鈕,就會(huì)有...
微信小程序在哪里打開?目前已經(jīng)有100多小程序可以使用
今天你的朋友圈肯定被小程序刷屏了。 我在A5創(chuàng)業(yè)網(wǎng)后臺(tái)搜一下,一天內(nèi)有關(guān)小程序的言論要趕上不知名品牌動(dòng)態(tài)一年的了。 這絕對(duì)是有點(diǎn)風(fēng)吹就草翻天的主兒!...
微信小程序開放公測(cè) 做好這4件事?lián)屨枷葯C(jī)
昨天晚上,微信公眾平臺(tái)發(fā)布公告,宣布微信小程序正式開放公測(cè)。此次小程序公測(cè)允許開發(fā)者將產(chǎn)品提交至微信公眾平臺(tái)審核,但是暫時(shí)不支持發(fā)布,也就是說普通消費(fèi)者若想體驗(yàn)小程序,還需要等待一段時(shí)間。什么人可...
微信小程序?yàn)楹瓮蝗换鹆耍课⑿判〕绦虻陌l(fā)展趨勢(shì)
未來的某一天,你在微信上遇見一個(gè)妹子,兩人一見如故,相見恨晚,立馬約好第二天一塊出去玩。這時(shí),你只需要打開微信自帶的小程序,就可以為妹子預(yù)定好第二天的專車、預(yù)約好第二天的午餐,下午的游樂場(chǎng),甚至…...
微信小程序:只是開發(fā)者的良藥,而非“一切App”的毒藥
昨晚打開微信朋友圈,關(guān)于微信小程序發(fā)布內(nèi)測(cè)邀請(qǐng)函的消息漫天飛舞。今天一早翻閱新聞,各大媒體也紛紛表示看好微信應(yīng)用號(hào),有些媒體甚至揚(yáng)言微信應(yīng)用號(hào)將殺死一切App,大量的App都將會(huì)被用戶卸載。不可否認(rèn),微...

