以某个角度移动,jquery,animate()?

时间:2012-01-16 20:55:07

标签: javascript jquery html css

有没有办法在使用

时指定角度
$(this).animate({'left': '+=30px'}, 1000);

我想

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

48将是角度

2 个答案:

答案 0 :(得分:11)

您可以指定lefttop属性:

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

在这种情况下,角度为45°。

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

答案 1 :(得分: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/