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 回答