2011-12-30 49 views
1

私は、一連の画像をページ上に縦に並べた非常にシンプルなウェブサイトを構築しています。上下の矢印キーを使用して、ある画像から次の画像へのスクロールをスムーズにすることができます。このようにして、ブラウジングに必要なキーストロークの数が最小限に抑えられ、ページダウンとページアップの比類のない間隔を避けることができます。矢印キーでページ上のオブジェクト間をスムーズにスクロールできますか?

これはjavascript関数であると想像します。しかし、私は非常にjavascriptを使用して経験していないので、私はあなたが答えの初心者を考えることができることを願っています。現在、画像はdivの中に配置され、br(複数の改行)で区切られています。だから、それぞれimgidを置くか、またはそれぞれのimgの周囲に識別タグを配置して使用することができると思います。または、おそらく、JavaScriptを矢印キーでスクロールする手順を認識させる別の方法があります。これを行う最善の方法は何ですか?ありがとうございました。

+0

あなたは押された矢印キーをキャプチャするためにjqueryの.keydown()イベントを使用することができます。次に、ユーザーが現在の(この)x、yの位置()を特定し、ユーザーを次の画像でアンカーに送ります。たぶんn番目の子画像を検出し、n + 1にユーザーを送信します。これはあまり一般的ではないWebの動作です。たぶん、さまざまなキャレセルプラグインを見てみましょう。 –

+0

提案していただきありがとうございます。これはひどく簡単ですが、申し訳ありませんが、私はjavascriptで未経験であるため、これを行う方法をより詳細に記述することはできますか?おそらく、jsfiddleで?そして、スムーズなスクロールをどのように実装しますか?ありがとうございました。 – user981178

+0

最初の試みはあまり簡単ではありません。なぜあなたは "jquery keydown arrow keys"をgoogleしていないのでしょうか?矢印キーを使って動く画像の例を見てみましょう。ここに1つです.http://stackoverflow.com/questions/4404852/how-use-keyboard-arrow-keys-to-move-a-div-100px-left-right-respectively。 –

答えて

1

jQueryを知っているなら、これは楽しく簡単です。上/下矢印キーを押すと、デフォルトのスクロール動作が行われません。その後、矢印を押して次の画像または前の画像を探します。最後に、jQueryのアニメーションを使用して要素の上部を表示します。あなたはリストの最後を過ぎる時に何らかのエラーチェックをする必要がありますが、これに基づいて理解できると確信しています。

http://jsfiddle.net/aVvQF/4/

$(window).keydown(function(e) { 
    e.preventDefault(); //prevent default arrow key behavior 

    var targetElement; 
    //down 
    if (e.keyCode == 40) { 
     $targetElement = $('.active').next('img'); 
    } 
    //up 
    else if (e.keyCode == 38) { 
     $targetElement = $('.active').prev('img'); 
    } 
    if (!$targetElement.length) {return;} 
    $('.active').removeClass('active'); 
    $targetElement.addClass('active'); 

    //scroll element into view  
    $('html, body').clearQueue().animate({scrollTop: $targetElement.offset().top }, 1000); 
}); 
+0

ありがとうございます。これは参考になります。私はエラーチェックについてあなたが意味するものを見ます。 jsfiddleで再生すると、最初の画像に上向き矢印キーを入力するか、最後の画像に下向き矢印キーを入力すると、ページの右にあるセレクタが実行され、上下矢印キー機能は機能しませんリフレッシュ)。だから、どういうわけか最初の要素の上矢印キーと最後の要素の下矢印キーを制限する必要があると思います。 – user981178

+0

私は、境界問題を防ぐために、またアニメーションキューが蓄積するのを防ぐために更新を行いました。 – mrtsherman

+0

よろしくお願い致します。 – user981178

関連する問題