CSS3 動畫觸發事件


  @keyframes mymove
        {
            0%   {top:0px; left:0px; background:red;}
            25%  {top:0px; left:100px; background:blue;}
            50%  {top:100px; left:100px; background:yellow;}
            75%  {top:100px; left:0px; background:green;}
            100% {top:0px; left:0px; background:red;}
        }

        @-moz-keyframes mymove /* Firefox */
        {
            0%   {top:0px; left:0px; background:red;}
            25%  {top:0px; left:100px; background:blue;}
            50%  {top:100px; left:100px; background:yellow;}
            75%  {top:100px; left:0px; background:green;}
            100% {top:0px; left:0px; background:red;}
        }

        @-webkit-keyframes mymove /* Safari and Chrome */
        {
            0%   {top:0px; left:0px; background:red;}
            25%  {top:0px; left:100px; background:blue;}
            50%  {top:100px; left:100px; background:yellow;}
            75%  {top:100px; left:0px; background:green;}
            100% {top:0px; left:0px; background:red;}
        }

        @-o-keyframes mymove /* Opera */
        {
            0%   {top:0px; left:0px; background:red;}
            25%  {top:0px; left:100px; background:blue;}
            50%  {top:100px; left:100px; background:yellow;}
            75%  {top:100px; left:0px; background:green;}
            100% {top:0px; left:0px; background:red;}
        }


        #animation {
            animation:mymove 5s 5;
            -webkit-animation:mymove 5s 5; /* Safari 和 Chrome */
        }
<div id="animation" style="width: 100px;height: 100px;background-color: #0baae4">Test content</div>

<ul id="output"></ul>
  var el = document.getElementById("animation");

    el.addEventListener("animationstart", listener, false);
    el.addEventListener("animationend", listener, false);
    el.addEventListener("animationiteration", listener, false);

    function listener(e) {
        var li = document.createElement("li");
        switch(e.type) {
            case "animationstart":
                li.innerHTML = "Started: elapsed time is " + e.elapsedTime;
                break;
            case "animationend":
                li.innerHTML = "Ended: elapsed time is " + e.elapsedTime;
                break;
            case "animationiteration":
                li.innerHTML = "New loop started at time " + e.elapsedTime;
                break;
        }
        document.getElementById("output").appendChild(li);
    }

    el.addEventListener("click",he,false);
    function he() {
        if(el.style.webkitAnimationPlayState == "paused"){
            el.style.webkitAnimationPlayState = "running";
        }else{
            el.style.webkitAnimationPlayState = "paused";
        }

    }

CSS動畫有以下三個事件。

  • animationstart事件:動畫開始時觸發。

  • animationend事件:動畫結束時觸發。

  • animationiteration事件:開始新一輪動畫循環時觸發。如果animation-iteration-count屬性等於1,該事件不觸發,即只播放一輪的CSS動畫,不會觸發animationiteration事件。

animation-play-state屬性可以控制動畫的狀態(暫停/播放),該屬性需求加上瀏覽器前綴。

 

原文鏈接:http://javascript.ruanyifeng.com/dom/css.html#toc15


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM