移动端如何监听屏幕滚动

现在的需求是当屏幕滚动到一定高度的时候,让某些元素固定在屏幕顶部,所以需要对屏幕滚动事件进行监听。

pc端可以用window.onscroll,但是这个在移动端完全没作用。我用touchmove试了一下,当手指触摸屏幕的时候确实可以,但是当手指离开屏幕,屏幕靠惯性滚动的时候就触发不了事件了。

请问各位,有没有好的思路或者办法,或者以前处理这种问题的经验?
非常感谢。

阅读 27.2k
8 个回答
window.addEventListener('scroll', function () {
    console.log("移动端可以实现")
})

先说声抱歉,我没有看清楚题目,这里重新更新了,题主的问题是 当屏幕滚动到一定高度的时候,让某些元素固定在屏幕顶部,所以需要对屏幕滚动事件进行监听
我给的解决方案,还是用touch事件来处理,这样你应该懂了

$('body').bind('touchmove', function(e) { 
    e.preventdefault();               //禁用默认滚动行为,需要自己实现滚动
    console.log($(this).scrollTop()); // 计算你的屏幕高度
});

这样的话就不存在惯性滚动,但是需要自己实现滚动比较麻烦,另外要注意下touchmove的触发滚动频率,建议使用函数节流

移动端还真没有onscroll事件,除非是自己实现
不过你要实现元素固定顶部,不一定要监听onscroll事件吧,fixed去了解下,或者干脆看看bootstrap是怎么实现的

做一个看不见的底部紧贴的框,然后监测这个框的高度是否一直变化?如果一直变化那应该就是滚动了。
不知道这样可不可以。

监听scrolltop之类的可以实现

touchend时做判断

使用setInterval来监听scrollTop的变化。从这种方法已经实现过好几个现在已经在线上的项目了。。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进