在鼠标移动时旋转

时间:2012-06-23 03:33:10

标签: javascript jquery css

我现在想要学习很长一段时间,但一直没能弄清楚。

http://jsfiddle.net/Mobilpadde/Xt7ag/

然后你移动鼠标,它跟随,这是容易的部分,但我也想旋转,就像总是看向鼠标的方向,但不是那么静态,更像是,如果你移动你的鼠标,它应该首先旋转,然后你将鼠标移开更远,它应该再次开始(如果你知道我的意思)。

这是简单的事情,还是3k行? (或者也许是一个jQuery插件?)

3 个答案:

答案 0 :(得分:6)

Hiya通过使用我的一个旧帖子,我得到了更接近的东西:演示 http://jsfiddle.net/Z3pGQ/3/

我还在工作,如果你能在我之前改进,那么你会更轻松地点击

旧帖子:Rotating an element based on cursor position in a separate element

希望它有所帮助,我想让它变得更顺畅,欢呼

示例代码

$(document).ready(function() {
    $(document).mousemove(function(e) {
        $(".firefly").css({
            "top": (e.pageY * 2) + "px",
            "left": (e.pageX * 2 + 130) + "px"
        });
    })
})
var img = $(".firefly");
if (img.length > 0) {
    var offset = img.offset();

    function mouse(evt) {
        var center_x = (offset.left) + (img.width() / 2);
        var center_y = (offset.top) + (img.height() / 2);
        var mouse_x = evt.pageX;
        var mouse_y = evt.pageY;
        var radians = Math.atan2(mouse_x - center_x, mouse_y - center_y);
        var degree = (radians * (180 / Math.PI) * -1) + 90;
        img.css('-moz-transform', 'rotate(' + degree + 'deg)');
        img.css('-webkit-transform', 'rotate(' + degree + 'deg)');
        img.css('-o-transform', 'rotate(' + degree + 'deg)');
        img.css('-ms-transform', 'rotate(' + degree + 'deg)');
    }
    $(document).mousemove(mouse);
}​

图片

enter image description here

答案 1 :(得分:0)

这将涉及比我现在想要做的更多的数学,但你可以轻松地使用css旋转。以下是mozilla和webkit的属性,你可以看到其余的(IE,Opera ...)at this page。这是你应用了120度旋转的功能。您仍然需要计算正确的轮播,并相应地调整lefttop

$(document).mousemove(function(e){
                $(".firefly").css({
                    "top":(e.pageY*2)+"px",
                    "left":(e.pageX*2+130)+"px",
                    "-moz-transform": "rotate(120deg)",
                    "-webkit-transform": "rotate(120deg)"});
            })

答案 2 :(得分:0)