跳转到下一个&一个先前图像(垂直滚动)与jQuery(Jump to next & prev ima

2019-11-01 22:23发布

我有图像(垂直)的线性表,我搜索使用键盘向上和向下导航到下一个或上一个图像。 我的问题是,我不知道我在滚动,并在那里我需要滚动到进入下一个或上一张图片。

我看到了这个例子 ,但它的水平。 我试图使它垂直,但没有成功...

我也尝试过一些事情与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);

Answer 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;*/
}


文章来源: Jump to next & prev image (vertical scroll) with jQuery