美文网首页
JS中的动画事件和过渡事件

JS中的动画事件和过渡事件

作者: 辣瓜瓜 | 来源:发表于2017-11-16 14:16 被阅读51次

    在看某个框架的文档时发现了这两个事件,以前了解的不多,感觉这两个事件还是挺有用的。

    动画事件

            animationstart:事件在 CSS 动画开始播放时触发。
            animationiteration:事件在 CSS 动画重复播放时触发。
            animationend:事件在 CSS 动画结束播放时触发。

    动画事件.gif

    过渡事件

            transitionend:事件在 CSS 完成过渡后触发。


    过渡事件.gif

    动画事件demo

    <html>
        <head>
            <meta charset="utf-8">
            <title></title>
            <style>
                #myDIV {
                    margin: 100px;
                    width: 400px;
                    height: 100px;
                    line-height: 100px;
                    background: pink;
                    position: relative;
                    font-size: 18px;
                    text-align: center;
                }
                @-webkit-keyframes mymove {
                    from {
                        top: 0px;
                    }
                    to {
                        top: 200px;
                    }
                }
                @keyframes mymove {
                    from {
                        top: 0px;
                    }
                    to {
                        top: 200px;
                    }
                }
            </style>
        </head>
        <body>
            <div id="myDIV" onclick="myFunction()">点击</div>
            <script>
                var x = document.getElementById("myDIV")
                function myFunction() {
                    x.style.WebkitAnimation = "mymove 5s 3 ease"; 
                    x.style.animation = "mymove 5s 3 ease";
                }
                x.addEventListener("webkitAnimationStart", myStartFunction);
                x.addEventListener("webkitAnimationIteration", myIterationFunction);
                x.addEventListener("webkitAnimationEnd", myEndFunction);
                x.addEventListener("animationstart", myStartFunction);
                x.addEventListener("animationiteration", myIterationFunction);
                x.addEventListener("animationend", myEndFunction);
    
                function myStartFunction() {
                    this.innerHTML = "animationstart 事件触发 - 动画已经开始";
                    this.style.backgroundColor = "#ff2147";
                }
    
                function myIterationFunction() {
                    this.innerHTML = "animationiteration 事件触发 - 动画重新播放";
                    this.style.backgroundColor = "yellow";
                }
    
                function myEndFunction() {
                    this.innerHTML = "animationend 事件触发 - 动画已经完成";
                    this.style.backgroundColor = "#3300ff";
                    this.style.color = "#fff";
                }
            </script>
        </body>
    </html>
    

    过渡事件demo

    <html>
        <head>
            <meta charset="utf-8">
            <title></title>
            <style>
                #myDIV {
                    width: 100px;
                    height: 100px;
                    background: red;
                    -webkit-transition: width 2s;
                    transition: width 2s;
                    margin: 100px;
                }
                #myDIV:hover {
                    width: 400px;
                }
            </style>
        </head>
        <body>
            <div id="myDIV">鼠标移动到 div 元素上</div>
            <script>
                document.getElementById("myDIV").addEventListener("webkitTransitionEnd", myFunction);
                document.getElementById("myDIV").addEventListener("transitionend", myFunction);
    
                function myFunction() {
                    this.innerHTML = "过渡事件触发 - 过渡已完成";
                    this.style.backgroundColor = "deeppink";
                }
            </script>
        </body>
    </html>
    

    相关文章

      网友评论

          本文标题:JS中的动画事件和过渡事件

          本文链接:https://www.haomeiwen.com/subject/biulvxtx.html