<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
    <title>慕课七夕主题</title>
    <link rel='stylesheet' href='style.css' />
    <link rel='stylesheet' href='pageA.css' />
    <style type="text/css">
        button {
            width: 80px;
            height: 50px;
        }
        
        .button {
            position: absolute;
            bottom: 0;
        }
    
        /*-------- 太阳自转以及动画 --------*/
        #sun {
            background: url("http://img1.sycdn.imooc.com//55ade004000106c202010201.png") no-repeat;
            position: absolute;
            z-index: 1;
            top: -30px;
            height: 201px;
            width: 201px;
            right: 40%;
        }
        
        .rotation {
            -webkit-animation-name: rotation;
            -webkit-animation-duration: 30s;
            -moz-animation-name: rotation;
            -moz-animation-duration: 30s;
        }
        
        @-webkit-keyframes rotation {
            /*?*/
        }
        
        @-moz-keyframes rotation {
            /*?*/
        }
    </style>
    <script src="http://libs.baidu.com/jquery/1.9.1/jquery.js"></script>
    <script type="text/javascript" src="http://img1.sycdn.imooc.com//down/55ac9ea30001ace700000000.js"></script>
    <script type="text/javascript" src="Swipe.js"></script>
    <script type="text/javascript" src="BoyWalk.js"></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 id="sun"></div>
            </li>
            <li> 页面2 </li>
            <li> 页面3 </li>
        </ul>
        <div id="boy" class="charector"></div>
    </div>
    <div class="button">
        <button>开始</button>
    </div>
</body>
<script type="text/javascript">
    $(function() {
    
        var container = $("#content");
        var swipe = Swipe(container);
        // 页面滚动到指定的位置
        function scrollTo(time, proportionX) {
            var distX = container.width() * proportionX;
            swipe.scrollTo(distX, time);
        }
    
        ////////////////////////////////////////////////////////
        // ================== 动画处理 ====================== //
        ////////////////////////////////////////////////////////
    
        var boy = BoyWalk();
    
    
        // 开始
        $("button:first").click(function() {
    
            // 太阳公转
            $("#sun").addClass('rotation');
    
    
            // 开始第一次走路
            boy.walkTo(2000, 0.2)
                .then(function() {
                    // 第一次走路完成
                    // 开始页面滚动
                    scrollTo(5000, 1);
                }).then(function() {
                    // 第二次走路
                    return boy.walkTo(5000, 0.5);
                });
        });
    
    })
</script>
</html>
                    /**
 * 小孩走路
 * @param {[type]} container [description]
 */
function BoyWalk() {
    var container = $("#content");
    // 页面可视区域
    var visualWidth = container.width();
    var visualHeight = container.height();
    // 获取数据
    var getValue = function(className) {
        var $elem = $('' + className + '');
            //走路的路线坐标
        return {
            height: $elem.height(),
            top: $elem.position().top
        };
    }
    // 路的Y轴
    var pathY = function() {
        var data = getValue('.a_background_middle');
        return data.top + data.height / 2;
    }();
    
    var $boy = $("#boy");
    var boyWidth = $boy.width();
    var boyHeight = $boy.height();
    // 设置下高度    
    $boy.css({
        top: pathY - boyHeight + 25
    });
    // 暂停走路
    function pauseWalk() {
        $boy.addClass('pauseWalk');
    }
    // 恢复走路
    function restoreWalk() {
        $boy.removeClass('pauseWalk');
    }
    // css3的动作变化
    function slowWalk() {
        $boy.addClass('slowWalk');
    }
    // 用transition做运动
    function stratRun(options, runTime) {
        var dfdPlay = $.Deferred();
        // 恢复走路
        restoreWalk();
        // 运动的属性
        $boy.transition(
            options,
            runTime,
            'linear',
            function() {
                dfdPlay.resolve(); // 动画完成
            });
        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){
            $boy.css('background-color',value)
        }
    }
}
                    /////////
//页面滑动 //
/////////
/**
 * [Swipe description]
 * @param {[type]} container [页面容器节点]
 * @param {[type]} options   [参数]
 */
function Swipe(container) {
    //获取第一个子节点
    var element = container.find(":first")
    var swipe = {};
    //li页面数量
    var slides = element.find(">")
    //获取容器尺寸
    var width = container.width();
    var height = container.height();
    //设置li页面总宽度
    element.css({
        width: (slides.length * width) + 'px',
        height: height + 'px'
    })
    //设置每一个页面li的宽度
    $.each(slides, function(index) {
        var slide = slides.eq(index); //获取到每一个li元素    
        slide.css({
            width: width + 'px',
            height: height + 'px'
        })
    })
    //监控完成与移动
    swipe.scrollTo = function(x, speed) {
        //执行动画移动
        element.css({
            'transition-timing-function' : 'linear',
            'transition-duration'        : speed + 'ms',
            'transform'                  : 'translate3d(-' + x + 'px,0px,0px)'
        })
        return this;
    }
    return swipe;
}
                    /*背景图*/
.a_background {
    width: 100%;
    height: 100%;
/*    background-image: url("../images/QixiA.png");
    background-size: 100% 100%;*/
    position: absolute;
}
.a_background_top{
    width: 100%;
    height: 71.6%;
    background-image: url("http://img1.sycdn.imooc.com//55addf6900019d8f14410645.png");
    background-size: 100% 100%;
}
.a_background_middle{
    width: 100%;
    height: 13.1%;
    background-image: url("http://img1.sycdn.imooc.com//55addf800001ff2e14410118.png");
    background-size: 100% 100%;
}
.a_background_botton{
    width: 100%;
    height: 15.3%;
    background-image: url("http://img1.sycdn.imooc.com//55addfcb000189b314410138.png");
    background-size: 100% 100%;
}
                    * {
       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%;
   }
   
   .charector {
       position: absolute;
       left: 0%;
       top: 55%;
       position: absolute;
       width: 100%;
       height: 100%;
       width: 151px;
       height: 291px;
       background: url(http://img1.sycdn.imooc.com//55ade248000198ae10550582.png) -0px -291px no-repeat;
   }
   
   .slowWalk {
       -webkit-animation-name: person-slow;
       -webkit-animation-duration: 950ms;
       -webkit-animation-iteration-count: infinite;
       -webkit-animation-timing-function: steps(1, start);
       -moz-animation-name: person-slow;
       -moz-animation-duration: 950ms;
       -moz-animation-iteration-count: infinite;
       -moz-animation-timing-function: steps(1, start)
   }
   /*普通慢走*/
   
   @-webkit-keyframes person-slow {
       0% {
           background-position: -0px -291px;
       }
       25% {
           background-position: -602px -0px;
       }
       50% {
           background-position: -302px -291px;
       }
       75% {
           background-position: -151px -291px;
       }
       100% {
           background-position: -0px -291px;
       }
   }
   
   @-moz-keyframes person-slow {
       0% {
           background-position: -0px -291px;
       }
       25% {
           background-position: -602px -0px;
       }
       50% {
           background-position: -302px -291px;
       }
       75% {
           background-position: -151px -291px;
       }
       100% {
           background-position: -0px -291px;
       }
   }