CSS3动画总结

摘要:常用特效/变换(transform)scale(2D缩放) rotate(2D旋转) translate(2D位移)skew(2D倾斜);keyframes这个属性用来定义一系列关键帧

常用特效/变换(transform)

  •  scale(2D缩放)
  •  rotate(2D旋转)
  •  translate(2D位移)
  •  skew(2D倾斜)

 

keyframes

这个属性用来定义一系列关键帧。也就是在动画运行的全过程中的一个个中间点。

@keyframes zoomIn {
    0%{ transform: scale(0);}
    60%{ transform: scale(1.1);}
    100% { transform: scale(1);}
}
@-moz-keyframes zoomIn {
    0%{ transform: scale(0);}
    60% { transform: scale(1.1);}
    100% { transform: scale(1);}
}
@-webkit-keyframes zoomIn {
    0%{ -webkit-transform: scale(0);}
    60% { -webkit-transform: scale(1.1);}
    100% { -webkit-transform: scale(1);}
}
@-o-keyframes zoomIn {
    0%{ -o-transform: scale(0);}
    90% { -o-transform: scale(1.1);}
    100% { -o-transform: scale(1);}
}
@-ms-keyframes zoomIn{
    0%{ -ms-transform: scale(0);}
    60% { -ms-transform: scale(1.1);}
    100% { -ms-transform: scale(1);}
}


animation的属性 

语法



nimation-fill-mode 填充模式

 该属性有四个值 

none:默认值。不设置对象动画之外的状态 
forwards:设置对象状态为动画结束时的状态(触发之前) 
backwards:设置对象状态为动画开始时的状态(触发之后) 
both:设置对象状态为动画结束或开始的状态() 

注意 这个东西只能在animation之后添加


事件

在动画的世界里,总有这样的需求,就是某个动画结束了之后才进行下一个动画,这个时候就要知道上一个动画是什么时候结束的了。虽然可以用setTimeout来计时达到差不多的效果,但是总感觉不够精确。 还好,CSS3的动画有js事件。 

开始:animationstart 
迭代:animationiteration 
结束:animationend
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>delay</title>
<meta name="viewport" content="width=device-width, initial-scale=1" />

<style type="text/css">
    @-webkit-keyframes delay{
        
        100%{
            -webkit-transform:translate(100px,0);
        }
       
    }
    .delay{

        width:100px;height:100px;
        background-color: #000;
        -webkit-animation:delay 1s linear 2 both alternate;
    }
</style>
</head>
<body>
    <div class="delay"></div>
    <script type="text/javascript">
    window.onload = function(){
        var delay = document.getElementsByClassName('delay')[0],
        time1,
        time2;
        delay.addEventListener('webkitAnimationStart',function(){
            time1 = new Date().getTime();
            time2 = time1;
            console.log(time2-time1+'ms')
            
        })
        delay.addEventListener('webkitAnimationIteration',function(){
            time2 = new Date().getTime();
            console.log(time2-time1+'ms')
        })
        delay.addEventListener('webkitAnimationEnd',function(){
            time2 = new Date().getTime();
            console.log(time2-time1+'ms')
        })
    }
    </script>
</body>
</html>




本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!

链接: https://shenqiku.cn/article/FLY_3932