微信小程序功能之全屏滾動(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,
// 開始的位置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)代碼,希望對(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)楹瓮蝗换鹆??微信小程序的發(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多小程序可以使用
今天你的朋友圈肯定被小程序刷屏了?! ∥以贏5創(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)楹瓮蝗换鹆??微信小程序的發(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),微...