jQuery旋转木马不重复

jQuery旋转木马不重复,jquery,slideshow,jcarousel,Jquery,Slideshow,Jcarousel,我正在尝试为我的站点创建一个旋转木马,但在将幻灯片移到列表的后面时遇到了问题,因此它是一个没有空白的连续流。代码如下: <div class="maskleft"></div> <div class="maskright"></div> <div class="slideshow"> <div class="views-row views-row-1 views-row-odd views-row-first">

我正在尝试为我的站点创建一个旋转木马,但在将幻灯片移到列表的后面时遇到了问题,因此它是一个没有空白的连续流。代码如下:

<div class="maskleft"></div>
<div class="maskright"></div>

<div class="slideshow">
    <div class="views-row views-row-1 views-row-odd views-row-first">
        <div class="panel-text">text</div>  
        <div class="views-field views-field-field-image-feature">
            <img typeof="foaf:Image" src="" alt="" />
        </div> 
        <img typeof="foaf:Image" src="" alt="" />
    </div>

    <div class="views-row views-row-2 views-row-even">
        <div class="panel-text">text</div>  
        <div class="views-field views-field-field-image-feature">
            <img typeof="foaf:Image" src="" alt="" />
        </div> 
        <img typeof="foaf:Image" src="" alt="" />
    </div>

    <div class="views-row views-row-3 views-row-odd">
        <div class="panel-text">text</div>  
        <div class="views-field views-field-field-image-feature">
            <img typeof="foaf:Image" src="" alt="" />
        </div> 
        <img typeof="foaf:Image" src="" alt="" />
    </div>

    <div class="views-row views-row-4 views-row-even views-row-last">
        <div class="panel-text">text</div>  
        <div class="views-field views-field-field-image-feature">
            <img typeof="foaf:Image" src="" alt="" />
        </div> 
        <img typeof="foaf:Image" src="" alt="" />
    </div>
</div>
live dev站点位于以下位置:

您只有一个div which正在移动,为什么需要此代码:

var $next = $slider.next().length ? $slider.next() : $('.slideshow'); 
当您到达幻灯片放映结束时,您需要重置marginLeft样式:

if (... check the end of slideshow ...) { // could be calculation of the widht, count of slides, etc.
    $slider.css({marginLeft: '0'});
}

如果我没弄错的话,您希望将第一张幻灯片附加到幻灯片放映的末尾,这样您就有了一个恒定的流,而不是跳转到开始处。 假设这是正确的,我们发现了一个重要的关键字:append

您必须实际拍摄第一张幻灯片并将其附加到最后一张幻灯片。通过每个动画步骤执行此操作。我们的结局是这样的

function slideChange() {
    var $slider = $('.slideshow');
    var $first = $slider.first();

    $slider.append($first); // Append a copy of the first slide to the last one
    $slider.animate({marginLeft: '-=1024'}, 1000, function() {
        $first.remove(); // Remove the first slide we just copied. So we virtually swapped the slide from the first to the last place
        $slider.css({marginLeft: '+=1024'}); // Reset the margin
    });

}
此解决方案未经测试,但应能奏效。 但我仍然看到您的代码中存在一些问题

是否仅对此滑块使用此功能?如果您的答案是“是”,您应该明确地为滑块提供id,而不是.class选择器。而且,由于您不会在任何地方再次使用您的函数,因此不需要公开访问的函数。你可以匿名制作,这样可以节省一些资源

setInterval(function() {
    /* Your stuff goes here */
}, 5000);

我认为他试图做到以下几点:大写表示可见A b c | A->b c | A b c | A b->c | A b c | b c->A | A b c |等等。您的解决方案将跳回开始,而不进行良好的过渡。不,我的意思是,他需要在良好的过渡之前向后移动滑块,然后执行动画。我并没有说要替换动画。是的,但当他再次向后移动时,会有一个跳跃切割。不会有从C到a的转换。它只会重置整个幻灯片,而根本没有动画。但是Chris想要一个连续的幻灯片流。嗨,是的,我想在这上面添加其他功能,比如向下滑动主img并隐藏非活动比特,这样正确吗函数slideChange{var$slider=$'.slideshow';var$first=$slider.first;$slider.append$first;//将第一张幻灯片的副本附加到最后一张$slider。动画{marginLeft:'-=1024'},1000,函数{$first.remove;//删除我们刚才复制的第一张幻灯片。因此,我们实际上将幻灯片从第一张位置交换到了最后一张位置$slider.css{marginLeft:'+=1024'};//重置边距};}setIntervalfunction{slideChange},5000;'如果滑块的工作方式与此相同,您是否满意?加载需要几秒钟。图像尚未压缩。实际上并非如此。这不会缩放孔页面。
setInterval(function() {
    /* Your stuff goes here */
}, 5000);