Heim > Artikel > Web-Frontend > Beispiele für JavaScript-Drag-and-Drop-Anwendungen_Javascript-Kenntnisse
Die Grundidee von Drag & Drop wurde auch im vorherigen Artikel besprochen. Nun, da wir die Theorie haben, wie sieht es mit der Praxis aus? Im Folgenden zeige ich Ihnen als Referenz ein kleines Beispiel, das mit Drag-and-Drop geschrieben wurde. Der ungefähre Effekt ist im Bild unten zu sehen:
Es handelt sich um eine so einfache Ziehleiste. Sie können sie als Bildlaufleiste, als Mengenauswahlsteuerung in einem Formular, als Fortschrittsleiste usw. verstehen. Wie auch immer, Sie können sie ohne weiteres in viele ändern. Mal sehen, wie das funktioniert ist fertig!
Nachdem ich darüber nachgedacht habe, habe ich das Gefühl, dass es nicht nötig ist, das Prinzip zu erklären. Ich habe es im Drag-Effekt bereits sehr deutlich gemacht. Schüler, die sich nicht sicher sind, können nach links gehen, um ein kleines Beispiel für Javascript zu sehen und per Drag & Drop auf einer PC-Webseite posten. Ich werde den Code direkt veröffentlichen:
css:
<style> #drag_wrap{ width:220px; height:10px; position:relative; margin:100px auto; } .dis_bg{ width:200px; height:10px; border-radius:10px; background:#ccc; margin-left:10px; } #drag_bg{ width:0; height:10px; border-radius:10px; background:#0CF; } #drag_box{ width:20px; height:20px; border-radius:10px; background:#F30; position:absolute; top:-5px; left:0; cursor:move; } #drag_box span{ width:40px; height:20px; text-align:center; line-height:20px; border:1px solid #ccc; position:absolute; top:-25px; left:-10px; color:#333; background:#fff; } #drag_wrap1{ width:10px; height:220px; position:relative; margin:100px auto; } .dis_bg1{ width:10px; height:200px; border-radius:10px; background:#ccc; position:absolute; top:10px; } #drag_bg1{ width:10px; height:0; border-radius:10px; background:#0CF; } #drag_bg1{ width:10px; height:0; border-radius:10px; background:#0CF; } #drag_box1{ width:20px; height:20px; border-radius:10px; background:#F30; position:absolute; top:-5px; left:-5px; cursor:move; } #drag_box1 span{ width:40px; height:20px; text-align:center; line-height:20px; border:1px solid #ccc; position:absolute; top:0; left:25px; color:#333; background:#fff; } </style>
html:
<div id="drag_wrap"> <div class="dis_bg"> <div id="drag_bg"></div> </div> <div id="drag_box"><span>0</span></div> </div> <div id="drag_wrap1"> <div class="dis_bg1"> <div id="drag_bg1"></div> </div> <div id="drag_box1"><span>0</span></div> </div>
JavaScript:
window.onload = function(){ drag("drag_box","drag_wrap","drag_bg","left"); drag("drag_box1","drag_wrap1","drag_bg1","top"); function drag(obj,parentNode,bgObj,attr,endFn){ var obj = document.getElementById(obj); var parentNode = document.getElementById(parentNode); var bgObj = document.getElementById(bgObj); var oNum = obj.getElementsByTagName('span')[0]; obj.onmousedown = function(ev){ var ev = ev || event; //非标准设置全局捕获(IE) if(obj.setCapture){ obj.setCapture() }; var disX = ev.clientX - this.offsetLeft, disY = ev.clientY - this.offsetTop; var oWidth = obj.offsetWidth, oHeight = obj.offsetHeight; var pWidth = parentNode.offsetWidth, pHeight = parentNode.offsetHeight; document.onmousemove = function(ev){ var ev = ev || event; if(attr == "left"){ //横向 var left = ev.clientX - disX; //左侧 if(left <= 0){ left = 0; }else if(left > pWidth - oWidth){//右侧 left = pWidth - oWidth; }; obj.style.left = bgObj.style.width = left + 'px'; oNum.innerHTML = left; }else if(attr == "top"){ //竖向 var top = ev.clientY - disY; //上面 if(top <= 0){ top = 0; }else if(top > pHeight - oHeight){//下面 top = pHeight - oHeight; }; obj.style.top = bgObj.style.height = top + 'px'; oNum.innerHTML = top; }; }; document.onmouseup = function(ev){ var ev = ev || event; document.onmousemove = document.onmouseup = null; endFn && endFn(); //非标准释放全局捕获(IE) if(obj.releaseCapture){ obj.releaseCapture() }; }; return false; }; } }
Parameterbeschreibung:
Hier werden fünf Parameter angegeben: obj, parentNode, bgObj, attr, endFn:
obj: das gezogene Objekt
parentNode: Ein Objekt, das den aktiven Bereich des gezogenen Objekts begrenzt, normalerweise auf sein übergeordnetes Objekt
festgelegtbgObj: Hintergrundobjekt beim Ziehen einfärben
attr: 2 Parameter links oben, die angeben, ob horizontal oder vertikal gezogen werden soll
endFn: Rückgabefunktion, sie wird ausgeführt, wenn sie existiert, andernfalls wird sie nicht ausgeführt, optional
Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er wird für das Studium aller hilfreich sein.