CSS3实现小黄人动画

转载请注明出处,谢谢!

每次看到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结构:

<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代码:

body{
            margin: 0;
            padding: 0;
            width: 100%;
            height: 100%;
        }
        .title p{
            text-align: center;
            font-size: 100px;
            font-weight: bolder;
            color:#333;
        }
        .wrapper{
            margin: 400px auto;
        }
        .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: 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-size: 80px;
            font-weight: bold;
            margin-left: 100px;
        }
        .light .light_right p{
            float: right;
            margin-right: 100px;
        }
        .light .load{
            position: absolute;
            width: 500px;
            height: 1500px;
            background: -webkit-gradient(linear, left top, left bottom, color-stop(51%,#aadbdc), color-stop(52%,#ffffff));
            background: -webkit-linear-gradient(top, #aadbdc 51%,#ffffff 52%);
            background: linear-gradient(to bottom, #aadbdc 51%,#ffffff 52%);
            background-size: 350px 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{
            position: absolute;
            left:50%;
            margin-left: -157px;
            width: 314px;
            height: 425px;
            background: url(1.png);
            -webkit-transform-style: preserve-3d;
        }
        .leftHair{
            position: absolute;
            right: 58px;
            top:-5px;
            width: 100px;
            height: 17px;
            background: url(lefthair.png);
            -webkit-transform-origin: left bottom;
            -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{
            position: absolute;
            left: 58px;
            top:-8px;
            width: 100px;
            height: 16px;
            background: url(righthair.png);
            -webkit-transform-origin: right bottom;
            -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{
            position: absolute;
            right: 87px;
            top:102px;
            width: 43px;
            height: 43px;
            background: url(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{
            position: absolute;
            right: 92px;
            top:110px;
            width: 20px;
            height: 21px;
            background: url(whiteeye.png);
            background-size: 95% 95%;
            background-repeat: no-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{
            position: absolute;
            left: 84px;
            top:102px;
            width: 43px;
            height: 43px;
            background: url(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{
            position: absolute;
            left: 102px;
            top:112px;
            width: 20px;
            height: 21px;
            background: url(whiteeye.png);
            background-size: 95% 95%;
            background-repeat: no-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{
            position: absolute;
            left: 126px;
            top:210px;
            width: 71px;
            height: 30px;
            background: url(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{
            position: absolute;
            right: 85px;
            top:424px;
            width: 68px;
            height: 43px;
            background: url(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{
            position: absolute;
            left: 85px;
            top:424px;
            width: 68px;
            height: 43px;
            background: url(rightfoot.png);
            margin-bottom: 100px;
            -webkit-transform-origin: right 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)知识点的学习及实践。多练习,才能记得更牢,用得更顺,这只是开始……

时间: 2024-08-02 21:05:07

CSS3实现小黄人动画的相关文章

css3实现小黄人

效果就像这样: 不废话,直接上代码! hrml代码: <!DOCTYPE html> <html> <head lang="zh"> <meta charset="UTF-8"> <title>纯CSS3画出小黄人并实现动画效果</title> <Link href="index.css" type="text/css" rel="styl

【推荐】纯CSS3画出小黄人并实现动画效果

前言 前两天我刚发布了一篇CSS3实现小黄人动画的博客,但是实现的CSS3动画是基于我在站酷网找到的一张小黄人的jpg格式图片,并自己用PS抠出需要实现动画的部分,最后才完成的动画效果.但是,其实我的初衷是想体验一下用图片做动画的赶脚,但是找不到素材,才无奈用了最笨的方法来满足自己的需求,本想勉强能看就行了.可是呢,还是抵不住自己内心的完美,于是乎,用了一个晚上用CSS3画出了小黄人再实现类似的动画效果. 正题 OK,大家看一下下面两张图有什么不同: 当然,很多人会说,明显大小不同,嘴巴,头发也

纯CSS3画出小黄人并实现动画效果

原文出处: 郭锦荣 前言 前两天我刚发布了一篇CSS3实现小黄人动画的博客,但是实现的CSS3动画是基于我在站酷网找到的一张小黄人的jpg格式图片,并自己用PS抠出需要实现动画的部分,最后才完成的动画效果.但是,其实我的初衷是想体验一下用图片做动画的赶脚,但是找不到素材,才无奈用了最笨的方法来满足自己的需求,本想勉强能看就行了.可是呢,还是抵不住自己内心的完美,于是乎,用了一个晚上用CSS3画出了小黄人再实现类似的动画效果. 正题 OK,大家看一下下面两张图有什么不同: 当然,很多人会说,明显大

CSS3 小黄人案例

使用 CSS3 和 HTML5 制作一个小黄人. 结构代码: 1 <div class="wrap"> 2 <!-- 头发 --> 3 <div class="hair"> 4 <div class="hair_1"></div> 5 <div class="hair_2"></div> 6 </div> 7 <!-- 身体

【二次元的CSS】—— 用 DIV + LESS 做一个小黄人构造器

仅仅使用div作为身体的布局,用css3的各种transform和圆角属性来绘制各个细节的形状,当然也不会使用任何图片哦.那就没意思了. 有的同学说,用canvas不是能画得更逼真而且更简单吗?这点我也非常赞同,但我的理由还是,那就没意思了. 这次用到了一些LESS的特性,通过设置一些指定的参数来生成不同种类.不同身材的小黄人. GitHub传送门:https://github.com/lancer07/css3Minons 效果是这个样子的 首先 先做个标准版的(ps:也就是图中的第一个小黄人

微信小程序相关三、css写小黄人

小程序上课第三天,因为今天院里有活动,所以没去上课,第四天上午又因为要召开入党转正大会,又耽误了一上午,下午去上课,要了资料.这两天讲了一些零零碎碎的东西,做的实例有上面这个小黄人 都是用的css,基本上都是用border,transform:rotate(),animation,和一些细节做的,左边的对话框那里的小尖头也是一个重点细节 下面附上代码: 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset=&quo

小黄人这步棋,vivo怎么下?

9月13日<小黄人大眼萌>在国内首映,vivo.Uber也跟着凑起了热闹.12.13日两天,在世贸天阶,vivo联手Uber邀请大家与小黄人手机图标合影.只要上传照片上传照片至微博并@Uber优步北京@vivo智能手机,现场获得活动参与代码,在指定时间打开Uber输入,即有机会赢取小黄人神秘首映礼邀请函. 夏末秋初的凉爽日,却被小黄人"搅黄"了,"小黄人黄"(Minion Yellow)甚至还被定为2015年的流行色. 凭借着讨喜的性格.呆萌的造型.满满

Quartz2D练习 -- 小黄人

Main.storyboard <?xml version="1.0" encoding="UTF-8" standalone="no"?> <document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="5053" systemVers

iOS开发 - Quartz2D绘制小黄人

Quartz2D绘制小黄人 - (void)drawRect:(CGRect)rect { // 1.上下文 CGContextRef ctx = UIGraphicsGetCurrentContext(); // 2.身体 drawBody(ctx, rect); // 3.嘴(微笑) drawMouth(ctx, rect); // 4.画眼睛 drawEyes(ctx, rect); } /** * 眼睛 */ void drawEyes(CGContextRef ctx, CGRect