使图像跟随鼠标指针



我需要一个火箭来跟随我的网站上的鼠标指针的运动。这意味着它应该朝着运动的方向旋转,如果可能的话,根据它必须覆盖的距离加速。这可能吗?

通过使用jquery注册。mousemove到document来改变image .css的left和top为event。pageX和event.pageY.

的例子如下http://jsfiddle.net/BfLAh/1/

$(document).mousemove(function(e) {
  $("#follow").css({
    left: e.pageX,
    top: e.pageY
  });
});
#follow {
  position: absolute;
  text-align: center;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="follow"><img src="https://placekitten.com/96/140" /><br>Kitteh</br>
</div>

更新为

http://jsfiddle.net/BfLAh/3/

的方向,你需要得到当前的CSS左侧和CSS顶部,并与事件进行比较。pageX和事件。pageY,然后用

设置图像方向
-webkit-transform: rotate(-90deg); 
-moz-transform: rotate(-90deg); 

对于速度,您可以设置jquery .animation持续时间为一定的数量

光标后面有一个简单的方框

剩下的是一个简单的例子,记住最后一个光标的位置,并应用一个公式来使框移动到光标所在的位置以外的地方。如果盒子的加速度有限,并且必须在光标停止移动后赶上光标,那么超时也是很方便的。用图像替换框是一个简单的CSS(它可以替换框的大部分设置代码)。我认为示例中的实际思考代码约为8行。

选择正确的图像(使用精灵)来定位火箭。

是啊,烦死了。: -)

function getMouseCoords(e) {
  var e = e || window.event;
  document.getElementById('container').innerHTML = e.clientX + ', ' +
    e.clientY + '<br>' + e.screenX + ', ' + e.screenY;
}

var followCursor = (function() {
  var s = document.createElement('div');
  s.style.position = 'absolute';
  s.style.margin = '0';
  s.style.padding = '5px';
  s.style.border = '1px solid red';
  s.textContent = "🚀"
  return {
    init: function() {
      document.body.appendChild(s);
    },
    run: function(e) {
      var e = e || window.event;
      s.style.left = (e.clientX - 5) + 'px';
      s.style.top = (e.clientY - 5) + 'px';
      getMouseCoords(e);
    }
  };
}());
window.onload = function() {
  followCursor.init();
  document.body.onmousemove = followCursor.run;
}
#container {
  width: 1000px;
  height: 1000px;
  border: 1px solid blue;
}
<div id="container"></div>

这是我的代码(未优化但完整的工作示例):

<head>
  <style>
    #divtoshow {position:absolute;display:none;color:white;background-color:black}
    #onme {width:150px;height:80px;background-color:yellow;cursor:pointer}
  </style>
  <script type="text/javascript">
    var divName = 'divtoshow'; // div that is to follow the mouse (must be position:absolute)
    var offX = 15;          // X offset from mouse position
    var offY = 15;          // Y offset from mouse position
    
    function mouseX(evt) {if (!evt) evt = window.event; if (evt.pageX) return evt.pageX; else if (evt.clientX)return evt.clientX + (document.documentElement.scrollLeft ?  document.documentElement.scrollLeft : document.body.scrollLeft); else return 0;}
    function mouseY(evt) {if (!evt) evt = window.event; if (evt.pageY) return evt.pageY; else if (evt.clientY)return evt.clientY + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop); else return 0;}
    
    function follow(evt) {
        var obj = document.getElementById(divName).style;
        obj.left = (parseInt(mouseX(evt))+offX) + 'px';
        obj.top = (parseInt(mouseY(evt))+offY) + 'px'; 
        }
    document.onmousemove = follow;
  </script>
</head>
<body>
    <div id="divtoshow">test</div>
    <br><br>
    <div id='onme' onMouseover='document.getElementById(divName).style.display="block"' onMouseout='document.getElementById(divName).style.display="none"'>Mouse over this</div>
</body>

最新更新