Imitation Google and Windows Live drag-and-drop

Source: Internet
Author: User
Tags tagname
Tip: You can modify some of the code before running

<HTML> <HEAD> <TITLE> New Document </TITLE> <style type= "Text/css" > body {margin:10px; } #dragHelper {position:absolute;/* important/border:2px dashed #000000; Background-color: #FFFFFF; Filter:alpha (opacity=30); } normal {position:absolute;/* important * * width:300px; #height: 10px; border:1px solid #666666; Background-color: #FFFFFF; OVER {position:absolute;/* important * * width:300px; #height: 10px; border:1px solid #666666; Background-color: #f3f3f3; Filter:alpha (OPACITY=50); }. Dragarea {cursor:move} </style> </HEAD> <body oncontextmenu= "Window.event.returnvalue=false" > <input type= "text" id= " EVT "Name=" Eventvalue "size="/> <div id= "DragHelper" ></div> <div class= "normal" overclass= "over" dragclass= "Normal" > <table width= "100%" > <tbody> <tr bgcolor= "#CCCCCC" bar= "yes" ><td>coba O&LT;/TD&GT;&LT;TD dragarea= "yes" class= "Dragarea" >........</td><td>-x</td></tr> <tr><td colspan= "3" > Address: http://www.cobao.cn </td></tr> <tr><td colspan= "3" > keyword:</td></tr> <tr><td colspan= "3" > Description:</td></tr> </tbody> </table> </div> <div class= "normal" overclass= "over" dragclass= "Normal" > <table width= "100%" > <tbody> <tr bgcolor= "#CCCCCC" bar= "yes" ><td> Sina &L T;/TD&GT;&LT;TD dragarea= "yes" class= "Dragarea" >........</td><td>-x</td></tr> <tr &GT;&LT;TD colspan= "3" > Address:http://www.sina.com.cn</td></tr> <tr><td colspan= "3" > Keywords: </td></tr> <tr><td colspan= "3" > Description:</td></tr> </tbody> </table> < /div> <div class= "normal" overclass= "over" dragclass= "normal" > <table width= "100%" > <tbody> ; TR bgcolor= "#CCCCCC" bar= "yes" ><td> netease &LT;/TD&GT;&LT;TD dragarea= "yes" class= "Dragarea" >........</td><td>-x</td></tr> <tr><td colspan= "3" > Address:http://www.163.com</td></tr> <tr><td colspan= "3" > Keywords: </td></ Tr> <tr><td colspan= "3" > Description:</td></tr> </tbody> </table> </div> <div class= "Normal" overclass= "over" dragclass= "normal" > <table width= "100%" > <tbody> <tr bgcolor= "#CCC CCC "bar=" yes "><td>qq</td><td dragarea=" yes "class=" Dragarea ">........</td><td>- X</td></tr> <tr><td colspan= "3" > Address:http://www.qq.com</td></tr> <tr>< TD colspan= "3" > Keywords:</td></tr> <tr><td colspan= "3" > Description:</td></tr> </tbody& Gt </table> </div> </BODY> <script language= "JavaScript" > <!--var dragobjs = []; Can drag the element array var dragobjtops = []; var draghelper = DocumeNt.getelementbyid ("DragHelper"); Drag-and-drop position box var dragobj = null; Drag object element var dragobjpos = 0; var dragobjoffset = {left:0,top:0}; Drag object original position var Mouseindragobjoffset = {x:0,y:0}; The relative position of the mouse in the dragged object var initheight = 40; Number.prototype.nan0=function () {return isNaN (this) 0:this;} function GetPosition (e) {//Get absolute position of element relative document var left = 0; var top = 0; while (e.offsetparent) {left = E.offsetleft; Top + = E.offsettop; e = e.offsetparent; Left + = E.offsetleft; Top + = E.offsettop; return {x:left, y:top}; function Mousecoords (EV) {//Gets the absolute position of the mouse relative to the document if (Ev.pagex | | ev.pagey) {return {x:ev.pagex, y:ev.pagey}; return {x:ev.clientx + document.body.scrollleft-document.body.clientleft, Y:ev.clienty + document.body.scrollTop -Document.body.clientTop}; function Getmouseoffset (target, Ev) {//Get relative position of mouse relative element ev = EV | | window.event; var elementpos = getPosition (target); var mousepos = mousecoords (EV); return {x:mousepos.x-elementpos.x, Y:moUSEPOS.Y-ELEMENTPOS.Y}; } function MouseDown (ev) {ev = EV | | window.event; target = Ev.srcelement | | Ev.target; if (dragobj) {return; var dragarea = false; if (Target.getattribute ("Dragarea")) {Dragarea = true; while (!target.getattribute ("Isdragobj")) {if (target.tagname== "HTML") break; target = Target.parentnode; } if (Dragarea && target.getattribute ("Isdragobj")) {dragobj = target; The purpose of the rewrite is to make the current object at the topmost document.body.removeChild (dragobj); Document.body.appendChild (dragobj); Record drag object original position dragobjoffset.left = DragObj.style.left; Dragobjoffset.top = DragObj.style.top; Dragobj.classname = Dragobj.getattribute ("Overclass"); The relative position of the mouse in the dragged object mouseindragobjoffset = Getmouseoffset (dragobj, Ev); DragHelper.style.left = DragObj.style.left; DragHelper.style.top = DragObj.style.top; DragHelper.style.width = Dragobj.offsetwidth; DragHelper.style.height = Dragobj.offsetheight; DragHelper.style.display = ""; Alert (Dragobj.offsetwidth+ ":" +dragobj.clientwidth); }} function mouseUp (ev) {ev = EV | | window.event; target = Ev.srcelement | | Ev.target; if (dragobj) {dragObj.style.left = DragHelper.style.left; DragObj.style.top = DragHelper.style.top; DragHelper.style.display = "None"; Dragobj.classname = Dragobj.getattribute ("Dragclass"); Dragobj = null; }} function MouseMove (ev) {ev = EV | | window.event; if (dragobj) {var mousepos = mousecoords (EV); /*draghelper.style.left = Dragobjoffset.left; DragHelper.style.top = Dragobjoffset.top; DragHelper.style.width = Dragobj.offsetwidth; DragHelper.style.height = Dragobj.offsetheight; DragHelper.style.display = "";/var windowwidth = document.body.offsetWidth; Window width var windowheight = document.body.offsetHeight; Window height//Drag object should be at current position var dragobjleft = mousepos.x-mouseindragobjoffset.x; var dragobjtop = Mousepos.y-mouseindragobjoffset.y; Increase the judgment or drag the object out of the browser window if (dragobjleft >= 0 && dragobjleft <=windowwidth-dragobj.offsetwidth-20) DragObj.style.left = Dragobjleft; if (dragobjtop >=0) dragObj.style.top = Dragobjtop; Repaint (); ///Clone object function Cloneobject (Srcobj, destobj) {destobj = Srcobj.clonenode (true);} function makedraggable (Element) {Element.setattribute ("isdragobj", "Y");} function repaint () {for (i=0; i<dragobjs.length; i++) {if (dragobjs[i] = = dragobj) {dragobjpos = i; Dragobjs[i] = DragHelper; Break } if (dragobjpos>0 && parseint (dragObj.style.top) <parseint (dragobjs[dragobjpos-1].style.top)) { Dragobjs[dragobjpos] = dragobjs[dragobjpos-1]; DRAGOBJS[DRAGOBJPOS-1] = DragHelper; Dragobjpos = dragObjPos-1; if (dragobjpos<dragobjs.length-1 && parseint (dragObj.style.top) >parseint (dragobjs[dragobjpos+1). Style.top)) {Dragobjs[dragobjpos] = dragobjs[dragobjpos+1]; DRAGOBJS[DRAGOBJPOS+1] = DragHelper; Dragobjpos = Dragobjpos + 1; } paintdragobjs (); Dragobjs[dragobjpos] = dragobj; } function Paintdragobjs () {var h = 40; For (i=0 i<dragobjs.length; i++) {dragobjs[i].style.left = 20; Dragobjs[i].style.top = h; H + + Dragobjs[i].offsetheight + 10; } function OpenClose (obj) {obj.innerhtml = obj.innerhtml== "-"? " +":"-"; while (Obj.tagname!= "tbody") {obj = Obj.parentnode; For (i=0 i<obj.childnodes.length; i++) {if (Obj.childnodes[i].nodename = = "#text" | | obj.childnodes[i].getattr Ibute ("Bar")) {continue} obj.childnodes[i].style.display=obj.childnodes[i].style.display== ""? " None ":"; } paintdragobjs (); } Document.onmousedown = MouseDown; Document.onmouseup = mouseUp; Document.onmousemove = MouseMove; Window.onload = function () {var objs = document.getElementsByTagName ("Div"); For (i=0 i<objs.length; i++) {var item = Objs.item (i); if (i==1) item.style.height=150; if (Item.getattribute ("Overclass")) {makedraggable (item); Dragobjs.push (item); Item.style.left = 20; Item.style.top = Initheight; Dragobjtops.push(Initheight); Initheight + = Item.offsetheight + 10; }//DragHelper = document.createelement (' DIV '); DragHelper.style.cssText = ' position:absolute;display:none; '; Document.body.appendChild (DragHelper); }//--> </SCRIPT> </HTML>
Tip: You can modify some of the code before running
Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.