我正在尝试实现一个十字光标,一旦光标进入画布,它将通过MouseEnter激活。但是,将光标更改为十字准线后,即使它离开了画布,它仍然保留为十字准线。我希望仅在画布内部激活十字准线光标,并在光标离开画布后使其恢复为默认光标。
CSS:
#crosshair-h {
width: 100%;
}
#crosshair-v {
height: 100%;
}
.hair {
position: fixed;
top:0; left:0;
margin-top: -3px;
margin-left: -2px;
background: transparent;
border-top: 1px dotted #000;
border-left: 1px dotted #000;
pointer-events: none;
z-index: 2;
}
#mousepos {
position: absolute;
top:0; left:0;
padding: 10px;
margin: 10px;
font: 14px arial;
color: #fff;
background: rgba(0,0,0,0.5);
border-radius: 24px;
z-index: 1;
}
JavaScript:
$(document).ready(function() {
// Setup our variables
var cH = $('#crosshair-h'),
cV = $('#crosshair-v');
$(this).on('mousemove touchmove', function(e) {
var x = e.pageX - 1;
var y = e.pageY - 1;
cH.css('top', e.pageY);
cV.css('left', e.pageX);
$('#mousepos').css({
top: e.pageY + 'px',
left: e.pageX + 'px'
}, 800);
$('#mousepos').text( "X: " + x + "px, Y: " + y + "px");
e.stopPropagation();
});
// Anchor Hover Effects
$("a").hover(function() {
$(".hair").stop().css({borderColor: "#fff"}, 800)},
function() {
$(".hair").stop().css({borderColor: "black"},800)
});
e.stopPropagation();
});
感谢您的帮助,谢谢!
答案 0 :(得分:3)
如果默认十字线光标已足够,您可以使用简单的CSS悬停规则来做到这一点:
canvas {
border: 1px solid grey;
height: 50px;
width: 100px;
}
canvas:hover {
cursor: crosshair;
}
<canvas></canvas>
如果确实需要自定义对象,则可以在画布上使用mouseleave或mouseout事件来删除css类。