使用jquery进行Header Move的麻烦

时间:2016-12-31 20:06:54

标签: javascript jquery

这不是硬件,而是来自我用来尝试学习Javascript的编码书的挑战。

挑战是让标题向左移动200像素,然后向下移动200像素,向左移动200像素,然后向上移动200像素。我尝试了多种方法,但是我遇到错误或跳转,或者我无法减少错误。我已经把我知道我需要做的基本轮廓放在这里(这只是对角线)。我感谢任何帮助!

谢谢,

丹尼尔

<!DOCTYPE html>
<html>
<head>
  <title>Interactive programming</title>
</head>
<body>
  <h1 id="heading">Hello world!</h1>
  <script src="https://code.jquery.com/jquery-2.1.0.js"></script>
  <script>
    var leftOffset = 0;
    var moveDown=0
    var moveHeading = function () {
      if(leftOffset<=200){
        $("#heading").offset({ left: leftOffset });
        leftOffset++;
      }
    };

    var moveHeadingDown= function (){
      if(moveDown<=200 ){
        $("#heading").offset({ top: moveDown });
        moveDown++;
       }
     };

    var moveHeadingLeft= function (){
      if (leftOffset===200){
        $("#heading").offset({ left: leftOffset });
        leftOffset--;
      }
    };
    var moveHeadingUp= function (){
      if (moveDown===200){
        $("#heading").offset({ top: moveDown });
        moveDown--;
      }
    }

    setInterval(moveHeading, 30);
    setInterval(moveHeadingDown, 30);
    setInterval(moveHeadingLeft, 30);
    setInterval(moveHeadingUp, 30);

  </script>
</body>
</html>

2 个答案:

答案 0 :(得分:0)

使用Jquery animate()函数会更容易。

示例:

d = If(False, 0, CType(Nothing, Double?))

答案 1 :(得分:0)

 var offleft=0;
 var offtop=0;

function position() {
   $('#heading').css('margin-top',offtop+'px');
   $('#heading').css('margin-left',offleft+'px');
}
$(function() {
  $({i:0}).animate({i:1},{
   duration: 300,
   easing: 'linear',
   step: function(now) {
      if(now<=0.25) {
         offleft = now*4*200;
      }
      else if(now<=0.5) {
         offtop = (now-0.25)*4*200;
      }
      else if(now<=0.75) {
         offleft = (now*-1+0.75)*4*200;
      }
      else {
         offtop = (now*-1+1)*4*200;
      }
      position();
   }
  });
});

这就是你想要的吗?我认为,每次200px时,它会向下移动元素,而不是向右,向上和向左移动。

如果您发现它有用并且确实有效,请与我联系:)

真诚的塞巴斯蒂安