Node.js 可靠编程技能。避免事件循环阻塞、异步陷阱、ESM 兼容问题和内存泄漏。触发词:Node.js 开发、async/await、流处理、性能优化、安全编码。
首先:我们需要一个可以移动的div
var getMouseP=function (e){//获取鼠标坐标 请传递evnet参数
e = e || window.event;
var m=(e.pageX || e.pageY)?{ x:e.pageX, y:e.pageY } : { x:e.clientX + document.body.scrollLeft - document.body.clientLeft, y:e.clientY + document.body.scrollTop - document.body.clientTop };
return m;
};
move=function(o,t){
o=$j(o);
t=$j(t);
o.onmousedown=function(ev){
var mxy=getMouseP(ev);//获取当前鼠标坐标
var by={x:mxy.x-(t.offsetLeft),y:mxy.y-(t.offsetTop)};
o.style.cursor="move";
document.onmousemove=function(ev){
var mxy=getMouseP(ev);
t.style.left=mxy.x-by.x+"px";
t.style.top=mxy.y-by.y+"px";
};
document.onmouseup=function(){
window.getSelection ? window.getSelection().removeAllRanges() : document.selection.empty();
this.onmousemove=null;
}
}
}
move("jelle_test_div","jelle_test_div");
然后:我们需要控制他的移动范围
<script type="text/javascript"> <BR>var mp=function (e){//获取鼠标坐标 请传递evnet参数 <BR>e = e || window.event; <BR>var m=(e.pageX || e.pageY)?{ x:e.pageX, y:e.pageY } : { x:e.clientX + document.body.scrollLeft - document.body.clientLeft, y:e.clientY + document.body.scrollTop - document.body.clientTop }; <BR>return m; <BR>} <BR>var move2=function(o,t){//请提前设置CSS position:absolute;并激活filter:alpha(opacity=100); <BR>//o相应鼠标拖动的区域ID T被移动对象的ID <BR>o=$j(o); <BR>t=$j(t); <BR>by_o={x:o.offsetLeft,y:o.offsetTop}; <BR>o.onmousemove=function(ev){ <BR>//var mxy=Jelle.getMouseP(ev);//获取当前鼠标坐标 <BR>var by={x:t.offsetLeft,y:t.offsetTop}; <BR>var ms=mp(ev); <BR>t.innerHTML=(by_o.x-by.x)+"---"+(by_o.x-by.y); <BR>jy=ms.y-by_o.y-25; <BR>jx=ms.x-by_o.x-50; <BR>maxy=415-50;//减去移动框的高度 <BR>maxx=500-100;//减去移动框的宽度 <BR>var y=jy>=maxy?maxy:jy<=0?0:jy; <BR>var x=jx>=maxx?maxx:jx<=0?0:jx; <BR>t.style.marginTop=y+"px"; <BR>t.style.marginLeft=x+"px"; <BR>} <BR>} <BR>move2("jelle_warpper","jelle_move") <BR></script>
解决了上面的我问题。那么这个效果就不难了。!
我们可以获得了 一个 x y, 恰好这个 x y 可以用来设置大图背景的 x y。
这里我们值得注意的事。要把握好大图与小图的比例。
还有就是显示图片的DIV 与移动的DIV 比例。
比如我这里的比例: 大图800*800 小图是200*200
显示大图的DIV 200*200 移动的div 50*50。
其实我还没总结出这个公式。绕的有点头晕呵呵。
下面我贴出全部代码:










