一般的想法是显示较小尺寸的图像(“原始”),当鼠标悬停在容器上时,容器的背景图像被显示出来。背景图片很大,CSS背景被容器的大小裁剪。跟踪鼠标事件。你必须完成测量和数学计算。
<div id="imageview" style="position:relative;width:300px;height:200px;"
>
<img src="300x200.jpg" id="original" onmouseover="this.style.display='none';">
</div>
<script>
document.getElementById('imageview').onmouseover=function(e){
document.getElementById('original').style.display='none';
var x,y;
if (e) {x=e.clientX;y=e.clientY;} else {x=event.clientX; y=event.clientY;}
document.getElementById('imageview').orgx=x;
document.getElementById('imageview').orgy=y;
}
document.getElementById('imageview').onmousemove=function(e){
var x,y;
if (e) {x=e.clientX;y=e.clientY;} else {x=event.clientX; y=event.clientY;}
var orgx=document.getElementById('imageview').orgx;
var orgy=document.getElementById('imageview').orgy;
//now you have x, y, orgx, and org y, so you can do some math
// ...
var posx, posy;
document.getElementById('imageview').backgroundImage='url(600x400.jpg)';
document.getElementById('imageview').backgroundPosition=-1*posx+'px '+ -1*posy+'px';
}
</script>
这个评论是好的,但我一直在寻找可点击的解决方案。就像你点击原始图像一样,它会“缩放”,如果你点击“缩放”图像,它会再次显示原始图像。非常感谢你的建议,尽管我会尝试使用你的代码并从那里开始。 – user3261881
你可以把它放在jsfiddle吗? – Muhaimin