Javascript-Mausereignisse
Dec 06, 2016 am 11:28 AM<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>简单拖拽实现</title> <style type="text/css"> *{margin:0;padding:0;} #box{ margin:20px auto; position:relative; width:400px; height:400px; background:#ccc; border:1px solid #333; postion:relative; } #dragBox{ width:50px; height:50px; text-align:center; line-height: 50px;position: absolute; background:blue; cursor:move; font-size:12px; color:#fff;} </style> </head> <body> <div id="box"> <div id="dragBox">拖我</div> </div> <script type="text/javascript"> var VVG = {}; //命名空间 VVG.DOM = { $: function(id) { //创建方便的选择符 return typeof id == "string" ? document.getElementById(id) : id; }, bindEvent: function(node, type, func) { //事件绑定方法 if (node.addEventListener) { node.addEventListener(type, func, false); } else if (node.attachEvent) { node.attachEvent("on" + type, func); } else { node["on" + type] = func; } }, getEvent: function(event) { //获取事件 return event ? event : window.event; }, getTarget: function(event) { //获取事件目标 return event.target || event.srcElement; } } var DragDrop = function() { //新建一个返回对象的函数 var box = VVG.DOM.$("box"); //获取外围BOX var dragBox = VVG.DOM.$("dragBox");//获取需要拖动的BOX var dragging = null; //初始化对象 function drag(event) { //事件执行函数 event = VVG.DOM.getEvent(event); var target = VVG.DOM.getTarget(event); switch (event.type) {//判断事件类型 case "mousedown": if(target.id == "dragBox"){ //当事件对象的ID等于要拖动的BOX的ID时 dragging = target; //赋值到拖动目标 } break; case "mousemove": if(dragging){ //当有拖动目标时执行 sTop = document.documentElement.scrollTop || document.body.scrollTop; //当有滚动条的时候卷去页面的高度 dragging.style.left = (event.clientX - box.offsetLeft - dragBox.offsetWidth/2) + "px"; dragging.style.top = (event.clientY + sTop - box.offsetTop - dragBox.offsetHeight/2 ) + "px"; var left = parseInt(dragging.style.left); var top = parseInt(dragging.style.top); //console.log("left:"+left+"-----top:"+top + "-------sTop:"+sTop); // 比较坐标是否超出外围的BOX if(left < 0){ dragging.style.left = 0 +"px"; } if(top < 0){ dragging.style.top = 0+"px"; } if(left > box.offsetWidth - dragBox.offsetWidth){ dragging.style.left = (box.offsetWidth - dragBox.offsetWidth - 2 )+"px"; } if(top > box.offsetHeight - dragBox.offsetHeight){ dragging.style.top =( box.offsetHeight - dragBox.offsetHeight - 2 )+"px"; } } break; case "mouseup": // 清空拖动目标 dragging = null; break; } }; return { dragStart: function() { // 绑定事件 VVG.DOM.bindEvent(document, "mousedown", drag); VVG.DOM.bindEvent(document, "mousemove", drag); VVG.DOM.bindEvent(document, "mouseup", drag); } } }(); DragDrop.dragStart(); </script> </body> </html>
Nach dem Login kopieren
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heißer Artikel
Repo: Wie man Teamkollegen wiederbelebt
3 Wochen vor
By 尊渡假赌尊渡假赌尊渡假赌
Wie lange dauert es, um Split Fiction zu schlagen?
3 Wochen vor
By DDD
R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Wochen vor
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
3 Wochen vor
By 尊渡假赌尊渡假赌尊渡假赌

Hot-Tools-Tags

Heißer Artikel
Repo: Wie man Teamkollegen wiederbelebt
3 Wochen vor
By 尊渡假赌尊渡假赌尊渡假赌
Wie lange dauert es, um Split Fiction zu schlagen?
3 Wochen vor
By DDD
R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Wochen vor
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
3 Wochen vor
By 尊渡假赌尊渡假赌尊渡假赌

Heiße Artikel -Tags

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Ersetzen Sie Stringzeichen in JavaScript

Benutzerdefinierte Google -Search -API -Setup -Tutorial

8 atemberaubende JQuery -Seiten -Layout -Plugins

Erstellen Sie Ihre eigenen AJAX -Webanwendungen

10 JavaScript & JQuery MVC -Tutorials
