JQuery在循环中闪烁图像

时间:2015-10-02 19:47:52

标签: javascript jquery css

我有闪烁的图像。有一个jquery代码:

function blink(){
        $("#light_3_1").animate({"opacity": 0}, 400 ).animate({"opacity": 1}, 400 );
    }   
    $(document).ready(function(){
        setInterval(blink, 500);
    });

我想制作延迟效果(闪烁10秒,然后停止一段时间,然后再次闪烁并再次停止......),但我找不到如何操作的方法。

2 个答案:

答案 0 :(得分:3)

我听说你喜欢间隔,所以让我们得一个间隔来控制你的间隔,这样你就可以在你运行一个间隔时运行一个间隔。

以下现场演示有一个"闪烁间隔"以500毫秒运行,并且暂停间隔为"控制闪烁间隔,以2000ms运行:



function blink() {
    $("#light_3_1").animate({
        "opacity": 0
    }, 400).animate({
        "opacity": 1
    }, 400);
}

var blinkInterval;
var pauseInterval;
var blinking = true;

$(document).ready(function () {
    blinkInterval = setInterval(blink, 500);
    pauseInterval = setInterval(toggleBlink, 2000);
});

function toggleBlink() {
    if (blinking) {
        clearInterval(blinkInterval);
        blinking = false;
    } else {
        blinkInterval = setInterval(blink, 500);
        blinking = true;
    }
}

#light_3_1 {
    width: 150px;
    height: 150px;
    background-color: blue;
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="light_3_1"></div>
&#13;
&#13;
&#13;

JSFiddle版本:https://jsfiddle.net/kv18e1sL/1/

答案 1 :(得分:1)

由于你想在10秒(10,000毫秒)后停止,你只需要增加一个变量来关闭SetInterval。

我在这里为您做了一个示例: http://jsfiddle.net/leojavier/t83tb683/

但是你应该使用CSS animation,这样你的动画不会影响你的javascript线程。

$(document).ready(function(){
     var counter = 0;

    function blink(){
       $("#light_3_1").animate({"opacity": 0}, 400 ).animate({"opacity": 1}, 400 );
        counter++;
        if(counter > 9) {
            clearInterval(interval);
        }
    }   
     var interval = setInterval(blink, 500);
});

以下是CSS版本(推荐): http://jsfiddle.net/leojavier/t83tb683/1/