JQuery循环插件 - 幻灯片之间的延迟间隔问题

时间:2011-05-19 21:06:38

标签: delay fade intervals jquery-cycle

我正在使用jQuery Cycle Plugin作为图片滑块。我正在寻找的是这样的:

image1.jpg>>淡出>>在空白帧上保持第二个>> fadein image2.jpg>>重复

如何控制下一个淡入淡出动画开始前的延迟,或两次幻灯片过渡之间的间隔?

我的意思是当第一张幻灯片图片完全淡出时,我需要它暂停1或2秒才能在第二张图片实际开始其淡入淡出动画之前。

**当我使用寻呼机或下一个/上一个链接更改幻灯片时,我需要让它工作。

我尝试过同步:0来停止2张幻灯片之间的同时淡出过渡,但不是我想要的。

任何建议都将不胜感激,谢谢。

2 个答案:

答案 0 :(得分:3)

您可以定义自定义过渡,淡出当前幻灯片,等待,然后在下一张幻灯片中淡出。

有关比下面更完整的示例,请参阅:http://jsfiddle.net/QGRv9/1/

$.fn.cycle.transitions.fadeOutWaitFadeIn = function($cont, $slides, opts) {
    opts.fxFn = function(curr, next, opts, after) {
        $(curr).fadeOut(opts.fadeSpeed, function() {
            $(next).delay(opts.delayBetweenFades).fadeIn(opts.fadeSpeed, function() {
                after();              
            });
        });
    };
};

$(function() {
    $('#slideshow').cycle({
        fx: 'fadeOutWaitFadeIn',
        fadeSpeed: 500,
        delayBetweenFades: 2000,
        //The timeout value includes the fade speed (twice) and delay between fades.
        //e.g. For a 3000 ms timeout, use 3000 + 500 * 2 + 2000 = 6000.
        timeout: 6000
    });
});

请注意,我可能在这里做错了。超时不应包含其他值。还有一个小问题:第一张幻灯片显示为6000毫秒而不是3000毫秒。

答案 1 :(得分:0)

一种方法是在每张图像后插入空白幻灯片。然后,您可以使用timeoutFn选项提供不同的超时值,具体取决于幻灯片是图像还是空白幻灯片。

这是一个示例,其中图像显示5秒钟,空白幻灯片显示2秒钟:

http://jsfiddle.net/7jJe3/

<div id="slideshow">
    <img src="image1.jpg" />
    <span></span>
    <img src="image2.jpg" />
    <span></span>
    <img src="image3.jpg" />
    <span></span>
</div>

function timeoutfn(currSlideElement, nextSlideElement, options, forwardFlag) {
    var imgtime = 5000;
    var blanktime = 2000;
    if ($(currSlideElement).is('img'))
        return imgtime;
    return blanktime;
};

$(function() {
    $('#slideshow').cycle({
        fx: 'fade',
        speed: 400,
        timeoutFn: timeoutfn
    });
});