Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在光标离开画布后使用MouseLeave将其更改回原来的位置?_Javascript_Jquery_Css_Html - Fatal编程技术网

Javascript 如何在光标离开画布后使用MouseLeave将其更改回原来的位置?

Javascript 如何在光标离开画布后使用MouseLeave将其更改回原来的位置?,javascript,jquery,css,html,Javascript,Jquery,Css,Html,我试图实现一个十字光标,一旦光标进入画布,它将通过MouseEnter激活。但是,在光标更改为十字线后,即使光标离开画布,它仍然保持为十字线。我希望十字光标仅在画布内激活,并且在光标离开画布后恢复为默认光标 CSS: #crosshair-h { width: 100%; } #crosshair-v { height: 100%; } .hair { position: fixed; top:0; left:0; margin-top: -3px; margin-l

我试图实现一个十字光标,一旦光标进入画布,它将通过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();
});

非常感谢您的帮助,谢谢

如果默认十字光标已足够,则可以使用简单的CSS悬停规则执行此操作:

画布{
边框:1px纯灰;
高度:50px;
宽度:100px;
}
画布:悬停{
光标:十字线;
}

如果默认十字光标足够,您可以使用一个简单的CSS悬停规则:

画布{
边框:1px纯灰;
高度:50px;
宽度:100px;
}
画布:悬停{
光标:十字线;
}

您不能在画布上使用css规则吗?@jonatjano我正在使用一个自定义十字线,如代码笔中所示:“我希望十字线光标仅在画布内激活”-然后将mousemove事件绑定到画布开始,而不是整个文档,并添加一个mouseout处理程序,再次隐藏光标元素…?你不能在画布上使用css规则吗?@jonatjano我正在使用一个自定义十字线,如此代码笔所示:“我希望十字线光标仅在画布内激活”-然后将mousemove事件绑定到画布开始,而不是整个文档,并添加一个mouseout处理程序,再次隐藏游标元素…?