使用老師講的第一種方法.最后演示結果很奇怪:第一個小球緩慢移動到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>
2018-11-26
好的...我找到問題了.......判斷寫錯了,.,,