html5+css+js实现动画特效,人物动画

时间:2025-04-05 19:08:32

文件:

/**
 * 小孩走路
 * @param {[type]} container [description]
 */
function BoyWalk() {


    var container = $("#content");
    // 页面可视区域
    var visualWidth = ();
    var visualHeight = ();


    // 获取数据
    var getValue = function(className) {
        var $elem = $('' + className + '');
            // 走路的路线坐标
        return {
            height: $(),
            top: $().top
        };
    }
    // 路的Y轴
    var pathY = function() {
        var data = getValue('.a_background_middle');
        return + / 2;
    }();
    
    var $boy = $("#boy");
    var boyWidth = $();
    var boyHeight = $();


    // 设置下高度    
    $({
        top: pathY - boyHeight + 25
    })


    // 暂停走路
    function pauseWalk() {
        $('pauseWalk');
    }


    // 恢复走路
    function restoreWalk() {
        $('pauseWalk');
    }


    // css3的动作变化
    function slowWalk() {
        $('slowWalk');
    }


    // 用transition做运动
    function stratRun(options, runTime) {
        var dfdPlay = $.Deferred();
        // 恢复走路
        restoreWalk();
        // 运动的属性
        $(
            options,
            runTime,
            'linear',
            function() {
                (); // 动画完成
            });
        return dfdPlay;
    }


    // 开始走路
    function walkRun(time, dist, disY) {
        time = time || 3000;
        // 脚动作
        slowWalk();
        // 开始走路
        var d1 = stratRun({
            'left': dist + 'px',
            'top': disY ? disY : undefined
        }, time);
        return d1;
    }


    // 计算移动距离
    function calculateDist(direction, proportion) {
        return (direction == "x" ?
            visualWidth : visualHeight) * proportion;
    }


    return {
        // 开始走路
        walkTo: function(time, proportionX, proportionY) {
            var distX = calculateDist('x', proportionX)
            var distY = calculateDist('y', proportionY)
            return walkRun(time, distX, distY);
        },
        // 停止走路
        stopWalk: function() {
            pauseWalk();
        },
        setColoer:function(value){
            $('background-color',value)
        }
    }
}


代码:

<!DOCTYPE html>
<html>


<head>
    <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
    <title>七夕主题</title>
    <link rel='stylesheet' href='/down/' />
    <link rel='stylesheet' href='/down/' />
    <link rel='stylesheet' href='/down/' />
    <link rel='stylesheet' href='/down/' />
    <script type="text/javascript" src="/down/"></script>
    <script type="text/javascript" src="/down/"></script>
    <script type="text/javascript" src="/down/"></script>
 
  
</head>


<body>
    <div id='content'>
        <ul class='content-wrap'>
            <!-- 第一副画面 -->
            <li>
                <!-- 背景图 -->
                <div class="a_background">
                    <div class="a_background_top"></div>
                    <div class="a_background_middle"></div>
                    <div class="a_background_botton"></div>
                </div>
                <!-- 云 -->
                <div class="cloudArea">
                    <div class="cloud cloud1"></div>
                    <div class="cloud cloud2"></div>
                </div>
                <!-- 太阳 -->
                <div ></div>
            </li>
            <!-- 第二副画面 -->
            <li>
                <!-- 背景图 -->
                <div class="b_background"></div>
                <div class="b_background_preload"></div>
                <!-- 商店 -->
                <div class="shop">
                    <div class="door">
                        <div class="door-left"></div>
                        <div class="door-right"></div>
                    </div>
                    <!-- 灯 -->
                    <div class="lamp"></div>
                </div>
                <!-- 鸟 -->
                <div class="bird"></div>
            </li>
            <!-- 第三副画面 -->
            <li>
                <!-- 背景图 -->
                <div class="c_background">
                    <div class="c_background_top"></div>
                    <div class="c_background_middle"></div>
                    <div class="c_background_botton"></div>                
                </div>
                <!-- 小女孩 -->
                <div class="girl"></div>
                <div class="bridge-bottom">
                    <div class="water">
                        <div class="water_1"></div>
                        <div class="water_2"></div>
                        <div class="water_3"></div>
                        <div class="water_4"></div>
                    </div>
                </div>
                <!-- 星星 -->
                <ul class="stars">
                    <li class="stars1"></li>
                    <li class="stars2"></li>
                    <li class="stars3"></li>
                    <li class="stars4"></li>
                    <li class="stars5"></li>
                    <li class="stars6"></li>
                </ul>
                <!-- 慕课网logo图 -->
                <div class="logo"></div>
            </li>
        </ul>
        <!-- 雪花 -->
        <div ></div>
        <!-- 小男孩 -->
        <div class="charector"></div>
    </div>
