之前的答案可能正是您正在寻找的,并且您可能已经解决了这个问题。但是我注意到您在帖子中的任何地方都没有提到 jquery,所有这些答案都涉及到了这个问题。所以对于纯 JS 解决方案...
我假设您已经知道如何弹出图像?这可以通过在 html 中编码一个绝对定位的隐藏 img 标签或使用 JS 动态生成来完成。如果您是 JS 新手,前者可能更容易。在我的示例中,我假设您执行了类似于以下的操作:
<img src="" id="bigImg" style="position:absolute; display:none; visibility:hidden;">
那么你的缩略图需要一个 onMouseOver 函数。这个函数必须做三件事:
1) 将实际图像文件加载到隐藏图像中
//I'll leave it up to you to get the right image in there.
document.getElementById('bigImg').src = xxxxxxxx;
2) 定位隐藏图像
//See below for what to put in place of the xxxx's here.
document.getElementById('bigImg').style.top = xxxxxxxx;
document.getElementById('bigImg').style.left = xxxxxxxx;
3) 让隐藏的图片出现
document.getElementById('bigImg').style.display = 'block';
document.getElementById('bigImg').style.visibility = 'visible';
然后您需要捕获 onMouseMove 事件并相应地更新现在未隐藏的图像的位置,使用您在上面 (2) 中用于定位图像的相同代码。这将类似于以下内容:
//Get the mouse position on IE and standards compliant browsers.
if (!e) var e = window.event;
if (e.pageX || e.pageY) {
var curCursorX = e.pageX;
var curCursorY = e.pageY;
} else {
var curCursorX = e.clientX + document.body.scrollLeft;
var curCursorY = e.clientY + document.body.scrollTop;
}
document.getElementById('bigImg').style.top = curCursorY + 1;
document.getElementById('bigImg').style.left = curCursorX + 1;
这应该就是这样做的。只需添加一个 onMouseOut 事件即可再次隐藏 bigImg 图像。您可以将最后两行中的“+1”更改为您喜欢的任何内容,以正确放置与光标相关的图像。
请注意,以上所有代码仅用于演示目的;我还没有测试过它,但它应该让你走上正确的轨道。您可能希望通过预加载更大的图像来进一步扩展这个想法。您也可以通过使用 setTimeout 每 20 毫秒左右更新一次位置来放弃捕获 mousemove 事件,尽管我认为这种方法更复杂且不太理想。我之所以提到它,是因为一些开发人员(包括我刚开始的时候)对 JS 事件处理有反感。
我用我写的自定义 ColdFusion 标签做了类似的事情,它会生成一个浮动的 div,用户可以在屏幕上单击并拖动。同样的原理。如果您需要我,我可以挖掘出来以更深入地回答任何其他问题。
祝你好运!