微信小程序提供了页面的上下滚动的事件,在页面的js文件中,
page({
onPageScroll(e) {
console.log(e.scrollTop)
}
})
但是不是滑动事件,滑动事件需要自己加在view上,
<view bindtouchstart='touchStart' bindtouchend="touchEnd"></view>
如果不让滑动事件冒泡的话.将bind改为catch就好了
<view catchtouchstart='touchStart' catchtouchend="touchEnd"></view>
在js文件中添加绑定的事件处理函数,在touchStart中,将触摸开始获取到的x和y值存储到data里,例如touch.x和touch.y
touchStart(e) {
// console.log(e)
this.setData({
"touch.x": e.changedTouches[0].clientX,
"touch.y": e.changedTouches[0].clientY
});
}
在touchEnd中,也就是手指离开屏幕的事件处理函数中,首先获取到此时的x和y值,
touchEnd(e) {
let x = e.changedTouches[0].clientX;
let y = e.changedTouches[0].clientY;
}
然后再写一个判断方向的简单处理函数,建议将此方法写在utils工具库中,
/***
但是如果此时用户在向下滑或者向上滑的过程中也有向左滑和向右滑的偏移,此时判断用户有向左滑和向右滑就有点不准确了,所以如果满足上述条件并且用户上滑或者下滑的距离不超过50px才判定用户确实是在左右滑动
有些用户使用大拇指滑动的时候喜欢斜着滑,此时上下和左右都有滑动,至于该判断用户是向左右还是向上下,可以用斜率来判断,或者引入touch.js,在这就不写了,这个就作为一种很简单轻量的解决办法.
回到顶部
onPageScroll: function (e) { console.log(e.scrollTop) if (e.scrollTop>300) { this.setData({ showTop: false }) } else { this.setData({ showTop: true }) } }, goTop: function () { wx.pageScrollTo({ scrollTop: 0, duration: 300 }) }
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。