</body>


</html>

代码:


/*背景图*/


.a_background {
    width: 100%;
    height: 100%;
    position: absolute;
}


.a_background_top{
    width: 100%;
    height: 71.6%;
    background-image: url("/");
    background-size: 100% 100%;
}




.a_background_middle{
    width: 100%;
    height: 13.1%;
    background-image: url("/");
    background-size: 100% 100%;
}




.a_background_botton{
    width: 100%;
    height: 15.3%;
    background-image: url("/");
    background-size: 100% 100%;
}


代码:

/*背景图*/


.b_background {
    width: 100%;
    height: 100%;
    background-image: url("/");
    background-size: 100% 100%;
    position: absolute;
}


.b_background_preload {
    background: url("/") no-repeat -9999px -9999px;
}


.lamp-bright {
   background-image: url("/");
}




/*商店*/


.shop {
    width: 39.5%;
    height: 35.5%;
    position: absolute;
    left: 29%;
    top: 36.5%;
}


.door {
    position: absolute;
    width: 32%;
    height: 100%;
    top: 32%;
    height: 68%;
    overflow: hidden;
    left: 58.5%;
}


.door-left,
.door-right {
    width: 50%;
    height: 100%;
    position: absolute;
}


.door-left {
    left: 0%;
    background: url(/);
    background-size: 100% 100%;
}


.door-right {
    left: 50%;
    background: url(/);
    background-size: 100% 100%;
}




/*鸟*/


.bird {
    min-width: 91px;
    min-height: 71px;
    top: 10%;
    position: absolute;
    z-index: 10;
    right: -91px;
    background: url(/) -182px 0px no-repeat;
}
.birdFly {
    -webkit-animation-name: bird-slow;
    -webkit-animation-duration: 400ms;
    -webkit-animation-timing-function: step-start;
    -webkit-animation-iteration-count: infinite;
    -moz-animation-name: bird-slow;
    -moz-animation-duration: 400ms;
    -moz-animation-timing-function: step-start;
    -moz-animation-iteration-count: infinite;
}




/*鸟慢飞*/
@-webkit-keyframes bird-slow {
    0% {
        background-position: -182px 0px;
    }
    50% {
        background-position: 0px 0px;
    }
    75% {
        background-position: -91px 0px;
    }
    100% {
        background-position: -182px 0px;
    }
}


@-moz-keyframes bird-slow {
    0% {
        background-position: -182px 0px;
    }
    50% {
        background-position: 0px 0px;
    }
    75% {
        background-position: -91px 0px;
    }
    100% {
        background-position: -182px 0px;
    }
}

代码如下;

<!DOCTYPE html>
<html>


<head>
    <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
    <title>慕课七夕主题</title>
    <link rel='stylesheet' href='' />
    <link rel='stylesheet' href='' />
    <script src="/jquery/1.9.1/"></script>
    <script type="text/javascript" src=""></script>
</head>
<style type="text/css">
.charector {
    width: 151px;
    height: 291px;
    left: 6%;
    top: 55%;
    position: absolute;
    background: url(/) -0px -291px no-repeat;
}
</style>


<body>
    <div id='content'>
        <ul class='content-wrap'>
            <li>
                <div class="a_background">
                    <div class="a_background_top"></div>
                    <div class="a_background_middle"></div>
                    <div class="a_background_botton"></div>
                </div>
            </li>
            <li> 页面2 </li>
            <li> 页面3 </li>
        </ul>
        <div class="charector"></div>
    </div>
    <script type="text/javascript">
        var swipe = Swipe($("#content"));


        var $boy = $("#boy");


        // 设置一下缩放比例与基点位置
        var proportion =  $(document).width() / 1440;
        // 设置元素缩放
        $({
            transform: 'scale(' + proportion + ')'
        });


        // 获取数据
        var getValue = function(className) {
            var $elem = $('' + className + '');
            // 走路的路线坐标
            return {
                height: $(),
                top: $().top
            };
        }
        
        // 路的中间到顶部的距离
        var pathY = function() {
            var data = getValue('.a_background_middle');
            return + / 2;
        }();


        // 获取人物元素布局尺寸
        var boyHeight = $();
        var boyWidth = $();
        // 计算下缩放后的元素与实际尺寸的一个距离
        var boyInsideLeft = (boyWidth - (boyWidth*proportion))/2;
        var boyInsideTop = (boyHeight - (boyHeight*proportion))/2;


        // 修正小男孩的正确位置
        // 中间路的垂直距离 - 人物原始的垂直距离 - 人物缩放后的垂直距离
        $({
            top: pathY - (boyHeight * proportion) - boyInsideTop
        });
    </script>
