jQueryのscrollTopスプライトを使用するときに手ぶれをなくします

StackOverflow https://stackoverflow.com/questions/4202558

  •  25-09-2019
  •  | 
  •  

質問

私は機能アップ矢印が押されたときに、キーボードの下矢印を押し上げとスクロールされる記事の次のセクションまでスクロールことを持っています。その作業罰金が、しかし、それはスクロールする直前にわずかな「バウンス」または「ジッター」があります。

私は関数の戻り偽を持っていることによって、この問題のために部分的に修正することができました、しかし、偽ツバメイベントダウンキーを返すブラウザと対話するために私のキーボード私にできない使用を残しています。

同時に私のキーボードを解放しながら、「ジッター」を解消する方法上の任意のアイデア?

var $sections = $('.section');
var curr = -1;

$(document).keydown(function(e){
  prev = (curr < 0)? $sections.length-1: curr-1;
  next = (curr >= $sections.length-1)? -1: curr+1 ;

  switch (e.keyCode) {
    case 38:  // up key
      s = $sections.eq(prev).offset().top;
      curr = prev;
      break;
    case 40:  // down key
      s = $sections.eq(next).offset().top;
      curr = next;
      break;
    default:
      break;
  } 

  if (curr == -1 ){
    $('html, body').animate({scrollTop: 0}, 'slow');
  }
  else{
    $('html, body').animate({scrollTop: s}, 'slow');
  }
  return e;
});
役に立ちましたか?

解決 2

おかげYiが...代替として...私はちょうどリターンeに、デフォルトのスイッチケースを設定することにより、仕事にそれを得ました。そして、関数が返すの虚偽の下部に復帰ます。

結果は次のようになります

var $sections = $('.section');
var curr = -1;

$(document).keydown(function(e){
  prev = (curr < 0)? $sections.length-1: curr-1;
  next = (curr >= $sections.length-1)? -1: curr+1 ;

  switch (e.keyCode) {
    case 38:  // up key
      s = $sections.eq(prev).offset().top;
      curr = prev;
      break;
    case 40:  // down key
      s = $sections.eq(next).offset().top;
      curr = next;
      break;
    default:
      return e;
  } 

  if (curr == -1 ){
    $('html, body').animate({scrollTop: 0}, 'slow');
  }
  else{
    $('html, body').animate({scrollTop: s}, 'slow');
  }
  return false;
});

他のヒント

おそらくあなたは、単にifアップ一致するとダウンする場合にのみ、スクロールのコードを実行する単純なkeyCode文を追加することができます:

$(document).keydown(function(e) {
    if (e.keyCode === 38 || e.keyCode === 40) {
        // Your code
        return false;
    }
});

ここでは、この簡単なデモが有効である: http://jsfiddle.net/yijiang/SceDY/ 1 /

<時間> コードを見ると、あなたはおそらく、あなたの変数varprevnextの範囲を限定するsキーワードを使用する必要があります。不規則現在のコード振る舞い上下以外の何か他のものが押された場合。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top