作业题之动画改良

CSS3 有3种和动画相关的属性:transform, transition, animation。

其中 transform 描述了元素静态样式。而transition 和 animation 却都能实现动画效果。

所以它们常常配合使用,可以做到一些很炫的效果。

不同点:

1.  触发条件不同。transition通常和hover等事件配合使用,由事件触发。animation则和gif动态图差不多,立即播放。

2. 循环。 animation可以设定循环次数。

3. 精确性。 animation可以设定每一帧的样式和时间。tranistion 只能设定头尾。 animation中可以设置每一帧需要单独变化的样式属性,

transition中所有样式属性都要一起变化。

4. 与javascript的交互。animation与js的交互不是很紧密。tranistion和js的结合更强大。js设定要变化的样式,

transition负责动画效果,天作之合,比之前只能用js时爽太多。

结论:

1. 如果要灵活定制多个帧以及循环,用animation.

2. 如果要简单的from to 效果,用 transition.

3. 如果要使用js灵活设定动画属性,用transition.

以上是摘抄别人的博文的。

transition和animation是不能一起共同一起使用的。

这次作业有个要做动画的效果。

达标效果:

这个是用transition简单的过渡动画效果,由于好像不是很美观,所以改良了一下。

改良效果:

这个是使用animation的动画效果实现的,可以看出动画比较丰富一些,不会只有一种动画在动。

改良代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>zuoye2</title>
    <style>
    div{
        margin: 50px auto 0;
        width: 600px;
        height: 194px;
        background: url(bg_icon.png) 158px 46px/144px 66px,
        url(21.png) 510px 194px/24px 24px,
        url(22.png) 539px 194px/23px 24px,
        url(23.png) 568px 194px/23px 24px,
        url(zuoye-2.png);
        background-repeat:no-repeat;
        animation: doMove01 1s forwards;
    }
    @keyframes doMove01{
        0%{background: url(bg_icon.png) 150px 32px/175px 96px,
            url(21.png) 510px 163px/24px 24px,
            url(22.png) 539px 163px/23px 24px,
            url(23.png) 568px 163px/23px 24px,
            url(zuoye-2.png);
            background-repeat:no-repeat;}
        100%{
            background: url(bg_icon.png) 158px 46px/144px 66px,
            url(21.png) 510px 194px/24px 24px,
            url(22.png) 539px 194px/23px 24px,
            url(23.png) 568px 194px/23px 24px,
            url(zuoye-2.png);
            background-repeat:no-repeat;
        }
    }
    div:hover{
        animation: doMove 1.3s forwards;
    }
    @keyframes doMove{
        0%{background: url(bg_icon.png) 156px 44px/147px 69px,
            url(21.png) 510px 194px/24px 24px,
            url(22.png) 539px 194px/23px 24px,
            url(23.png) 568px 194px/23px 24px,
            url(zuoye-2.png);
            background-repeat:no-repeat;
        }
        5%{background: url(bg_icon.png) 155px 43px/150px 72px,
            url(21.png) 510px 170px/24px 24px,
            url(22.png) 539px 182px/23px 24px,
            url(23.png) 568px 194px/23px 24px,
            url(zuoye-2.png);
            background-repeat:no-repeat;
        }
        10%{background: url(bg_icon.png) 154px 41px/153px 75px,
            url(21.png) 510px 158px/24px 24px,
            url(22.png) 539px 170px/23px 24px,
            url(23.png) 568px 182px/23px 24px,
            url(zuoye-2.png);
            background-repeat:no-repeat;
        }
        20%{background: url(bg_icon.png) 153px 39px/159px 81px,
            url(21.png) 510px 137px/24px 24px,
            url(22.png) 539px 149px/23px 24px,
            url(23.png) 568px 161px/23px 24px,
            url(zuoye-2.png);
            background-repeat:no-repeat;
        }
        25%{background: url(bg_icon.png) 152px 38px/162px 84px,
            url(21.png) 510px 149px/24px 24px,
            url(22.png) 539px 137px/23px 24px,
            url(23.png) 568px 149px/23px 24px,
            url(zuoye-2.png);
            background-repeat:no-repeat;
        }
        30%{background: url(bg_icon.png) 151px 36px/165px 87px,
            url(21.png) 510px 161px/24px 24px,
            url(22.png) 539px 149px/23px 24px,
            url(23.png) 568px 137px/23px 24px,
            url(zuoye-2.png);
            background-repeat:no-repeat;
        }
        35%{background: url(bg_icon.png) 150px 34px/168px 90px,
            url(21.png) 510px 163px/24px 24px,
            url(22.png) 539px 161px/23px 24px,
            url(23.png) 568px 149px/23px 24px,
            url(zuoye-2.png);
            background-repeat:no-repeat;
        }
        40%{background: url(bg_icon.png) 150px 32px/171x 93px,
            url(21.png) 510px 163px/24px 24px,
            url(22.png) 539px 163px/23px 24px,
            url(23.png) 568px 161px/23px 24px,
            url(zuoye-2.png);
            background-repeat:no-repeat;
        }
        45%{background: url(bg_icon.png) 150px 32px/175px 96px,
            url(21.png) 510px 163px/24px 24px,
            url(22.png) 539px 163px/23px 24px,
            url(23.png) 568px 163px/23px 24px,
            url(zuoye-2.png);
            background-repeat:no-repeat;
        }
        100%{background: url(bg_icon.png) 150px 32px/175px 96px,
            url(21.png) 510px 163px/24px 24px,
            url(22.png) 539px 163px/23px 24px,
            url(23.png) 568px 163px/23px 24px,
            url(zuoye-2.png);
            background-repeat:no-repeat;
        }
    }


    </style>
</head>
<body>
    <div></div>
</body>
</html>

有更好的意见和想法请评论一下。前提是纯css实现的。(O ^ ~ ^ O)

原文地址:https://www.cnblogs.com/zhangzhicheng/p/5767963.html