使用 Jquery 动画让按钮将框移动到下一个角落

Use Jquery animate to have a button move a box to the next corner

我刚开始使用 javascript 和 jquery,所以我在解决这个问题时遇到了一些问题。

我正在尝试使用 jquery 中的动画功能将方框从一个角移动到另一个角。

我附上了一张图片来准确说明我的意思: What the program should do!

所以,这就是我目前所得到的:

$(document).ready(function () {
 $('#go').click(function(){
  var dest = parseInt($('#block').css('margin-left').replace('px', '')) + 100;
   if (dest > 0) {
    $('#block').animate({
    marginLeft: '1800px'
      }, 0 );
     }
   else {
    $('#block').animate({
    marginLeft: dest + 'px'
    }, 0 );
   }
  });
});
#block {
        width: 100px; 
  height: 100px; 
  background: red; 
  margin: 0px;
  top: 0px;
  left: 0px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="block"></div>
 <button id="go">&raquo; Run</button>

我已将框移动到右上角,但现在无法弄清楚如何使用相同的按钮将其向下移动。 我试过一些带开关的东西,但没有用。看起来像这样:

$(document).ready(function () {
$('#go').click(function(){
    var toggle = 1
        if (toggle == 1){
            $("#block").animate({left: "80px"});
            toggle = 0;
        } else{
            $("#block").animate({right: "80px"});
            toggle = 1;
        }
    });

我在想 using cases to switch 按钮会将框移动到哪个坐标之间。但是,我不知道它如何与 jquery 和 animate 函数一起使用。

如果有人有任何其他想法或知道如何在这种情况下使用大小写开关,我将不胜感激并提前致谢!

P.S。我已经尝试在这里搜索这个答案几个小时了,但没有找到对我有帮助的东西。我希望这个问题能帮助到和我有类似问题的人!

您的问题有多种解决方案,

所以我建议一些简单的解决方案,就是将绝对位置设置为 div,

然后在检查条件后更改(动画化)最后一个的左侧或顶部,

您可以使用 .position() 函数在 Jquery 中获得左上角的位置,

查看 belwon 代码段(添加,1000 毫秒以显示动画过渡)

var widh_annimation = "400px";
var hieght_annimation = "100px";

$(document).ready(function () {
 $('#go').click(function(){
    var position = $("#block").position();
      var annimation = {};
      if(position.left == 0 && position.top == 0) {
        annimation = { left:widh_annimation};
      }else if(position.left > 0 && position.top == 0) {
        annimation = { top:hieght_annimation};
      }else if(position.left > 0 && position.top > 0) {
        annimation = { left:"0"};
      }else if(position.left == 0 && position.top > 0) {
        annimation = { top:"0"};
      }      
      $('#block').animate(annimation, 1000 );
  });
});
#block {
        width: 100px; 
  height: 100px; 
  background: red; 
  margin: 0px;
  top: 0px;
  left: 0px;
    position:absolute;
}

#go {
  position:absolute;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="block"></div>
 <button id="go">&raquo; Run</button>

请试试这个例子:

$(document).ready(function () {
  var leftValue = window.innerWidth - 115; // 115 is a temp value
  var topValue = window.innerHeight - 115;
  var actionNum = 0;
  var movingBlock = $('#block');
  
  $('#go').click(function () {
    if (actionNum < 4) {
      actionNum++;    
    } else {
      actionNum = 1;
    }
    
    switch (actionNum) {
      case 1:
       // move to the top right
        movingBlock.animate({
          left: leftValue + 'px',
          top: 0
        }, 1000);
       break;
      case 2:
       // move to the bottom right
        movingBlock.animate({
          left: leftValue + 'px',
          top: topValue + 'px'
        }, 1000);
        break;
      case 3:
       // move to the left bottom
       movingBlock.animate({
         top: topValue + 'px',
         left: 0
       }, 1000);
       break;
      case 4:
       // move to the top left
        movingBlock.animate({
          left: 0,
          top: 0
        }, 1000);
        break;
      default:
        break;
    }
  });
});
#block {
  width: 100px; 
  height: 100px; 
  background: red; 
  margin: 0px;
  top: 0px;
  left: 0px;
  position: relative;
  z-index: 1;
}
#go {
  z-index: 2;
  position: relative;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div id="block"></div>
<button id="go">&raquo; Run</button>