0

画像 (垂直) の線形リストがあり、キーボードを上下に使用して検索し、次または前の画像に移動します。私の問題は、スクロールのどこにいるのかわからないことと、次または前の画像に移動するためにスクロールする必要がある場所がわからないことです。

この例を見ましたが、横になっています。縦にしてみましたがうまくいきませんでした…</p>

また、inView jQuery プラグインでいくつか試してみましたが、成功しませんでした。いくつかの開始:

  $("body:not(.photo) #images img").each(function() {
     $(this)
        .css({cursor: "pointer"})
        .on("click", function() {
           var $n = $(this).next(),
               offset = ($n.length) ? $n.offset().top : 0;

           scrollTo(offset);
        });
  });

  // http://jsfiddle.net/JjhUN/5/
  var elems = [];
  $("#images").children().each(function() {
     elems.push(this.offsetTop);
  });

  console.log(elems);
4

1 に答える 1

1

私はその水平の例で遊んで、それを垂直に変更しました。http://jsfiddle.net/6gCA6/1/

お役に立てば幸いです。

JS

$(function() {
    var boxLefts = [];
    $('.box').each(function(i, el){
        boxLefts.push(this.offsetTop);
    });

    $(document).keydown(function(e) {
        var dir = false,
            targetUp = -1;

        switch (e.keyCode) {
        case 38:
            dir = -1;
            break;                
        case 40:
            dir = 1;
            break;
        default:
            break;
        }

        if (dir) {
            e.preventDefault();
            winUp = window.scrollY;
            $.each(boxLefts, function(i, v){
                if ((dir == 1 && winUp < v && targetUp < 0) ||
                    (dir == -1 && winUp > v)) {
                    targetUp = v;
                }
            });
            if (targetUp >= 0) {
                $('html, body').animate({scrollTop: targetUp}, 1000);
            }
        }
    });
});

CSS

#wrapper {
    white-space: nowrap;
    width: 1500px;
}

.box {
    width: 200px;
    height: 200px;
    border: 1px solid red;
    margin: 0 10px 0 0;
    /*display: inline-block;*/
}
于 2013-03-28T20:10:48.637 に答える