1

我正在使用示例 2 中的coda-slider。现在我不希望滑块在最后一个元素上后退到第一个元素的行为。我希望滑块只向正确的方向移动(当然从第一个元素开始)。

尾声滑块似乎使用了 jQueryanimate函数:

    function autoSlide() {
        if (navClicks == 0 || !settings.autoSlideStopWhenClicked) {
            if (currentPanel == panelCount) {
                var offset = 0;
                currentPanel = 1;
            } else {
                var offset = - (panelWidth*currentPanel);
                currentPanel += 1;
            };
            alterPanelHeight(currentPanel - 1);
            // Switch the current tab:
            slider.siblings('.coda-nav').find('a').removeClass('current').parents('ul').find('li:eq(' + (currentPanel - 1) + ') a').addClass('current');
            // Slide:
            $('.panel-container', slider).animate({ marginLeft: offset }, settings.slideEaseDuration, settings.slideEaseFunction);
            setTimeout(autoSlide,settings.autoSlideInterval);
        };
    };

函数中的参数是否有可能animate完成这项工作?

尾声滑块本身仅支持此参数

4

2 回答 2

2

Coda Slider 使用 serialScroll。如果您不希望滑块在到达末尾后返回第一个元素,请打开 jquery.serialScroll 文件(jquery.serialScroll-1.2.1.js),转到第 37 行并将循环从“true”更改为“假”。

cycle:false, //cycle endlessly ( constant velocity )
于 2013-05-11T13:46:26.610 回答
1

我注意到这个有点旧,但我自己遇到了这个问题,想发布我是如何做到的,以防其他人也需要这样做。

所以我们需要做的第一件事是为我们的第一个面板创建一个额外的副本,并将其放在面板容器的末尾。这必须在我们调用容器上的 codaSlider 之前完成。您还需要硬编码您拥有的面板数量。所以...

$(document).ready(function(){
    $('.panel-container .panel').eq(0).clone().appendTo('.panel-container');
    $("#main-photo-slider").codaSlider();
});

然后,将autoslide()函数更改为:

function autoSlide() {
    if (navClicks == 0 || !settings.autoSlideStopWhenClicked) {
        if (currentPanel == panelCount) {
            $('.panelContainer').css({'left':'0px'});
            var offset = 1;
            currentPanel = 2;
        } else {
            var offset = - (panelWidth*currentPanel);
            currentPanel += 1;
        };
        alterPanelHeight(currentPanel - 1);
        // Switch the current tab:
        slider.siblings('.coda-nav').find('a').removeClass('current').parents('ul').find('li:eq(' + (currentPanel - 1) + ') a').addClass('current');
        // Slide:
        $('.panel-container', slider).animate({ marginLeft: offset }, settings.slideEaseDuration, settings.slideEaseFunction);
        setTimeout(autoSlide,settings.autoSlideInterval);
    };
};

这应该可行,但它可能会产生一些不希望的结果,例如,如果您使用导航栏,它会创建一个指向最后一个图像的额外链接,这与 Next/Prev 按钮在最后一个/上时的情况相同/第一张图片...这对我来说不是问题,因为我使用了这里讨论的自定义导航:http: //css-tricks.com/creating-a-slick-auto-playing-featured-content-slider/

于 2012-04-04T23:56:26.407 回答