立即反转CSS3动画

时间:2014-04-17 07:08:18

标签: javascript html css3

当我将.shown类添加到我的#overlay时,我希望不透明度淡入2秒,然后立即反转并淡出2秒,创建一种“闪烁”效果。

我尝试删除该类,但根本不显示任何动画。这是我的示例标记/ CSS:

HTML:

<div id="outer">
    This is some text
    <div id="overlay"></div>
</div>

CSS:

#overlay {
    ...
    opacity: 0;
    transition: opacity 2s ease-in-out;
}
#overlay.shown {
    opacity: 0.3;
}

参加JS:

// Wait 2 seconds from page load...
setTimeout(function() {
    // Add shown class to trigger animation
    document.getElementById("overlay").classList.add("shown");
    // Want to remove the class and hoped this would reverse the animation...
    // it doesn't
    document.getElementById("overlay").classList.remove("shown");
}, 2000);

jsFiddle

3 个答案:

答案 0 :(得分:2)

使用带关键帧的css动画

@keyframes myFlash
{
0%   {opacity:0;}
50%  {opacity:0.3;}
100% {opacity:0;}
}

@-webkit-keyframes myFlash /* Safari and Chrome */
{
0%   {opacity:0;}
50%  {opacity:0.3;}
100% {opacity:0;}
}

#overlay {
    ...
    opacity: 0;
}
#overlay.shown {
animation:myFlash 2s;
-webkit-animation:myFlash 2s; /* Safari and Chrome */
}

答案 1 :(得分:0)

看起来你可以在第一个动画完成后使用第二个超时。

// Wait 2 seconds from page load...
setTimeout(function() {
    // Animate Forward
    document.getElementById("overlay").classList.add("shown");
    setTimeout(function(){
        // Animate Back
        document.getElementById("overlay").classList.remove("shown");
    },2000);
}, 2000);

答案 2 :(得分:0)

我为实现您的输出做了很多改变,请检查以下代码

Your css
#outer {
    width: 100px;
    height: 100px;
    position: relative;
}
#overlay {
    top: 0;
    left: 0;
    position: absolute;
    width: 100%;
    height: 100%;
    background: #336699;
    opacity: 0;
    transition: opacity 2s ease-in-out;
}
#overlay.shown {
    display: block;
    opacity: 0.5;
}

你的js

setTimeout(function() {
    $("#overlay").addClass("shown");
   var def = $('#overlay').promise();
    def.done(
       function () {
          $('body').stop().delay(5000).queue(function(){
        $("#overlay").removeClass("shown");
    });

    });


}, 2000);

第一个和第二个之间没有延迟,所以它将如何显示你已完成的动画

请查看工作演示..... Demo