Jquery slider - 停止向右滑动

Jquery slider - stop sliding right

我用 jquery 制作了一个旋转木马滑块,其中有一些产品。我希望滑块在到达最后一个产品时停止滑动,到目前为止我能做的是在最后一个产品不可见时停止滑动,但这不是我需要的。它应该在最后一个产品可见时停止,我该如何实现?

JSFIDDLE

HTML

<div class="controls">
    <div class="control-left">left</div>
    <div class="control-right">right</div>
</div>
<div class="container">
    <div class="sliderHolder">
        <div class="productsWrapper">
            <article>
                <img src="http://www.sha.org/bottle/missionbottle.jpg">
            </article>
            <article>
                <img src="http://www.sha.org/bottle/missionbottle.jpg">
            </article>
            <article>
                <img src="http://www.sha.org/bottle/missionbottle.jpg">
            </article>
            <article>
                <img src="http://www.sha.org/bottle/missionbottle.jpg">
            </article>
            <article>
                <img src="http://www.sha.org/bottle/missionbottle.jpg">
            </article>
            <article>
                <img src="http://www.sha.org/bottle/missionbottle.jpg">
            </article>
        </div>
    </div>
</div>

JQUERY

var container = $(".sliderHolder");
var containerProducts = $(".productsWrapper").width();

var animating = false;

$(document).on("click", ".control-right", function () {
    if (parseInt(container.css("right"), 10) <= containerProducts) {
        animating = true;
        container.stop().animate({
            'right': "+=401px"
        }, 600, function () {
            animating = false;
        });
    }
});


$(document).on("click", ".control-left", function () {debugger;
    if (parseInt(container.css("right"), 10) > 0) {

        animating = true;
        container.stop().animate({
            'right': "-=401px"
        }, 600, function () {
            animating = false;
        });

    }

});

$(".control-left, .control-right").click(function () {
    if (animating) {
        return false;
    }
});

CSS

.controls {
    top: 50px;
    width: 100%;
    height: 100px;
    position:relative;
}
.control-left {
    left:0;
}
.control-right {
    right:0;
}
.control-left, .control-right {
    width: 50px;
    height: 50px;
    background-color: #000;
    position: absolute;
    color: #fff;
}
.container {
    max-width: 100%;
    overflow: hidden;
    position: relative;
}
.productsWrapper {
    display: inline-block;

}
.sliderHolder {
    position:relative;
    width: 28000px;
    right: 0px;
}
img {
    width: 200px;
}
article {
    width: 200px !important;
    float: left;
}

如果您的文章始终为 200px,并且您一次滑动 2 篇文章,则您的 if-语句应为 if (parseInt(container.css("right"), 10) <= (containerProducts - 400)) 这样,它会检查是否还有两个适合。如果没有,它不会动画。

不过,你应该试着让它更有活力一点。但这回答了你的问题。

(fiddle: https://jsfiddle.net/3zcn19ms/5/)


编辑:

嘿,因为你在这个答案下面给出的评论,我稍微更改了代码。看看这是否对您有帮助:

https://jsfiddle.net/3zcn19ms/22/

现在使用第一张图片的大小(只有当所有图片的宽度完全相同时才正确)和包装中的文章数量。