6

次のjQueryコードを試しています。
上または下にスクロールするときはdivに移動し、スクロールが同じdivfadeOutを停止したとき。fadeIn

私が持っているのはこれです:

$(document).ready(function(){
   $(window).scroll(function(e){
     $('#search_tab').fadeOut('slow'); 
   }); 
});

スクロールが開始されたときにこれがdivになることはわかっていますがfadeOut、スクロールを停止したらフェードバックするのがコツです。

今、私はこれを見ました(しかし、それでも私が望むものではありません)

    //Firefox
 $('#elem').bind('DOMMouseScroll', function(e){
     if(e.detail > 0) {
         //scroll down
         console.log('Down');
     }else {
         //scroll up
         console.log('Up');
     }

     //prevent page fom scrolling
     return false;
 });

上記の機能は、次のようにはまったく機能しません。

 $(window).bind('DOMMouseScroll', function(e){
     if(e.detail > 0) {
         //scroll down
         $('#search_tab').fadeOut('slow');
     }else {
         //scroll up
         $('#search_tab').fadeOut('slow');
     }

     //prevent page fom scrolling
     return false;
 });
4

2 に答える 2

4

リスニングイベントはありませんが、関数を使用してページがスクロールするたびにクリアすることで、scrollstopリスニングイベントをエミュレートできます。これがサンプルのフィドルです。setTimeout()timer

var timer;     
$(window).scroll(function(e){
         clearTimeout(timer);
         $('#search_tab').fadeOut('slow');
         timer = setTimeout(checkStop,150);
 });

function checkStop(){
  $('#search_tab').fadeIn('slow');
} 
于 2013-01-10T04:31:11.527 に答える
2

すべてのフレームを確認できます。

// shim for frame listener
window.requestAnimFrame = (function(){
      return  window.requestAnimationFrame       || 
              window.webkitRequestAnimationFrame || 
              window.mozRequestAnimationFrame    || 
              window.oRequestAnimationFrame      || 
              window.msRequestAnimationFrame     || 
              function( callback ){
                window.setTimeout(callback, 1000 / 60);
              };
    })();

    // on every frame, call render()
    (function animloop(){
      requestAnimFrame(animloop);
      render();
    })();


var lastScroll = 0, isScrolling = false;
function render(){
  var thisScroll = $(window).scrollTop();
  if(lastScroll !== thisScroll){
     if(!isScrolling){
        // scrolling has started, fade out div
        $('#search_tab').stop().fadeOut('slow'); 
     }
     isScrolling = true;
   }else{
     if(isScrolling){
       // scrolling has stopped, fade in div
       $('#search_tab').stop().fadeIn('slow'); 
     }
     isScrolling = false;
  }
  lastScroll = thisScroll;
}
于 2013-01-10T04:25:43.003 に答える