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

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

动画事件

        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>
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 180,340评论 25 708
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 16,688评论 4 61
  • 早上发生了一件事,类似的情况有好多。之前也只能是看着它发生,无法去做什么,言语总是苍白无力,或许情绪积累多了,让今...
    在眼前阅读 272评论 2 1
  • -1- 我有个阿姨,做了一辈子的语文老师。退休之后,很多人慕名而来,请她辅导孩子。 有人托了几个不同的关系,再四的...
    常平众康汇生活馆阅读 321评论 1 1
  • 小鹰多布出生已经一周,到了开始练习飞翔的时候了。鹰妈妈把食物放在多布的远处,并扇动翅膀给它示范,鼓励它飞过...
    时光之囿阅读 342评论 0 0

友情链接更多精彩内容