我有以下功能可以检查用户的滚动位置,以便在他们滚动过标头后菜单变得固定
function checkScrolling() {
if( $(window).scrollTop() > $('.masthead').height() ) { // we check against ACTUAL height
$('.menu').addClass('fixed');
}else {
$('.menu').removeClass('fixed');
}
}
这里是桌面和触摸屏事件监听器:
$(document).bind('touchstart touchend touchcancel touchleave touchmove', function(e){
checkScrolling();
});
$(window).scroll(function(){
checkScrolling();
});
然而,触摸事件只会在 touchmove 期间可靠地固定菜单。如果我通过向上或向下滑动来快速滚动,则在菜单变为固定或不固定之前会有延迟。
有想法该怎么解决这个吗?在此处查看代码示例:http: //dev.driz.co.uk/mobileMasthead.html(已根据下面的一些答案进行了修改,但在 iPad 或 iPhone 上仍然无法正常工作)
更新: 阅读该主题表明,在滚动期间不会发生像检查滚动位置这样的 JS……但是……我注意到http://www.facebook.com/home/没有在我的 iPad 上测试时出现此问题。因此,绝对可以在不使用任何自定义 JavaScript 滚动条(如 iScroll 或类似内容)的情况下实现此效果。