Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript requestAnimationFrame-移动圆_Javascript_Html_Css_Animation_Requestanimationframe - Fatal编程技术网

Javascript requestAnimationFrame-移动圆

Javascript requestAnimationFrame-移动圆,javascript,html,css,animation,requestanimationframe,Javascript,Html,Css,Animation,Requestanimationframe,我已经为此挣扎了一段时间,但我似乎无法正确处理它 我想做的是,在一个容器中有一个圆,它是一个div浮动,这个容器也是一个div。我知道这可以通过画布来实现,但我想通过divs来实现 这就是我到目前为止得到的: HTML <div class="box"> <div class="circle" id="circle"></div> </div> JAVASCRIPT var floater = function(){

我已经为此挣扎了一段时间,但我似乎无法正确处理它

我想做的是,在一个容器中有一个圆,它是一个div浮动,这个容器也是一个div。我知道这可以通过画布来实现,但我想通过divs来实现

这就是我到目前为止得到的:

HTML

  <div class="box">
    <div class="circle" id="circle"></div>
  </div>
JAVASCRIPT

    var floater = function(){

    requestAnimationFrame(floater);

    var circles = document.getElementById('ball');        
    circles.style.left = (((Math.sin(new Date() / 1000) + 1)) * 500) + "px";
    circles.style.bottom = (((Math.sin(new Date() / 1000) + 1)) * 300) + "px";

}

floater();

小提琴:

首先,你必须限制坐标在盒子里

mycircle.style.left = Math.min(450, (((Math.sin(new Date() / 1000) + 1)) * 500)) + "px";
mycircle.style.top = Math.min(250, (((Math.sin(new Date() / 1000) + 1)) * 300)) + "px";

实际上,您可以通过更改sin结果与之相乘的值来限制运动在框内

  mycircle.style.left = (((Math.sin(Date.now() / 1000)) + 1) * 225) + "px";
  mycircle.style.top = (((Math.sin(Date.now() / 1000)) + 1) * 125) + "px";

为什么要在窦中加1?得到一个从0到2的值,因此圆的宽度和高度是原来的两倍。使用Math.abs获取绝对值。删除+1。

这就是我试图用div实现的目标,
  mycircle.style.left = (((Math.sin(Date.now() / 1000)) + 1) * 225) + "px";
  mycircle.style.top = (((Math.sin(Date.now() / 1000)) + 1) * 125) + "px";