ユーザーがマストヘッドをスクロールするとメニューが固定されるように、ユーザーのスクロール位置をチェックする次の関数があります
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();
});
ただし、タッチイベントは、タッチムーブ中にメニューを確実に固定するだけです。上下にスワイプして非常に速くスクロールすると、メニューが固定または固定解除されるまでに遅延が発生します。
これを修正する方法についてのアイデアはありますか? ここでコード例を参照してください: http://dev.driz.co.uk/mobileMasthead.html (以下の回答に基づいて修正されていますが、iPad または iPhone では正しく動作しません)
更新: そして、トピックを読んでみると、スクロール中にスクロール位置をチェックするような JS は発生しないことがわかります...しかし... http://www.facebook.com/home/にないことに気付きましたiPadでテストするときのこの問題。したがって、iScroll などのカスタム JavaScript スクロールバーを使用しなくても、この効果を実現することは間違いなく可能です。