您好,欢迎访问一九零五行业门户网

JavaScript实现网页拖拽的方法

本经验讲述原生javascript实现网页元素拖拽的方法,以及拖拽的进阶内容。
1.html和css代码自己添加一下。
javascript代码如下:
<script> window.onload=function () { var odiv=document.getelementbyid('div1'); odiv.onmousedown=function (ev) { var oevent=ev||event; var disx=oevent.clientx-odiv.offsetleft; var disy=oevent.clienty-odiv.offsettop; document.onmousemove=function (ev) { var oevent=ev||event; odiv.style.left=oevent.clientx-disx+'px'; odiv.style.top=oevent.clienty-disy+'px'; }; document.onmouseup=function () { document.onmousemove=null; document.onmouseup=null; }; }; }; </script>
拖拽代码封装与调用
<script> window.onload=function () { drag('div1'); drag('div2'); drag('div3'); };function drag(id){ var odiv=document.getelementbyid(id); odiv.onmousedown=function (ev) { var oevent=ev||event; var disx=oevent.clientx-odiv.offsetleft; var disy=oevent.clienty-odiv.offsettop; document.onmousemove=function (ev) { var oevent=ev||event; odiv.style.left=oevent.clientx-disx+'px'; odiv.style.top=oevent.clienty-disy+'px'; }; document.onmouseup=function () { document.onmousemove=null; document.onmouseup=null; }; };} </script>
拖拽进阶之带虚框
1.在网页中可以实现带虚框的拖拽,效果如图所示。
javascript代码:
<script> window.onload=function (){ var odiv=document.getelementbyid('div1'); odiv.onmousedown=function (ev) { var oevent=ev||event; var disx=oevent.clientx-odiv.offsetleft; var disy=oevent.clienty-odiv.offsettop; var onewdiv=document.createelement('div'); onewdiv.classname='box'; onewdiv.style.width=odiv.offsetwidth-2+'px'; onewdiv.style.height=odiv.offsetheight-2+'px'; onewdiv.style.left=odiv.offsetleft+'px'; onewdiv.style.top=odiv.offsettop+'px'; document.body.appendchild(onewdiv); document.onmousemove=function (ev) { var oevent=ev||event; onewdiv.style.left=oevent.clientx-disx+'px'; onewdiv.style.top=oevent.clienty-disy+'px'; }; document.onmouseup=function () { document.onmousemove=null; document.onmouseup=null; odiv.style.left=onewdiv.style.left; odiv.style.top=onewdiv.style.top; document.body.removechild(onewdiv); }; };}; </script>
拖拽进阶之改变大小
1.拖动元素右下角可以改变元素的大小,右下角是一个很小的图片。
javascript代码:
<script> window.onload=function (){ var odiv=document.getelementbyid('div1'); var odiv2=document.getelementbyid('div2'); odiv.onmousedown=function (ev){ var oevent=ev||event; var disx=oevent.clientx-odiv.offsetleft; var disy=oevent.clienty-odiv.offsettop; document.onmousemove=function (ev){ var oevent=ev||event; odiv2.style.width=oevent.clientx-disx+odiv.offsetwidth+'px'; odiv2.style.height=oevent.clienty-disy+odiv.offsetheight+'px'; }; document.onmouseup=function (){ document.onmousemove=null; document.onmouseup=null; }; };}; </script>
拖拽进阶之碰撞检测
1.如图,红色块没碰黄色块之前,不变色。碰之后,黄色块变色了。
javascript代码:
<script> window.onload=function (){ var odiv=document.getelementbyid('div1'); var odiv2=document.getelementbyid('div2'); odiv.onmousedown=function (ev) { var oevent=ev||event; var disx=oevent.clientx-odiv.offsetleft; var disy=oevent.clienty-odiv.offsettop; document.onmousemove=function (ev) { var oevent=ev||event; odiv.style.left=oevent.clientx-disx+'px'; odiv.style.top=oevent.clienty-disy+'px'; var l1=odiv.offsetleft; var r1=odiv.offsetleft+odiv.offsetwidth; var t1=odiv.offsettop; var b1=odiv.offsettop+odiv.offsetheight; var l2=odiv2.offsetleft; var r2=odiv2.offsetleft+odiv2.offsetwidth; var t2=odiv2.offsettop; var b2=odiv2.offsettop+odiv2.offsetheight; if(r1<l2 || l1>r2 || b1<t2 || t1>b2) { odiv2.style.background='yellow'; } else { odiv2.style.background='green'; } }; document.onmouseup=function () { document.onmousemove=null; document.onmouseup=null; }; };}; </script>
拖拽进阶之边界吸附
1.实现块拖拽时接近文档边界自动吸附,javascript代码:
<script> window.onload=function (){ var odiv=document.getelementbyid('div1'); odiv.onmousedown=function (ev) { var oevent=ev||event; var disx=oevent.clientx-odiv.offsetleft; var disy=oevent.clienty-odiv.offsettop; document.onmousemove=function (ev) { var oevent=ev||event; var l=oevent.clientx-disx; var t=oevent.clienty-disy; if(l<50) { l=0; } else if(l>document.documentelement.clientwidth-odiv.offsetwidth-50) { l=document.documentelement.clientwidth-odiv.offsetwidth; } if(t<50) { t=0; } else if(t>document.documentelement.clientheight-odiv.offsetheight-50) { t=document.documentelement.clientheight-odiv.offsetheight; } odiv.style.left=l+'px'; odiv.style.top=t+'px'; }; document.onmouseup=function () { document.onmousemove=null; document.onmouseup=null; }; };}; </script>
拖拽进阶之限制范围
1.实现块只能在固定区域拖动,无法拖出文档。javascript代码:
<script> window.onload=function (){ var odiv=document.getelementbyid('div1'); odiv.onmousedown=function (ev) { var oevent=ev||event; var disx=oevent.clientx-odiv.offsetleft; var disy=oevent.clienty-odiv.offsettop; document.onmousemove=function (ev) { var oevent=ev||event; var l=oevent.clientx-disx; var t=oevent.clienty-disy; if(l<0) { l=0; } else if(l>document.documentelement.clientwidth-odiv.offsetwidth) { l=document.documentelement.clientwidth-odiv.offsetwidth; } if(t<0) { t=0; } else if(t>document.documentelement.clientheight-odiv.offsetheight) { t=document.documentelement.clientheight-odiv.offsetheight; } odiv.style.left=l+'px'; odiv.style.top=t+'px'; }; document.onmouseup=function () { document.onmousemove=null; document.onmouseup=null; }; };}; </script>
以上就是javascript实现网页拖拽的方法的详细内容。
其它类似信息

推荐信息