CSS3animation动画 + 动画如何切换

之前做转盘的时候,用的就是animation,然后加@keyframes。当时时间挺紧张的,就在网上搜了下怎么用,就直接用了。现在有时间了,好好看了一下具体的用法。

—《图解CSS3》
        CSS3的animation属性可以像Flash制作动画一样,通过关键帧控制动画的每一步,实现复杂的动画效果。

属性:

animation-name:指定@keyframes关键帧的名字
animation-duration:设置动画播放所需时间,一般以秒为单位
animation-timing-function:设置动画的播放方式
ease|linear|ease-in|ease-out|ease-in-out
animation-delay:动画开始播放的时间,即开始动画前等待的时间
ainimation-iteration-count:动画播放次数,默认为1,如果取值为infinite,则无限循环
animation-direction:动画播放方向 animation-play-state:控制播放状态,running|paused
animation-fill-mode:动画开始前和结束后发生的操作。none|forwards(应用最后关键帧的样式)|backwards(初始帧)|both

今天用到了一个效果,就是页面上要有一个转动的元素,单击这个元素元素停止转动,再次单击,元素重新旋转。

我之前写的代码如下:

<!DOCTYPE html>
<html>
<head>
    <title>动画切换</title>
    <meta charset="utf-8" />
    <link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<body>
    <div class="container">
        <div id="top">
        </div>
    </div>
    <script type="text/javascript"> //获取相关CSS属性 var getCss = function(o,key){ return o.currentStyle? o.currentStyle[key] : document.defaultView.getComputedStyle(o,false)[key]; }; var musicIcon = document.getElementById("top"); //获取到元素  musicIcon.addEventListener("click",function(){//为元素添加事件 var rotate = getCss(musicIcon,"animation");//获取到CSS中animation属性 if (rotate) { //如果有值设置为空,否则赋值 musicIcon.style.animation = " "; }else{ musicIcon.style.animation = "200s one infinite linear"; } ,false); </script>

</body>
</html>

CSS代码:

#top{ width: 86px; height: 86px; border-radius: 43px; border: 1px solid red; background: url(../images/icon.png) no-repeat; animation: 200s one infinite linear; }
@keyframes one {
    100% {transform: rotate(36000deg);}
}

但是这样写不管用,原因 “”空字符串可能是不识别。更好的方法是,重新设置一个样式,让它转就给它加上这个样式,否则就去掉这个样式

js代码如下:

    <script type="text/javascript"> //获取相关CSS属性 var getCss = function(o,key){ return o.currentStyle? o.currentStyle[key] : document.defaultView.getComputedStyle(o,false)[key]; }; var musicIcon = document.getElementById("top"); musicIcon.addEventListener("click",function(){ if (musicIcon.className.indexOf("rotate") >= 0) { musicIcon.className = ""; } else { musicIcon.className = "rotate"; }// 更好的方法,重新设置一个样式,让它转就给它加上这个样式,否则就去掉这个样式  },false); </script>

你可能感兴趣的:(动画,css3)