使用老师讲的第一种方法.最后演示结果很奇怪:第一个小球缓慢移动到100px的位置,但是第二个第三个小球就直接移动过去了,没有中间循序渐进的过程,请问是咋回事?
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>promise animation</title>
<style>
.ball{
width: 40px;
height: 40px;
border-radius: 50%;
}
.ball1{
background: lightgreen;
}
.ball2{
background: pink;
}
.ball3{
background: lightblue;
}
</style>
</head>
<body>
<div class="ball ball1" style = "margin-left: 0;"></div>
<div class="ball ball2" style = "margin-left: 0;"></div>
<div class="ball ball3" style = "margin-left: 0;"></div>
<script>
var ball1 = document.querySelector('.ball1');
var ball2 = document.querySelector('.ball2');
var ball3 = document.querySelector('.ball3');
function animate(ball,distance,cb){
setTimeout(function(){
var marginLeft = parseInt(ball.style.marginLeft,10);
if(marginLeft===distance){
cb&&cb();
}else if(marginLeft<distance){
marginLeft++;
}else if(marginLeft>distance){
marginLeft--;
}
ball.style.marginLeft = marginLeft + "px";
animate(ball,distance,cb);
},13);
}
animate(ball1,100,function(){
animate(ball2,200,function(){
animate(ball3,300,function(){
// animate(ball3,150,function(){
// animate(ball2,150,function(){
// animate(ball1,150,function(){
// })
// })
// })
})
})
})
</script>
</body>
</html>