Javascript html中的自定义游标

Javascript html中的自定义游标,javascript,jquery,html,cursor-position,Javascript,Jquery,Html,Cursor Position,我想在div中添加一个图像作为光标,但当鼠标悬停在该div中的任何链接上时,我希望它隐藏并具有普通指针光标。 我写道: var$box=$(“.box”); var$myCursor=$(“#myCursor”); 变量按钮1=$(“#链接1”); 变量按钮2=$(“#链接2”); $box.on(“mouseleave”,function(){ $myCursor.hide(); }) $box.mousemove(函数(e){ $myCursor.css('top',e.pageY); $

我想在div中添加一个图像作为光标,但当鼠标悬停在该div中的任何链接上时,我希望它隐藏并具有普通指针光标。
我写道:

var$box=$(“.box”);
var$myCursor=$(“#myCursor”);
变量按钮1=$(“#链接1”);
变量按钮2=$(“#链接2”);
$box.on(“mouseleave”,function(){
$myCursor.hide();
})
$box.mousemove(函数(e){
$myCursor.css('top',e.pageY);
$myCursor.css('left',e.pageX);
如果(!button1.is(“:hover”)&(!button2.is(“:hover”)){
$myCursor.show();
}
如果(按钮1.is(“:hover”)| |(按钮2.is(“:hover”)){
$myCursor.hide();
}
如果(e.clientX$box.width()*0.5){
$myCursor.css('transition','transform1s');
$myCursor.css('transform','none');
}
});
.box{
高度:100vh;
背景:#ccc;
填充顶部:50px;
光标:无;
}
钮扣{
显示:块;
利润率:15px自动;
宽度:20%;
填充:10px;
光标:指针;
}
#我的光标{
位置:绝对位置;
高度:50px;
宽度:50px;
排名:0;
左:0;
}

某些链接
另一环节

您可以使用CSS解决这个问题,不需要javascript。 请看这里:


您可以在javascript的帮助下设置CSS类,以实现对其他元素的某种依赖。

仅使用CSS更容易实现。您必须事先调整光标图像的大小,在本例中,我将其中一个调整为50x50像素(白色框中的另一个为64x64)

,auto
是必需的,并定义了回退

.box{
高度:100vh;
背景:#ccc;
填充顶部:50px;
游标:url(//codestylers.de/rifle.png),auto;
}
钮扣{
显示:块;
利润率:15px自动;
宽度:20%;
填充:10px;
光标:指针;
}
.另一个光标{
背景色:白色;
宽度:300px;
高度:200px;
游标:url(//codestylers.de/cursor.png),自动;
保证金:0自动;
}

某些链接
另一环节

简单的解决方案就是调整选择器的范围:

var$box=$(“.box:非(按钮)”)因此,每当光标不在按钮上时,就会调用图像开关。然而,在你的情况下,你应该考虑缩小图像的大小,使其更接近鼠标的大小——因为在鼠标指针本身覆盖按钮之前,图像和按钮之间有很大的重叠。
更复杂的解决方案是使用数组来注册按钮坐标和尺寸,然后使用
mousemove
each
根据存储的按钮尺寸不断检查图像坐标宽度,但根据其他情况,可能会影响性能

如果将
指针事件:none
添加到
#myCursor
css中,则可以防止图像本身偶尔暂时遮挡按钮上的光标,从而提高性能

var$box=$(“.box:非(按钮)”);
var$myCursor=$(“#myCursor”);
变量按钮1=$(“#链接1”);
变量按钮2=$(“#链接2”);
$box.on({
mouseleave:function(){
$myCursor.hide();
},
mousemove:function(e){
$myCursor.css({'left':e.pageX,'top':e.pageY});
如果(!button1.is(“:hover”)&&!button2.is(“:hover”)){
$myCursor.show();
}如果(按钮1.is(“:hover”)| |(按钮2.is(“:hover”)){
$myCursor.hide();
}
}
});
.box{
高度:100vh;
背景:#ccc;
填充顶部:50px;
光标:无;
}
钮扣{
显示:块;
利润率:15px自动;
宽度:20%;
填充:10px;
光标:指针;
}
#我的光标{
位置:绝对位置;
高度:50px;
宽度:50px;
排名:0;
左:0;
指针事件:无;
}

某些链接
另一环节

为什么不直接在CSS中执行此操作?目前还不清楚问题出在哪里。此外,您还更改了代码,以及在初始问题之后代码的作用。这不是一个好主意。您可以通过省略Javascript并使用CSS来正确实现这一点。当我运行此代码时,我的屏幕会闪烁,而hoverMine则不会。Windows8.1,最新的Firefox。我正在使用最新的chrome,Sierra mac,他正在使用jqueryI旋转默认光标。我添加了一个白色框,可以生成不同的光标。你在那里也经历过眨眼吗?稍后已对旋转进行了编辑。我不在乎这一点,因为只在CSS中做这件事很简单(实际上已经通过jQuery使用CSS完成了)。谢谢,伙计,我一直在寻找这样的东西:)为什么人们坚持用jQuery做事情,如果用CSS做起来容易得多,同时性能也好得多呢,就我个人而言,我还在学习js/jq,所以这个练习很有帮助。