</body>


</html>

代码如下:

// 动画结束事件
       var animationEnd = (function() {
           var explorer = ;
           if (~('WebKit')) {
               return 'webkitAnimationEnd';
           }
           return 'animationend';
       })();




       ///
       //灯动画 //
       ///
       var lamp = {
           elem: $('.b_background'),
           bright: function() {
               ('lamp-bright');
           },
           dark: function() {
               ('lamp-bright');
           }
       };


       var container = $("#content");
       var swipe = Swipe(container);
       visualWidth = ();
       visualHeight = ();


       // 页面滚动到指定的位置
       function scrollTo(time, proportionX) {
           var distX = visualWidth * proportionX;
           (distX, time);
       }


       // 获取数据
       var getValue = function(className) {
           var $elem = $('' + className + '');
               //走路的路线坐标
           return {
               height: $(),
               top: $().top
           };
       };


       // 桥的Y轴
       var bridgeY = function() {
           var data = getValue('.c_background_middle');
           return ;
       }();


       
       //小女孩 //
       
       var girl = {
           elem: $('.girl'),
           getHeight: function() {
               return ();
           },
           setOffset: function() {
               ({
                   left: visualWidth / 2,
                   top: bridgeY - ()
               });
           }
       };


       // 修正小女孩位置
       ();




       // 用来临时调整页面
       (visualWidth * 2, 0);




       function doorAction(left, right, time) {
           var $door = $('.door');
           var doorLeft = $('.door-left');
           var doorRight = $('.door-right');
           var defer = $.Deferred();
           var count = 2;
           // 等待开门完成
           var complete = function() {
               if (count == 1) {
                   ();
                   return;
               }
               count--;
           }
           ({
               'left': left
           }, time, complete);
           ({
               'left': right
           }, time, complete);
           return defer;
       }


       // 开门
       function openDoor() {
           return doorAction('-50%', '100%', 2000);
       }


       // 关门
       function shutDoor() {
           return doorAction('0%', '50%', 2000);
       }


       /**
        * 小孩走路
        * @param {[type]} container [description]
        */
       function BoyWalk() {


           var container = $("#content");
           // 页面可视区域
           var visualWidth = ();
           var visualHeight = ();


           // 获取数据
           var getValue = function(className) {
               var $elem = $('' + className + '');
               // 走路的路线坐标
               return {
                   height: $(),
                   top: $().top
               };
           };
           // 路的Y轴
           var pathY = function() {
               var data = getValue('.a_background_middle');
               return + / 2;
           }();
           
           var $boy = $("#boy");
           var boyWidth = $();
           var boyHeight = $();


           // 设置下高度    
           $({
               top: pathY - boyHeight + 25
           });


           // 暂停走路
           function pauseWalk() {
               $('pauseWalk');
           }


           // 恢复走路
           function restoreWalk() {
               $('pauseWalk');
           }


           // css3的动作变化
           function slowWalk() {
               $('slowWalk');
           }


           // 用transition做运动
           function stratRun(options, runTime) {
               var dfdPlay = $.Deferred();
               // 恢复走路
               restoreWalk();
               // 运动的属性
               $(
                   options,
                   runTime,
                   'linear',
                   function() {
                       (); // 动画完成
                   });
               return dfdPlay;
           }


           // 开始走路
           function walkRun(time, dist, disY) {
               time = time || 3000;
               // 脚动作
               slowWalk();
               // 开始走路
               var d1 = stratRun({
                   'left': dist + 'px',
                   'top': disY ? disY : undefined
               }, time);
               return d1;
           }


           // 走进商店
           function walkToShop(runTime) {
               var defer = $.Deferred();
               var doorObj = $('.door');
               // 门的坐标
               var offsetDoor = ();
               var doorOffsetLeft = ;
               var doorOffsetTop = ;
               // 小孩当前的坐标
               var posBoy = $();
               var boyPoxLeft = ;
               var boyPoxTop = ;


               // 中间位置
               var boyMiddle = $() / 2;
               var doorMiddle = () / 2;
               var doorTopMiddle = () / 2;




               // 当前需要移动的坐标
               instanceX = (doorOffsetLeft + doorMiddle) - (boyPoxLeft + boyMiddle);


               // Y的坐标
               // top = 人物底部的top - 门中见的top值
               instanceY = boyPoxTop + boyHeight - doorOffsetTop + (doorTopMiddle);


               // 开始走路
               var walkPlay = stratRun({
                   transform: 'translateX(' + instanceX + 'px),translateY(-' + instanceY + 'px),scale(0.5,0.5)',
                   opacity: 0.1
               }, 2000);
               // 走路完毕
               (function() {
                   $({
                       opacity: 0
                   });
                   ();
               });
               return defer;
           }


           // 走出店
           function walkOutShop(runTime) {
               var defer = $.Deferred();
               restoreWalk();
               // 开始走路
               var walkPlay = stratRun({
                   transform: 'translateX(' + instanceX + 'px),translateY(0),scale(1,1)',
                   opacity: 1
               }, runTime);
               // 走路完毕
               (function() {
                   ();
               });
               return defer;
           }




           // 计算移动距离
           function calculateDist(direction, proportion) {
               return (direction == "x" ?
                   visualWidth : visualHeight) * proportion;
           }


           return {
               // 开始走路
               walkTo: function(time, proportionX, proportionY) {
                   var distX = calculateDist('x', proportionX);
                   var distY = calculateDist('y', proportionY);
                   return walkRun(time, distX, distY);
               },
               // 走进商店
               toShop: function() {
                   return (null, arguments);
               },
               // 走出商店
               outShop: function() {
                   return (null, arguments);
               }, 
               // 停止走路
               stopWalk: function() {
                   pauseWalk();
               },
               setColoer: function(value) {
                   $('background-color', value)
               },
               // 获取男孩的宽度
               getWidth: function() {
                   return $();
               },
               // 复位初始状态
               resetOriginal: function() {
                   ();
                   // 恢复图片
                   $('slowWalk slowFlolerWalk').addClass('boyOriginal');
               },
               // 转身动作
               rotate: function(callback) {
                   restoreWalk();
                   $('boy-rotate');
                   // 监听转身完毕
                   if (callback) {
                       $(animationEnd, function() {
                           callback();
                           $(this).off();
                       });
                   }
               },
               // 取花
               talkFlower: function() {
                   $('slowFlolerWalk');
               }
           }
       }

