我要做的是一个 jQuery 脚本,它根据浏览器窗口中的光标位置旋转 div 内的元素。
比例是这样的:
maximum_pixels_x-axys:2° = center_pixels_x-axys:0°
对于 y 轴也是如此。
如果光标在屏幕中央,则不旋转。如果它在其他地方,它必须从 0° 旋转到 2°(或负值,取决于屏幕在相对笛卡尔平面中的位置)。所以这是一个具有即时反馈的动态轮换。
就像您在这里看到的一样:http: //css3playground.com/flashlight.php(从菜单“斜角”中选择)但使用transform:rotate
而不是text-shadow
.
现在我用transit.js尝试了这个,使用sin e cos而不是度数(将产生从0到1的“度数”)。我知道这不是正确的方法,但它是我想象的获得低度数的最接近的方法。
var max_x = $(window).width();
var max_y = $(window).height();
var center_x = (max_x/2);
var center_y = (max_y/2);
$(document).mousemove(function(e) {
var mouse_x = e.pageX,
mouse_y = e.pageY,
hypotenuse = Math.sqrt(Math.pow((mouse_x-center_x),2)+Math.pow((mouse_y-center_y), 2)),
cos = (mouse_x-center_x)/hypotenuse,
sin = (mouse_y-center_y)/hypotenuse;
$('#div1, #div2').transition({ perspective: '400px', rotateX: sin, rotateY: cos });
});
但结果不是我所期望的。div 旋转(以错误的方式,但旋转),但不是动态的。
我该怎么办?
小提琴:http: //jsfiddle.net/lucgenti/LtWtW/11/