如何在动画/过渡期间暂停

时间:2015-04-26 16:44:29

标签: javascript jquery html css animation

我有一个图像,我想要拉伸3秒钟,然后暂停2秒钟,然后伸展3秒钟。就目前而言,我不知道如何暂停它;动画延迟仅适用于动画的开头,而不适用于中间。这是我的代码:

<!DOCTYPE html>

<html> 

  <head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8" /> 
    <title>Page 2</title>

    <style type="text/css">
    /* Your styles go here */
    img {
        width:200px; 
        height:100px; 
        animation: widthChange 6s;
        -webkit-animation: widthChange 6s;
        -moz-animation: widthChange 6s;
        -0-animation: widthChange 6s;


    }

    p {text-align:center}
    button {margin:20px}
    .stylized {
        font-style: italic;
        border-width: 5px;
        border-color: yellow;
        border-style: outset;
    }

    @-webkit-keyframes widthChange {
        0%, 100% {width: 200px;}
        50% {width: 400px;}
    }
    @-o-keyframes widthChange {
        0%, 100% {width: 200px;}
        50% {width: 400px;}        }
    @-moz-keyframes widthChange {
        0%, 100% {width: 200px;}
        50% {width: 400px;}
    }
    @keyframes widthChange {
        0%, 100% {width: 200px;}
        50% {width: 400px;}

    }

    </style>

    <script src="http://code.jquery.com/jquery.min.js"></script>
    <script type="text/javascript">
    $(function(){
       // jQuery methods go here...
       $(document).ready(function() {

        $('img').addClass("loaded");
        $('img').addClass("loaded2");
        $("#button1").click(function() {
            $("button").addClass("stylized");
            $("#button1").html("Fancy Button 1");
            $("#button2").html("Fancy Button 2");
            $("#button3").html("Fancy Button 3");
        });
       });

    });
    /* Your additional JavaScript goes here */
    </script>
  </head>

  <body>
    <img class = "image" src="elephant.jpg" alt="elephant"/>
    <p><button id="button1">Button 1</button><button id="button2">Button 2</button><button id="button3">Button 3</button></p>

  </body>
</html>

2 个答案:

答案 0 :(得分:6)

尝试这样的事情。如果您将暂停时间添加到总时间(得到8秒而不是6秒),然后计算您希望元素保持静止的时间段(3/8 + 2/8,其中2/8是2秒的暂停时间),然后让元素在结束时返回默认宽度(另外是总时间的3/8),你应该在两者之间暂停2秒。

我这里只使用默认的animation@keyframes。您可以将此代码复制到其他特定于浏览器的版本中以实现兼容性。

animation: widthChange 8s;

@keyframes widthChange {
    0% {width: 200px;}
    37.5% {width: 400px;}
    62.5% {width: 400px;}
    100% {width: 200px;}
}

简化示例:http://jsfiddle.net/IronFlare/pjnk6z6f/

答案 1 :(得分:3)

您可以通过添加其他关键帧来实现此目的,例如:

https://jsfiddle.net/kh3qa3L6/

例如:

@-webkit-keyframes widthChange {
    0%, 100% {
        width: 200px;
    }
    25% {
        width: 400px;
    }
    75% {
        width: 400px;
    }
}