代码如下:


* {
        padding: 0;
        margin: 0;
    }
    
    ol,
    ul,
    li {
        list-style-type: none;
    }
    /*主体部分*/
    
    #content {
        width: 100%;
        height: 100%;
        /*top: 20%;*/
        overflow: hidden;
        position: absolute;
    }
    
    .content-wrap {
        position: relative;
    }
    
    .content-wrap > li {
        background: #CAE1FF;
        color: red;
        float: left;
        overflow: hidden;
        position: relative;
    }
    
    li:nth-child(2) {
        background: #9BCD9B;
    }
    
    li:nth-child(3) {
        background: yellow;
    }
    
    a {
        position: absolute;
        top: 50%;
        left: 40%;
    }

代码如下::

/
//页面滑动 //
/




/**
 * [Swipe description]
 * @param {[type]} container [页面容器节点]
 * @param {[type]} options   [参数]
 */
function Swipe(container) {
    // 获取第一个子节点
    var element = (":first");
    var swipe = {};


    // li页面数量
    var slides = (">"); 


    // 获取容器尺寸
    var width = ();
    var height = ();


    // 设置li页面总宽度
    ({
        width: ( * width) + 'px',
        height: height + 'px'
    });


    // 设置每一个页面li的宽度
    $.each(slides, function(index) {
        var slide = (index); // 获取到每一个li元素    
        ({
            width: width + 'px',
            height: height + 'px'
        });
    });


    // 监控完成与移动
    = function(x, speed) {
        // 执行动画移动
        ({
            'transition-timing-function' : 'linear',
            'transition-duration'        : speed + 'ms',
            'transform'                  : 'translate3d(-' + x + 'px,0px,0px)'
        });
        return this;
    };


    return swipe;
}