我正在练习Javascript,所以我做了一个鼠标跟随功能。我知道了,但是现在我有了一个新主意,我不确定这是可能的。

有没有一种方法可以使“视觉球”跟随鼠标移动,从而使该区域中的所有内容都可见?有点像使用手电筒,看到鼠标所在的小区域。

javascript - Javascript-鼠标跟随+照明?-LMLPHP


注意:我并不是要有人为我编写代码,而是要解释一下,因为我很想自己学习,但是我确实需要一个指导!**




function mouseMovement(e) {
  var x = document.getElementById('x_show');
  var y = document.getElementById('y_show');

  x.innerHTML = e.clientX;
  y.innerHTML = e.clientY;

  document.getElementById("followDiv").style.left = event.clientX - 15 + "px";
  document.getElementById("followDiv").style.top = event.clientY - 15 + "px";


}
document.onmousemove = mouseMovement;

#followDiv {
  background-color: lightblue;
  height: 30px;
  width: 30px;
  position: absolute;
}

<p id="x_show">0</p>
<p id="y_show">0</p>
<div id="followDiv"></div>

最佳答案

一种非画布的方式是:


将页面背景设置为黑色
使用“边框半径:50%”对#followDiv的边界进行四舍五入。
将此div的背景设置为image
播放背景位置以与鼠标相反


编辑:


通过使用盒子阴影柔化边缘来最终触摸




function mouseMovement(e) {
  var x = document.getElementById('x_show');
  var y = document.getElementById('y_show');

  x.innerHTML = e.clientX;
  y.innerHTML = e.clientY;

  var followDiv = document.getElementById("followDiv");
  followDiv.style.left = event.clientX - 60 + "px";
  followDiv.style.top = event.clientY - 60 + "px";
  followDiv.style.backgroundPositionX = (-event.clientX) + 'px';
  followDiv.style.backgroundPositionY = (-event.clientY) + 'px';





}
document.onmousemove = mouseMovement;

body {
  background: black;
}

#followDiv {
  background-color: lightblue;
  height: 120px;
  width: 120px;
  position: absolute;
  border-radius: 50%;
  box-shadow: 0 0 12px 12px black inset, /* workaround for a soft edge issue :
               http://stackoverflow.com/a/37460870/5483521
            */
  0 0 2px 2px black inset, 0 0 2px 2px black inset, 0 0 2px 2px black inset;
  background: url(https://dl.dropboxusercontent.com/u/139992952/multple/annotateMe.jpg) no-repeat;
}

<p id="x_show">0</p>
<p id="y_show">0</p>
<div id="followDiv"></div>

关于javascript - Javascript-鼠标跟随+照明?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42286599/

10-16 16:32