animate
jQueryを使用してページを上にスクロールするコード ブロックがありますが、使いやすさを向上させるために、ユーザーが何らかの方法でスクロール モーションを妨害した場合 (たとえば、スクロール ホイール、スクロールバーをつかむなど)、モーションはすぐに停止します。 .
私は 1 週間前にここで質問をしましたが、何人かのテスターが親切にコードを試したところ、Gecko ベースのブラウザーでは動作しないと報告されました。
これは私がこれまでに持っているコードです:
$(document).ready(function() {
// scroll to top: check if user / animate is scrolling
var scrollAnimating = false;
jQuery.fx.step.scrollTop = function(E) {
scrollAnimating = true;
E.elem.scrollTop = E.now;
scrollAnimating = false;
};
// go to top (on click)
$('#gototop').click(function() {
$(this).fadeOut(100,function() {
$(this).css({backgroundColor: '#CCC'}).html('Going... (scroll to stop)').fadeIn(100, function() {
$('html,body').animate({scrollTop:0},3000);
})
});
$(window).scroll(function() {
if (!scrollAnimating) {
$('html,body').stop();
$('#gototop').html('Go to top');
};
});
resetNames();
return false;
});
function resetNames() {
setTimeout(function() {
$('#gototop').html('Go to top').css({backgroundColor: '#DDD'});
},3000);
}
});
基本的にクリック#gototop
すると、スクロールが一番上にアニメーション化され始めます。スクロールが妨げられると、スクロール動作が停止し、テキスト#gototop
がリセットされます。
このコードにはいくつかの問題があります: 一部の部分は途方もなく非効率的であり、Gecko ベースのブラウザーでは動作しません (大問題)。
どうすれば機能しますか?それを効率的にする方法についての指針はありますか?