2012-01-16 47 views

回答

10

可以同时指定lefttop属性:

$(this).animate({left: '+=30px', top: '+=30px'}, 1000); 

在这种情况下,t他的角度将是45°。

要指定不同的角度,首先计算cos(α)和sin(α)。余弦指定你必须向右走多远,以及窦要走多远,才能在指定的角度上形成1个像素的距离。如果要覆盖30像素距离,请将正弦和余弦结果乘以30.

+0

犯规罪(45)和cos(45)= 0.7071067812 – thelost 2012-01-16 21:04:51

+5

万一第二段无厘头:http://jsfiddle.net/ SMvj3/3/ – 2012-01-16 21:05:15

+0

o cool radians,thx – thelost 2012-01-16 21:06:06

0

我只是想纠正32bitkid中由Yogu提供的最佳答案中的错误。

如果Math.PI被-180(而不是180)分隔,将导致div的位置正确。 90度的角度是向下而不是向上移动。

$(function() { 
    var dist = 30; 
    var angle = 90; 
    var x = Math.cos(angle*Math.PI/-180) * dist; 
    var y = Math.sin(angle*Math.PI/-180) * dist; 
    $("div").animate({'left': '+='+x+'px', 'top': '+='+y+'px'}, 1000);  
}) 

下面是更新小提琴:http://jsfiddle.net/9yL8hxnz/

相关问题