Ily*_*lya 5 html javascript jquery
我有跟随鼠标光标的图像。
HTML:
<img id="cow" src="https://icons.iconarchive.com/icons/gakuseisean/ivista-2/128/Alarm-Arrow-Right-icon.png" height="30px" width="30px" style="position: absolute; top: 50%; left: 50%;"/>
Run Code Online (Sandbox Code Playgroud)
Javascript:
var mouseXY = {};
$( document ).on( "mousemove", function( event ) {
mouseXY.X = event.pageX;
mouseXY.Y = event.pageY;
});
var iCow = $("#cow");
var cowInterval = setInterval(function()
{
var cowXY = iCow.position();
var diffX = cowXY.left - mouseXY.X;
var diffY = cowXY.top - mouseXY.Y;
var newX = cowXY.left - diffX / 1000;
var newY = cowXY.top - diffY / 1000;
iCow.css({left: newX, top: newY});
}, 10);
Run Code Online (Sandbox Code Playgroud)
如何沿光标方向旋转图像?
我试过这样做transform: rotate():
var cowInterval = setInterval(function()
{
var cowXY = iCow.position();
var diffX = cowXY.left - mouseXY.X;
var diffY = cowXY.top - mouseXY.Y;
var newX = cowXY.left - diffX / 1000;
var newY = cowXY.top - diffY / 1000;
var tan = diffX / diffY;
var atan = Math.atan(tan);
iCow.css({left: newX, top: newY, transform: "rotate(" +((-1)*atan - Math.PI/2)+ "rad)"});
}, 10);
Run Code Online (Sandbox Code Playgroud)
但没有成功
更改光标位置时,您只需要更改 transform(rotate) css 属性,请记住,光标实际更改了位置。
添加这两个 if-else 条件,使图像向正确的方向旋转
if(diffY > 0 && diffX > 0) {
atan += 180;
}
else if(diffY < 0 && diffX > 0) {
atan -= 180;
}
Run Code Online (Sandbox Code Playgroud)
我想这就是你想要的。
if(diffY > 0 && diffX > 0) {
atan += 180;
}
else if(diffY < 0 && diffX > 0) {
atan -= 180;
}
Run Code Online (Sandbox Code Playgroud)
var mouseXY = {};
$( document ).on( "mousemove", function( event ) {
mouseXY.X = event.pageX;
mouseXY.Y = event.pageY;
});
var iCow = $("#cow");
var prevXY = {X: null, Y: null};
var cowInterval = setInterval(function()
{
if(prevXY.Y != mouseXY.Y || prevXY.X != mouseXY.X && (prevXY.Y != null || prevXY.X != null)) {
var cowXY = iCow.position();
var diffX = cowXY.left - mouseXY.X;
var diffY = cowXY.top - mouseXY.Y;
var tan = diffY / diffX;
var atan = Math.atan(tan)* 180 / Math.PI;;
if(diffY > 0 && diffX > 0) {
atan += 180;
}
else if(diffY < 0 && diffX > 0) {
atan -= 180;
}
prevXY.X = mouseXY.X;
prevXY.Y = mouseXY.Y;
iCow.css({transform: "rotate(" + atan + "deg)"});
}
}, 10);Run Code Online (Sandbox Code Playgroud)