• 使用CSS3各个属性实现小人的动画


    使用CSS3各个属性实现带有音乐小人的动画,完全不使用JS代码:

    注:chrome浏览器效果最佳,最终效果静态图:

    HTML代码如下:

    <!DOCTYPE html>
    <html>
    <head>    
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8";>
        <title>练习一个小人的动画</title>
        <link rel="stylesheet" href="/CSS3/css/people.css" />
    </head>
    
    <body>
        <div class="music1">
            <audio src="/CSS3/theme_8.mp3" autoplay loop/>
        </div>
        
        <!--整体的div布局-->
        <div class="warp">
            <div class="border_circle" id="one"></div>
            <div class="border_circle" id="two"></div>
            <!--背景圆圈-->    
            <div class="backgroud_circle">
                <div class="tight-light"></div>
                <span class="shirt-text">I</span>
                <span class="shirt-text"></span>
                <span class="shirt-text">Y</span>
                <span class="shirt-text">O</span>
                <span class="shirt-text">U</span>
                <div class="tight-dark"></div>
                <!--身体-->
                <div class="body"></div>
            </div>
            
            <!--头部-->
            <div class="head">
                <!--耳朵-->
                <div class="ear" id="left"></div>
                <div class="ear" id="right"></div>
                <!--头发-->
                <div class="hair-main">
                    <div class="sideburn" id="left"></div>
                    <div class="sideburn" id="right"></div>
                    <div class="hair-top"></div>
                </div>
                <!---->
                <div class="face">
                    <div class="hair-bottom"></div>
                    <div class="nose"></div>
                    <!--形成鼻子的阴影-->
                    <div class="shadow-main">
                        <div class="shadow"></div>
                    </div>
                    <!--左眼-->
                    <div class="eye-shadow" id="left">
                        <div class="eyebrow" id="left"></div>
                        <div class="eye"></div>
                    </div>
                    <!--右眼-->
                    <div class="eye-shadow" id="right">
                        <div class="eyebrow" id="right"></div>
                        <div class="eye"></div>
                    </div>
                    <!--嘴巴-->
                    <div class="mouse"></div>
                </div>
            </div>
            
            <!--音符-->
            <span class="music" id="one">&#9835;</span>
            <span class="music" id="two">&#9834;</span>
        </div>
    </body>
    </html>

    CSS代码如下:

    /* CSS Document */
    
    body,html{
        width:100%;
        height:100%;
        margin:0;
        display:table;
        text-align:center;
    }
    .music1
    {
        display:none;
    }
    
    .warp{ 
        margin-top:100px; 
        vertical-align:middle; 
        position:relative;
    }
    
    .backgroud_circle{
        width:400px;
        height:400px;
        border-radius:100%;
        background:#6699FF;
        margin:0 auto;
        overflow:hidden;
        -webkit-mask-image: -webkit-radial-gradient(#BADA55, #BADA55);
        -moz-mask-image: -webkit-radial-gradient(#BADA55, #BADA55);
          -o-mask-image: -webkit-radial-gradient(#BADA55, #BADA55);
          -ms-mask-image: -webkit-radial-gradient(#BADA55, #BADA55);
        /*执行动画*/
        animation:grow 0.7s ease;
        -webkit-animation:grow 0.7s ease;
        transform-origin:center;
    }
    
    /*身体body*/
    .body{
        width:285px;
        height:400px;
        margin:0 auto;
        background:#333333;
        position:relative;
        top:100px;
        border-radius:100px;
        /*执行动画*/
        -webkit-animation:body-enter 0.7s 0.2s 1 ease;
        animation:body-enter 0.7s 0.2s 1 ease;
        /*-webkit-animation-fill-mode:forwards;
        animation-fill-mode:forwards;*/
    }
    
    /*头部head*/
    .head{
        width:196px;
        height:260px;
        border-radius:50px;
        background:#ffe4be;
        position:absolute;
        top:50%;
        left:50%;
        margin-top:-210px;
        margin-left:-98px;
        /*动画执行*/
        animation:grow 0.7s 0.5s ease;
        -webkit-animation:grow 0.7s 0.5s ease;
        transform-origin:bottom;
    }
    
    /*头发*/
    .hair-main
    {
        width:220px;
        height:0px;
        background:#FF9966;
        border-radius:54px 54px 0px 0px;
        animation:hair-main 0.7s 0.9s ease;
        -webkit-animation:hair-main 0.7s 0.9s ease;
        animation-fill-mode:forwards;
        -webkit-animation-fill-mode:forwards;
        position:relative;
        margin-left:-12px;
        margin-top:-10px;
        z-index:2;
    }
    
    /*鬓角*/
    .sideburn
    {
        width:8px;
        height:25px;
        background:#FF9966;
        opacity:0;
        bottom:-25px;
        position:absolute;
        animation:sideburn-main 0.7s 1s ease;
        -webkit-animation:sideburn-main 0.7s 1s ease;
        animation-fill-mode:forwards;
        -webkit-animation-fill-mode:forwards;
    }
    .sideburn#left
    {
        left:12px;
    }
    .sideburn#right
    {
        right:12px;
    }
    
    /*耳朵*/
    .ear
    {
        width:24px;
        height:35px;
        position:absolute;
        background:#ffe4be;
        top:116px;
        border-radius:12px;
        animation:grow 0.7s 1.3s ease;
        -webkit-animation:grow 0.7s 1.3s ease;
        animation-fill-mode:forwards;
        -webkit-animation-fill-mode:forwards;
        transform:scale(0);
        -webkit-transform:scale(0);
    }
    .ear#left
    {
        left:-12px;
    }
    .ear#right
    {
        right:-12px;
    }
    
    /*脸部*/
    .face
    {
        width:180px;
        height:0px;
        border-radius:48px;
        background:#ffe4be;
        position:absolute;
        top:40px;
        left:8px;
        animation:hair-main 0.7s 0.5s linear;
        -webkit-animation:hair-main 0.7s 0.5s linear;
        animation-fill-mode:forwards;
        -webkit-animation-fill-mode:forwards;
        z-index:3;
    }
    
    /*鼻子*/
    .nose
    {
        width:20px;
        height:45px;
        opacity:1;
        border-top-left-radius:20px;
        background:#ffe4be;
        position:absolute;
        top:80px;
        left:50%;
        margin-left:-20px;
        animation:shadow-main 0.7s 3s ease;
          animation-fill-mode: forwards;
          -webkit-animation:shadow-main 0.7s 3s ease;
          -webkit-animation-fill-mode: forwards;
          opacity:0;
         z-index:5;
    }
    
    /*形成鼻子的阴影*/
    .shadow-main
    {
        width:98px;
        height:260px;
        position:absolute;
        bottom:-84px;
        left:-8px;
        z-index:4;
        overflow:hidden;
    }
    .shadow
    {
        width:98px;
        height:260px;
        border-radius:50px;
        background:rgba(149,36,0,0.1);
        position:absolute;
        opacity:0;
        z-index:4;
        animation:shadow-main 1s 2.8s ease;
        -webkit-animation:shadow-main 1s 2.8s ease;
        animation-fill-mode:forwards;
        -webkit-animation-fill-mode:forwards;
    }
    
    /*眼睛阴影*/
    .eye-shadow
    {
        width:30px;
        height:15px;
        border-radius:0 0 15px 15px;
        background:rgba(149,36,0,0.1);
        position:absolute;
        top:70px;
        animation:grow 0.7s 2s ease;
        -webkit-animation:grow 0.7s 2s ease;
        animation-fill-mode:forwards;
        -webkit-animation-fill-mode:forwards;
        transform:scale(0);
        -webkit-transform:scale(0);
    }
    .eye-shadow#left
    {
        left:35px;
        z-index:5;
    }
    .eye-shadow#right
    {
        right:35px;
    }
    
    /*眼眉*/
    .eyebrow
    {
        width:40px;
        height:10px;
        background:#FF9966;
        position:absolute;
        top:-35px;
        left:50%;
        opacity:0;
        margin-left:-20px;
        -webkit-backface-visibility:hidden;/*设定元素的背面是否可见*/
    }
    .eyebrow#left
    {
        animation:eyebrow-left 0.7s 2.2s ease;
        -webkit-animation:eyebrow-left 0.7s 2.2s ease;
        animation-fill-mode:forwards;
        -webkit-animation-fill-mode:forwards;
    }
    .eyebrow#right
    {
        animation:eyebrow-right 0.7s 2.2s ease, eyebrow-right-raise 2s 6.6s infinite alternate ease-in-out;
        -webkit-animation:eyebrow-right 0.7s 2.2s ease, eyebrow-right-raise 2s 6.6s infinite alternate ease-in-out;
        animation-fill-mode:forwards;
        -webkit-animation-fill-mode:forwards;
    }
    
    /*两只蓝色眼睛*/
    .eye
    {
        width:20px;
        height:28px;
        border-radius:10px;
        background:#334C68;
        position:absolute;
        top:-18px;
        left:50%;
        margin-left:-10px;
        animation:grow 0.7s 2.2s ease;
        -webkit-animation:grow 0.7s 2.2s ease;
        animation-fill-mode:forwards;
        -webkit-animation-fill-mode:forwards;
        transform:scale(0);
        -webkit-transform:scale(0);
        transform-origin:bottom;
        -webkit-transform-origin:bottom;
    }
    
    /*嘴巴*/
    .mouse
    {
        width:66px;
        height:33px;
        background:#FFFFFF;
        border-radius:0 0 33px 33px;
        position:absolute;
        left:50%;
        top:150px;
        margin-left:-33px;
        animation:grow 0.7s 2.6s ease;
        -webkit-animation:grow 0.7s 2.6s ease;
        animation-fill-mode:forwards;
        -webkit-animation-fill-mode:forwards;
        transform:scale(0);
        -webkit-transform:scale(0);
    }
    
    /*背景高亮light阴影*/
    .tight-light
    {
        width:400px;
        height:600px;
        background:#ffffff;
        opacity:0;
        position:absolute;
        right:15%;
        animation:tight-light 1s 2.8s ease;
        -webkit-animation:tight-light 1s 2.8s ease;
        animation-fill-mode:forwards;
        -webkit-animation-fill-mode:forwards;
        transform:translate(200px,0px);
        -webkit-transform:translate(200px,0px);
    }
    
    /*背景高亮dark阴影*/
    .tight-dark
    {
        width:400px;
        height:600px;
        background:#000000;
        opacity:0;
        position:absolute;
        left:10%;
        top:35px;
        animation:tight-dark 1s 2.8s ease;
        -webkit-animation:tight-dark 1s 2.8s ease;
        animation-fill-mode:forwards;
        -webkit-animation-fill-mode:forwards;
        transform:translate(-200px,0px);
        -webkit-transform:translate(-200px,0px);
        z-index:6;
    }
    
    /*外边黄色圈*/
    .border_circle
    {
        width:399px;
        height:399px;
        border-radius:50%;
        border:10px solid #ff8345;
        position:absolute;
        top:50%;
        left:50%;
        margin-left:-220px;
        margin-top:-220px;
        transform:scale(0);
        -webkit-transform:scale(0);
        transform-origin:center;
        -webkit-transform-origin:center;
    }
    /*外边黄色圈one*/
    .border_circle#one
    {
        animation:border_circle 1s 3.1s ease;
        -webkit-animation:border_circle 1s 3.1s ease;
        animation-fill-mode:forwards;
        -webkit-animation-fill-mode:forwards;
    }
    /*外边黄色圈two*/
    .border_circle#two
    {
        animation:border_circle 1s 3.3s ease;
        -webkit-animation:border_circle 1s 3.3s ease;
        animation-fill-mode:forwards;
        -webkit-animation-fill-mode:forwards;
    }
    
    /*I YOU*/
    .backgroud_circle  .shirt-text
    {
        font-family:"微软雅黑",sans-serif;
        font-size:50px;
        font-weight:700;
        color:#FFFFFF;
        position:relative;
        top:180px;
        display:inline-block;
        -webkit-text-stroke:2px;
        text-stroke:2px;
        opacity:0;
        -webkit-transform:translate(0px,100px);
        transform:translate(0px,100px);
        animation-fill-mode:forwards !important;
        -webkit-animation-fill-mode:forwards !important;
        z-index:5;
    }
    .backgroud_circle .shirt-text:nth-of-type(1)
    {
        animation:shirt-text 0.7s 3.3s ease;
        -webkit-animation:shirt-text 0.7s 3.3s ease;
    }
    .backgroud_circle .shirt-text:nth-of-type(2)
    {
        color:#FF0000;
        animation:shirt-text 0.7s 3.4s ease, heart 2s 4s infinite ease-in-out;
        -webkit-animation:shirt-text 0.7s 3.4s ease, heart 2s 4s infinite ease-in-out;
    }
    .backgroud_circle .shirt-text:nth-of-type(3)
    {
        animation:shirt-text 0.7s 3.5s ease;
        -webkit-animation:shirt-text 0.7s 3.5s ease;
    }
    .backgroud_circle .shirt-text:nth-of-type(4)
    {
        animation:shirt-text 0.7s 3.6s ease;
        -webkit-animation:shirt-text 0.7s 3.6s ease;
    }
    .backgroud_circle .shirt-text:nth-of-type(5)
    {
        animation:shirt-text 0.7s 3.7s ease;
        -webkit-animation:shirt-text 0.7s 3.7s ease;
    }
    
    /*音符*/
    .music
    {
        position: absolute;
        font-size: 150px;
        color: #FCB040;
        width: 1px;
        left: 50%;
        opacity: 0;
    }
    .music#one
    {
        margin-left:-250px;
        top:50%;
        animation: note 2s 3.5s infinite ease;
        animation-fill-mode: forwards;
        -webkit-animation: note 2s 3.5s infinite ease;
        -webkit-animation-fill-mode: forwards;
    }
    
    .music#two{
      margin-left: 150px;
      top: 30%;
      animation: note 2s 4.3s infinite ease;
      animation-fill-mode: forwards;
      -webkit-animation: note 2s 4.3s infinite ease;
      -webkit-animation-fill-mode: forwards;
    }
    
    
    /*背景圆圈的动画事件:由中心向外扩张*/
    @-webkit-keyframes grow
    {
        0%{ -webkit-transform:scale(0); transform:scale(0);}
        60%{ -webkit-transform:scale(1.15); transform:scale(1.15);}
        80%{ -webkit-transform:scale(0.95); transform:scale(0.95);}
        100%{ -webkit-transform:scale(1); transform:scale(1);}
    }
    @keyframes grow
    {
        0%{ -webkit-transform:scale(0); transform:scale(0);}
        60%{ -webkit-transform:scale(1.15); transform:scale(1.15);}
        80%{ -webkit-transform:scale(0.95); transform:scale(0.95);}
        100%{ -webkit-transform:scale(1); transform:scale(1);}
    }
    
    /*身体进入样式:由底部向上先变大再恢复正常*/
    @-webkit-keyframes body-enter
    {
        0%{-webkit-transform:translateY(200px);}
        60%{-webkit-transform:translateY(-20px);}
        80%{-webkit-transform:translateY(30px);}
        100%{-webkit-transform:translateY(0);}
    }
    @keyframes body-enter
    {
        0%{-webkit-transform:translateY(200px);}
        60%{-webkit-transform:translateY(-20px);}
        80%{-webkit-transform:translateY(30px);}
        100%{-webkit-transform:translateY(0);}
    }
    
    /*头发动画:*/
    @-webkit-keyframes hair-main
    {
        0%{height:0px; -webkit-transform:translateY(137px); transform:translateY(137px);}
        100%{height:137px; -webkit-transform:translateY(0); transform:translateY(0);}
    }
    @keyframes hair-main
    {
        0%{height:0px; -webkit-transform:translateY(137px); transform:translateY(137px);}
        100%{height:137px; -webkit-transform:translateY(0); transform:translateY(0);}
    }
    
    /*鬓角动画*/
    @-webkit-keyframes sideburn-main
    {
        0%{opacity:0; -webkit-transform:translateY(-25px); transform:translateY(-25px);}
        100%{opacity:1; -webkit-transform:translateY(0); transform:translateY(0);}
    }
    @keyframes sideburn-main
    {
        0%{opacity:0; -webkit-transform:translateY(-25px); transform:translateY(-25px);}
        100%{opacity:1; -webkit-transform:translateY(0); transform:translateY(0);}
    }
    
    /*鼻子阴影动画:*/
    @-webkit-keyframes shadow-main
    {
        0%{ opacity:0; -webkit-transform:translate(98px,0px); transform:translate(98px,0px);}
        50%{ opacity:0;}
        100%{ opacity:1; -webkit-transform:translate(0px,0px); transform:translate(0px,0px);}
    }
    @keyframes shadow-main
    {
        0%{ opacity:0; -webkit-transform:translate(98px,0px); transform:translate(98px,0px);}
        50%{ opacity:0;}
        100%{ opacity:1; -webkit-transform:translate(0px,0px); transform:translate(0px,0px);}
    }
    
    /*左眼眉动画*/
    @-webkit-keyframes eyebrow-left
    {
        0%{opacity:0; -webkit-transform:translateY(-25px); transform:translateY(-25px);}
        70%{opacity:1; -webkit-transform:translateY(5px); transform:translateY(5px);}
        100%{opacity:1; -webkit-transform:translateY(0); transform:translateY(0);}
    }
    @keyframes eyebrow-left
    {
        0%{opacity:0; -webkit-transform:translateY(-25px); transform:translateY(-25px);}
        70%{opacity:1; -webkit-transform:translateY(5px); transform:translateY(5px);}
        100%{opacity:1; -webkit-transform:translateY(0); transform:translateY(0);}
    }
    
    /*右眼眉动画*/
    @-webkit-keyframes eyebrow-right
    {
        0%{opacity:0; -webkit-transform:translateY(-25px); transform:translateY(-25px);}
        70%{opacity:1; -webkit-transform:translateY(5px); transform:translateY(5px);}
        100%{opacity:1; -webkit-transform:rotate(9deg) translateY(0); transform:rotate(9deg) translateY(0);}
    }
    @keyframes eyebrow-right
    {
        0%{opacity:0; -webkit-transform:translateY(-25px); transform:translateY(-25px);}
        70%{opacity:1; -webkit-transform:translateY(5px); transform:translateY(5px);}
        100%{opacity:1; -webkit-transform:rotate(9deg) translateY(0); transform:rotate(9deg) translateY(0);}
    }
    
    /*眉毛上升动画*/
    @-webkit-keyframes eyebrow-right-raise
    {
        0%{top:-35px;}
        70%{top:-35px;}
        100%{top:-45px;}
    }
    @keyframes eyebrow-right-raise
    {
        0%{top:-35px;}
        70%{top:-35px;}
        100%{top:-45px;}
    }
    
    /*背景高亮light动画*/
    @-webkit-keyframes tight-light
    {
        0%{opacity:0; -webkit-transform:translate(200px,0px); transform:translate(200px,0px);}
        100%{opacity:0.2; -webkit-transform:rotate(45deg) translate(0px,0px); transform:rotate(45deg) translate(0px,0px);}
    }
    @keyframes tight-light
    {
        0%{opacity:0; -webkit-transform:translate(200px,0px); transform:translate(200px,0px);}
        100%{opacity:0.2; -webkit-transform:rotate(45deg) translate(0px,0px); transform:rotate(45deg) translate(0px,0px);}
    }
    
    /*背景高亮dark动画*/
    @-webkit-keyframes tight-dark
    {
        0%{opacity:0; -webkit-transform:translate(-200px,0px); transform:translate(-200px,0px);}
        100%{opacity:0.2; -webkit-transform:rotate(-45deg) translate(0px,0px); transform:rotate(-45deg) translate(0px,0px);}
    }
    @keyframes tight-dark
    {
        0%{opacity:0; -webkit-transform:translate(-200px,0px); transform:translate(-200px,0px);}
        100%{opacity:0.2; -webkit-transform:rotate(-45deg) translate(0px,0px); transform:rotate(-45deg) translate(0px,0px);}
    }
    
    /*外面黄色圈动画*/
    @-webkit-keyframes border_circle
    {
        0%{ border-width:20px; transform:scale(0); -webkit-transform:scale(0);}
        40%{ border-width:20px; transform:scale(1); -webkit-transform:scale(1); margin-left:-220px; margin-top:-220px;}
        100%{ border-width:0px; transform:scale(1.5); -webkit-transform:scale(1.5); border-style:double; margin-left:-200px; margin-top:-200px;}
    }
    @keyframes border_circle
    {
        0%{ border-width:20px; transform:scale(0); -webkit-transform:scale(0);}
        40%{ border-width:20px; transform:scale(1); -webkit-transform:scale(1); margin-left:-220px; margin-top:-220px;}
        100%{ border-width:0px; transform:scale(1.5); -webkit-transform:scale(1.5); border-style:double; margin-left:-200px; margin-top:-200px;}
    }
    
    /*文字*/
    @-webkit-keyframes shirt-text
    {
        0%{opacity:0; -webkit-transform:translate(0px, 80px); transform:translate(0px, 80px);}
        60%{opacity:1; -webkit-transform:translate(0px, -50px); transform:translate(0px, -50px);}
        80%{opacity:1; -webkit-transform:translate(0px, 140px); transform:translate(0px, 140px);}
        100%{opacity:1; -webkit-transform:translate(0px, 100px); transform:translate(0px, 100px);}
    }
    @keyframes shirt-text
    {
        0%{opacity:0; -webkit-transform:translate(0px, 80px); transform:translate(0px, 80px);}
        60%{opacity:1; -webkit-transform:translate(0px, -50px); transform:translate(0px, -50px);}
        80%{opacity:1; -webkit-transform:translate(0px, 140px); transform:translate(0px, 140px);}
        100%{opacity:1; -webkit-transform:translate(0px, 100px); transform:translate(0px, 100px);}
    }
    @-webkit-keyframes heart
    {
        0%{ }
        30%{color:#00FF99;}
        70%{color:#FFFF00;}
        100%{}
    }
    @keyframes heart
    {
        0%{ }
        30%{color:#00FF99;}
        70%{color:#FFFF00;}
        100%{}
    }
    
    /*音符*/
    @-webkit-keyframes note
    {
        0% {
          opacity: 0;
          -webkit-transform: translate(0px,50px);
          transform: translate(0px,50px);
        }
        30% {
          -webkit-transform:rotate(12deg) translate(-30px,0px);
          transform:rotate(12deg) translate(-30px,0px);
        }
        45% {
          opacity: 1;
        }  
        60% {
          -webkit-transform: rotate(-12deg) translate(30px,-100px);
          transform:rotate(-12deg) translate(30px,-100px);
        }
        100% {
          opacity: 0;
          -webkit-transform:rotate(0deg) translate(0px,-200px);
          transform:rotate(0deg) translate(0px,-200px);
        }
    }
    @keyframes note
    {
        0% {
          opacity: 0;
          -webkit-transform: translate(0px,50px);
          transform: translate(0px,50px);
        }
        30% {
          -webkit-transform:rotate(12deg) translate(-30px,0px);
          transform:rotate(12deg) translate(-30px,0px);
        }
        45% {
          opacity: 1;
        }  
        60% {
          -webkit-transform: rotate(-12deg) translate(30px,-100px);
          transform:rotate(-12deg) translate(30px,-100px);
        }
        100% {
          opacity: 0;
          -webkit-transform:rotate(0deg) translate(0px,-200px);
          transform:rotate(0deg) translate(0px,-200px);
        }
    }
  • 相关阅读:
    在 Java SE 6 中监视和诊断性能问题
    Codeforces Round #491 (Div. 2)部分题解
    BZOJ1607: [Usaco2008 Dec]Patting Heads 轻拍牛头(模拟 调和级数)
    BZOj1261: [SCOI2006]zh_tree(dp)
    BZOJ1569: [JSOI2008]Blue Mary的职员分配(dp 暴力)
    BZOJ4300: 绝世好题(dp)
    树上莫队算法
    SPOJ COT2
    BZOJ1086: [SCOI2005]王室联邦(贪心,分块?)
    Educational Codeforces Round 42 (Rated for Div. 2)
  • 原文地址:https://www.cnblogs.com/grnBlogs/p/4661231.html
Copyright © 2020-2023  润新知