CSS3实现可爱的小黄人动画

时间:2021-05-08

每次看到CSS3动画就心痒痒想试一下,记得一个多月前看了白树哥哥的一篇博客,突然开窍,于是拿他提供的demo试了一下,感觉很棒!下图为demo提供的动画帧设计稿。

自己也想说搞一个DIY的动画出来,可是,会PS不一定会设计啊,我搞不出一套动画设计稿出来啊【抓狂】….于是乎,去了站酷网找找素材,我果然还是太天真了,最后从心只找到了一张图:

联想到我要做CSS3动画,呵呵……怎么办 ? ——没办法,抠呗!(此处勿喷,着实无素材)

……最后效果变成这样子,这是移动端的例子!(gif图有卡顿现象,请凑合看吧,非喜勿喷…):

OK,其实主要目的还是知识点的学习吧:

这个demo涉及的知识点有:

perspective

perspective-origin

transform-style

transform-origin

animation

@keyframes

translate3d,translateX,rotateY….

这些知识点有些涉及css3d动画,各个知识点的具体详解我就不解释了,有兴趣可以到这里了解一下:http://isux.tencent.com/css3/index.html

回到这个案例,话说这么挫的动画是怎么具体实现的呢? 我将分享代码给大家练习:

html结构:

XML/HTML Code复制内容到剪贴板
  • <body>
  • <divclass="title">
  • <p>小黄人</p>
  • </div>
  • <divclass="wrapper">
  • <divclass="littleH">
  • <divclass="light">
  • <divclass="light_left">
  • <p>欢迎欢迎,热烈欢迎</p>
  • </div>
  • <divclass="light_right">
  • <p>欢迎欢迎,热烈欢迎</p>
  • </div>
  • <divclass="load"></div>
  • </div>
  • <divclass="littleH_body">
  • <divclass="leftHair"></div>
  • <divclass="rightHair"></div>
  • <divclass="leftBlackeye"></div>
  • <divclass="leftWhiteeye"></div>
  • <divclass="rightBlackeye"></div>
  • <divclass="rightWhiteeye"></div>
  • <divclass="mouse"></div>
  • <divclass="leftFoot"></div>
  • <divclass="rightFoot"></div>
  • </div>
  • </div>
  • </div>
  • </body>
  • css代码:

    CSS Code复制内容到剪贴板
  • body{
  • margin:0;
  • padding:0;
  • width:100%;
  • height:100%;
  • }
  • .titlep{
  • text-align:center;
  • font-size:100px;
  • font-weight:bolder;
  • color:#333;
  • }
  • .wrapper{
  • margin:400pxauto;
  • }
  • .littleH{
  • position:relative;
  • -webkit-perspective:800;
  • -webkit-perspective-origin:50%50%;
  • }
  • .light{
  • -webkit-transform-style:preserve-3d;
  • }
  • .light.light_left,.light.light_right{
  • position:absolute;
  • width:100%;
  • height:300px;
  • background:lightblue;
  • -webkit-transform:rotateY(90deg)translate3d(0,300px,-200px);
  • -webkit-animation:changeBgColor2slinearinfinite;
  • }
  • .light.light_right{
  • -webkit-transform:rotateY(-90deg)translate3d(0,300px,-215px);
  • -webkit-animation-delay:1s;
  • }
  • @-webkit-keyframeschangeBgColor{
  • 0%,100%{
  • background:lightblue;
  • }
  • 50%{
  • background:lightgreen;
  • }
  • }
  • .light.light_leftp,.light.light_rightp{
  • color:#fff;
  • font-size:80px;
  • font-weight:bold;
  • margin-left:100px;
  • }
  • .light.light_rightp{
  • float:rightright;
  • margin-right:100px;
  • }
  • .light.load{
  • position:absolute;
  • width:500px;
  • height:1500px;
  • background:-webkit-gradient(linear,lefttop,leftbottombottom,color-stop(51%,#aadbdc),color-stop(52%,#ffffff));
  • background:-webkit-linear-gradient(top,#aadbdc51%,#ffffff52%);
  • background:linear-gradient(tobottombottom,#aadbdc51%,#ffffff52%);
  • background-size:350px80px;
  • -webkit-animation:move_load5slinearinfinite;
  • }
  • @-webkit-keyframesmove_load{
  • 0%{
  • -webkit-transform:rotateX(90deg)translate3d(250px,0,0);
  • }
  • 100%{
  • -webkit-transform:rotateX(90deg)translate3d(250px,-320px,0);
  • }
  • }
  • .littleH_body{
  • position:absolute;
  • left:50%;
  • margin-left:-157px;
  • width:314px;
  • height:425px;
  • background:url(1.png);
  • -webkit-transform-style:preserve-3d;
  • }
  • .leftHair{
  • position:absolute;
  • rightright:58px;
  • top:-5px;
  • width:100px;
  • height:17px;
  • background:url(lefthair.png);
  • -webkit-transform-origin:leftbottombottom;
  • -webkit-animation:lefthair1s.3sease-in-outinfinite;
  • }
  • @-webkit-keyframeslefthair{
  • 0%,10%,40%,100%{
  • -webkit-transform:rotate(0deg)translateY(1px);
  • }
  • 30%{
  • -webkit-transform:rotate(-3deg)translateY(1px);
  • }
  • }
  • .rightHair{
  • position:absolute;
  • left:58px;
  • top:-8px;
  • width:100px;
  • height:16px;
  • background:url(righthair.png);
  • -webkit-transform-origin:rightrightbottombottom;
  • -webkit-animation:righthair1sease-in-outinfinite;
  • }
  • @-webkit-keyframesrighthair{
  • 0%,10%,40%,100%{
  • -webkit-transform:rotate(0deg)translateY(1px);
  • }
  • 30%{
  • -webkit-transform:rotate(4deg)translateY(1px);
  • }
  • }
  • .leftBlackeye{
  • position:absolute;
  • rightright:87px;
  • top:102px;
  • width:43px;
  • height:43px;
  • background:url(eyeblack.png);
  • -webkit-animation:leftblackeye5sease-ininfinite;
  • }
  • @-webkit-keyframesleftblackeye{
  • 0%,20%,50%,70%,100%{
  • -webkit-transform:translateX(0px);
  • }
  • 30%,40%{
  • -webkit-transform:translateX(15px);
  • }
  • 80%,90%{
  • -webkit-transform:translateX(-15px);
  • }
  • }
  • .leftWhiteeye{
  • position:absolute;
  • rightright:92px;
  • top:110px;
  • width:20px;
  • height:21px;
  • background:url(whiteeye.png);
  • background-size:95%95%;
  • background-repeat:no-repeat;
  • -webkit-animation:leftwhiteeye5sease-ininfinite;
  • }
  • @-webkit-keyframesleftwhiteeye{
  • 0%,20%,50%,70%,100%{
  • -webkit-transform:translateX(0px);
  • }
  • 30%,40%{
  • -webkit-transform:translate3d(15px,3px,0);
  • }
  • 80%,90%{
  • -webkit-transform:translate3d(-30px,3px,0);
  • }
  • }
  • .rightBlackeye{
  • position:absolute;
  • left:84px;
  • top:102px;
  • width:43px;
  • height:43px;
  • background:url(eyeblack.png);
  • -webkit-animation:rightblackeye5sease-ininfinite;
  • }
  • @-webkit-keyframesrightblackeye{
  • 0%,20%,50%,70%,100%{
  • -webkit-transform:translateX(0px);
  • }
  • 30%,40%{
  • -webkit-transform:translateX(15px);
  • }
  • 80%,90%{
  • -webkit-transform:translateX(-15px);
  • }
  • }
  • .rightWhiteeye{
  • position:absolute;
  • left:102px;
  • top:112px;
  • width:20px;
  • height:21px;
  • background:url(whiteeye.png);
  • background-size:95%95%;
  • background-repeat:no-repeat;
  • -webkit-animation:rightwhiteeye5sease-ininfinite;
  • }
  • @-webkit-keyframesrightwhiteeye{
  • 0%,20%,50%,70%,100%{
  • -webkit-transform:translateX(0px);
  • }
  • 30%,40%{
  • -webkit-transform:translate3d(15px,3px,0);
  • }
  • 80%,90%{
  • -webkit-transform:translate3d(-30px,3px,0);
  • }
  • }
  • .mouse{
  • position:absolute;
  • left:126px;
  • top:210px;
  • width:71px;
  • height:30px;
  • background:url(mouse.png);
  • -webkit-transform-origin:centertop;
  • -webkit-animation:mouse5sease-in-outinfinite;
  • }
  • @-webkit-keyframesmouse{
  • 40%{
  • -webkit-transform:rotate(-15deg)translateX(22px);
  • }
  • 0%,20%,60%,100%{
  • -webkit-transform:rotate(0deg);
  • }
  • }
  • .leftFoot{
  • position:absolute;
  • rightright:85px;
  • top:424px;
  • width:68px;
  • height:43px;
  • background:url(leftfoot.png);
  • -webkit-transform-origin:lefttop;
  • -webkit-animation:leftfoot.6sease-in-outinfinite;
  • }
  • @-webkit-keyframesleftfoot{
  • 0%,50%,100%{
  • -webkit-transform:rotate(0deg);
  • }
  • 80%{
  • -webkit-transform:rotate(-10deg);
  • }
  • }
  • .rightFoot{
  • position:absolute;
  • left:85px;
  • top:424px;
  • width:68px;
  • height:43px;
  • background:url(rightfoot.png);
  • margin-bottom:100px;
  • -webkit-transform-origin:rightrighttop;
  • -webkit-animation:rightfoot.6sease-in-outinfinite;
  • }
  • @-webkit-keyframesrightfoot{
  • 0%,50%,100%{
  • -webkit-transform:rotate(0deg);
  • }
  • 30%{
  • -webkit-transform:rotate(10deg);
  • }
  • }
  • 代码应该还是很简单就能看懂的,不足之处在于图片没有合并,就凑合吧,主要目的还是对CSS3动画(特别是3d)知识点的学习及实践。多练习,才能记得更牢,用得更顺,这只是开始……

    PS:附上我抠的图片

    1.png

    righthair.png

    lefthair.png

    eyeblack.png

    whiteeye.png

    mouse.png

    rightfoot.png

    leftfoot.png

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

    原文链接:http://www.cnblogs.com/jr1993/p/4654622.html

    声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

    相关文章