每次看到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>       <div class="title">           <p>小黄人</p>       </div>       <div class="wrapper">           <div class="littleH">               <div class="light">                   <div class="light_left">                       <p>欢迎欢迎,热烈欢迎</p>                   </div>                   <div class="light_right">                       <p>欢迎欢迎,热烈欢迎</p>                   </div>                   <div class="load"></div>               </div>               <div class="littleH_body">                   <div class="leftHair"></div>                   <div class="rightHair"></div>                   <div class="leftBlackeye"></div>                   <div class="leftWhiteeye"></div>                   <div class="rightBlackeye"></div>                   <div class="rightWhiteeye"></div>                   <div class="mouse"></div>                   <div class="leftFoot"></div>                   <div class="rightFoot"></div>               </div>           </div>       </div>   </body>  

css代码:

CSS Code复制内容到剪贴板 body{                margin: 0;                padding: 0;                width: 100%;                height: 100%;            }            .title p{                text-aligncenter;                font-size100px;                font-weightbolder;                color:#333;            }            .wrapper{                margin400px auto;            }            .littleH{                positionrelative;                -webkit-perspective: 800;                -webkit-perspective-origin: 50% 50%;            }            .light{                -webkit-transform-style: preserve-3d;            }            .light .light_left,.light .light_right{                positionabsolute;                width: 100%;                height300px;                background: lightblue;                -webkit-transform: rotateY(90deg) translate3d(0,300px,-200px);                -webkit-animation: changeBgColor 2s linear infinite;            }            .light .light_right{                -webkit-transform: rotateY(-90deg) translate3d(0,300px,-215px);                -webkit-animation-delay: 1s;            }            @-webkit-keyframes changeBgColor{                0%,100%{                    background: lightblue;                }                50%{                    background: lightgreen;                }            }            .light .light_left p,.light .light_right p{                color:#fff;                font-size80px;                font-weightbold;                margin-left100px;            }            .light .light_right p{                floatrightright;                margin-right100px;            }            .light .load{                positionabsolute;                width500px;                height1500px;                background: -webkit-gradient(linear, left topleft bottombottomcolor-stop(51%,#aadbdc), color-stop(52%,#ffffff));                background: -webkit-linear-gradient(top#aadbdc 51%,#ffffff 52%);                background: linear-gradient(to bottombottom#aadbdc 51%,#ffffff 52%);                 background-size350px 80px;                -webkit-animation: move_load 5s linear infinite;            }            @-webkit-keyframes move_load{                0%{                    -webkit-transform:rotateX(90deg) translate3d(250px,0,0);                }                100%{                    -webkit-transform:rotateX(90deg) translate3d(250px,-320px,0);                }            }            .littleH_body{                positionabsolute;                left:50%;                margin-left: -157px;                width314px;                height425px;                backgroundurl(1.png);                -webkit-transform-style: preserve-3d;            }            .leftHair{                positionabsolute;                rightright58px;                top:-5px;                width100px;                height17px;                backgroundurl(lefthair.png);                -webkit-transform-origin: left bottombottom;                -webkit-animation: lefthair 1s .3s ease-in-out infinite;               }            @-webkit-keyframes lefthair{                0%,10%,40%,100%{                    -webkit-transform: rotate(0deg) translateY(1px);                }                30%{                    -webkit-transform: rotate(-3deg) translateY(1px);                }            }            .rightHair{                positionabsolute;                left58px;                top:-8px;                width100px;                height16px;                backgroundurl(righthair.png);                -webkit-transform-origin: rightright bottombottom;                -webkit-animation: righthair 1s ease-in-out infinite;            }            @-webkit-keyframes righthair{                0%,10%,40%,100%{                    -webkit-transform: rotate(0deg) translateY(1px);                }                30%{                    -webkit-transform: rotate(4deg) translateY(1px);                }            }            .leftBlackeye{                positionabsolute;                rightright87px;                top:102px;                width43px;                height43px;                backgroundurl(eyeblack.png);                -webkit-animation: leftblackeye 5s ease-in infinite;            }            @-webkit-keyframes leftblackeye{                0%,20%,50%,70%,100%{                    -webkit-transform: translateX(0px);                }                30%,40%{                    -webkit-transform: translateX(15px);                }                80%,90%{                    -webkit-transform: translateX(-15px);                }            }            .leftWhiteeye{                positionabsolute;                rightright92px;                top:110px;                width20px;                height21px;                backgroundurl(whiteeye.png);                background-size: 95% 95%;                background-repeatno-repeat;                -webkit-animation: leftwhiteeye 5s ease-in infinite;            }            @-webkit-keyframes leftwhiteeye{                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{                positionabsolute;                left84px;                top:102px;                width43px;                height43px;                backgroundurl(eyeblack.png);                -webkit-animation: rightblackeye 5s ease-in infinite;            }            @-webkit-keyframes rightblackeye{                0%,20%,50%,70%,100%{                    -webkit-transform: translateX(0px);                }                30%,40%{                    -webkit-transform: translateX(15px);                }                80%,90%{                    -webkit-transform: translateX(-15px);                }            }            .rightWhiteeye{                positionabsolute;                left102px;                top:112px;                width20px;                height21px;                backgroundurl(whiteeye.png);                background-size: 95% 95%;                background-repeatno-repeat;                -webkit-animation: rightwhiteeye 5s ease-in infinite;            }            @-webkit-keyframes rightwhiteeye{                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{                positionabsolute;                left126px;                top:210px;                width71px;                height30px;                backgroundurl(mouse.png);                -webkit-transform-origin: center top;                -webkit-animation: mouse 5s ease-in-out infinite;            }            @-webkit-keyframes mouse{                40%{                    -webkit-transform: rotate(-15deg) translateX(22px);                }                0%,20%,60%,100%{                    -webkit-transform: rotate(0deg);                }            }            .leftFoot{                positionabsolute;                rightright85px;                top:424px;                width68px;                height43px;                backgroundurl(leftfoot.png);                -webkit-transform-origin: left top;                -webkit-animation: leftfoot .6s ease-in-out infinite;            }            @-webkit-keyframes leftfoot{                0%,50%,100%{                    -webkit-transform: rotate(0deg);                }                80%{                    -webkit-transform: rotate(-10deg);                }            }            .rightFoot{                positionabsolute;                left85px;                top:424px;                width68px;                height43px;                backgroundurl(rightfoot.png);                margin-bottom100px;                -webkit-transform-origin: rightright top;                -webkit-animation: rightfoot .6s ease-in-out infinite;            }            @-webkit-keyframes rightfoot{                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

CSS3实现可爱的小黄人动画