扫码关注官方订阅号
移动端在监听scroll时候总是会出现延迟,例如在页面滚动到一定位置后给某个p添加类名,但是在移动端中总是在页面停止滚动后才会触发onscroll事件,请问这个怎么解决?
人生最曼妙的风景,竟是内心的淡定与从容!
1、这个问题有不少人遇到,SegmentFault搜索:微信 scroll、百度搜索:微信 scroll,原生的浏览器就支持。
2、查阅了几十个相关网页,找了一个 页面在微信上滑动时要手指松开才会触发scroll事件怎么办 的代码,测试确实可用,没看明白怎么实现的。
3、坐等大神解答。
估计你的代码有问题,实测(iPhone+Android)滚动中也可以触发。
问题中提到,给p添加类名,滚动停止才触发。demo的代码修改为 给dom添加类名。
重新调整代码。滚动中,如果滚动到当前位置,当前位置的元素背景变为淡红色。
可以测试下,http://www.shuodahua.com/othe...已经 安卓(MX4一加1) + iPhone(iPhone6iPhone6P) 真机测试 。
<!DOCTYPE HTML> <html lang="zh-CN"> <head> <meta charset="UTF-8"/> <style> body{ margin:0; } nav{ position:fixed; top:200px; left:30%; right:30%; z-index:999; } nav textarea{ width:100%; background:#EEE; } p{ margin:0; background:#FFE; height:30px; text-align:center; font-size:8px; color:#CCC; } p:after{ content:'还没到我这里,我没有变色'; position:absolute; line-height:30px; } p.active{ background:#FEE; color:#C99; } p.active:after{ content:'已经到达我这里了,我为红色'; position:absolute; line-height:30px; } </style> <meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-scale=1.0, maximum-scale=1.0, minimal-ui"> </head> <body> <nav> <textarea id="result"></textarea> </nav> <script> var pTop = []; var pCount = 500; for( var i = 0 ; i < pCount ; i++ ){ document.writeln('<p id="dom_' + i + '"></p>'); pTop.push({ dom : document.getElementById('dom_' + i), top : document.getElementById('dom_' + i).offsetTop, active : false }); } document.onscroll = function(){ var top = document.body.scrollTop; document.getElementById('result').value = top; top += 200; for( var i = 0 ; i < pCount ; i++ ){ if ( pTop[i].top < top ){ if( pTop[i].active == false ){ pTop[i].active = true; pTop[i].dom.className = "active"; } } else { if( pTop[i].active == true ){ pTop[i].active = false; pTop[i].dom.className = ""; } } } } </script> </body> </html>
ios的webview在弹性滚动的时候会阻止事件响应和Dom改变带来的页面渲染变化。要解决的话用iScroll.js或者自己实现滚动
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
1、这个问题有不少人遇到,SegmentFault搜索:微信 scroll、百度搜索:微信 scroll,原生的浏览器就支持。
2、查阅了几十个相关网页,找了一个 页面在微信上滑动时要手指松开才会触发scroll事件怎么办 的代码,测试确实可用,没看明白怎么实现的。
3、坐等大神解答。
估计你的代码有问题,实测(iPhone+Android)滚动中也可以触发。
问题中提到,给p添加类名,滚动停止才触发。
demo的代码修改为 给dom添加类名。
重新调整代码。
滚动中,如果滚动到当前位置,当前位置的元素背景变为淡红色。
可以测试下,http://www.shuodahua.com/othe...
已经 安卓(MX4一加1) + iPhone(iPhone6iPhone6P) 真机测试 。
ios的webview在弹性滚动的时候会阻止事件响应和Dom改变带来的页面渲染变化。
要解决的话用iScroll.js或者自己实现滚动