在開發的時候須要一個可拖拽的prompt彈框。本身寫了一個,大概思路爲:javascript
1.獲取鼠標左鍵按下移動的起點座標(x,y)。css
2.獲取div的left和top屬性。html
3.獲得鼠標座標到左上角的距離(x-top,y-top)java
而後很少囉嗦,看代碼。web
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title> 拖拽 </title> <meta name="Generator" content="EditPlus"> <meta name="Author" content=""> <meta name="Keywords" content=""> <meta name="Description" content=""> <meta content="width=device-width,initial-scale=1,user-scalable=no" name="viewport"> </head> <style type="text/css"> *{padding:0;margin:0} body{width:100%;height:100%;margin:0 auto;background:rgb(151,223,185)} html,body{margin:0;width:100%;height:100%} dv1{width:200px;height:30px;background:silver} #box{position:absolute;left:300px;top:100px;padding:5px;background:#f0f3f9;font-size:15px;-moz-box-shadow:2px 2px 4px #666666;-webkit-box-shadow:2px 2px 4px #666666;} #main{border:1px solid #a0b3d6;background:#beceed;border-bottom:1px solid #a0b3d6;padding:5px 1px;cursor:move;} #content{width:420px;height:250px;padding:10px 5px;border:1px solid #beceed} </style> <script type="text/javascript"> <!-- var dv1 = document.getElementsByTagName("div"); var isdrag = false;//拖拽標識 var x=0,y=0;//當前鼠標座標 var box = document.getElementById("box"); var t1=0;//定時 window.onload = function() { var main = document.getElementById("main"); var box = document.getElementById("box"); var browser=navigator.appName; var b_version=navigator.appVersion; var version=parseFloat(b_version); var sp1 = document.getElementById("sp1"); sp1.innerHTML="瀏覽器名稱:"+ browser+"<br/>"+"瀏覽器版本:"+ version; addEvent(main,"mousedown",mousedown); addEvent(window,"mouseup",mouseup); onmousemove = function(event) { if(isdrag && event.button==0) { var left = 0; var top = 0; x=event.clientX; y=event.clientY; if(t1==0){ //獲取剛開始移動的鼠標到左上角的距離 dv1[0].innerHTML = x-box.offsetLeft; dv1[1].innerHTML = y-box.offsetTop; } t1 = setTimeout(checkDrag,10); left = x - dv1[0].innerHTML; top = y - dv1[1].innerHTML; box.style.left = left+"px"; box.style.top=top+"px"; } } } function mousedown(event){ if(event.button>0)return; //只能左鍵動做 isdrag = true; x=event.clientX; y=event.clientY; } function mouseup(event){ isdrag = false; t1=0; } /*** *自定義綁定事件方法 *obj--綁定事件對象 *type--事件名稱 *fn--事件執行的函數 */ function addEvent(obj,type,fn){ if(obj.addEventListener){ obj.addEventListener(type,fn,false); }else if(obj.attachEvent){ obj.attachEvent('on'+type,fn); } } function checkDrag(){}//setTimeout調用空函數 //--> </script> <body> <div id="dv1">300</div> <div id="dv2">100</div> <span id="sp1"></span> <div id="box" style="left:300px;top:100px"> <div id="main" >拖拽</div> <div id="content"> 內容...... </div> </div> </body> </html>
一個簡單的div拖拽效果,最後進行須要的樣式處理和事件處理便可獲得自定義prompt彈出框(這裏再也不寫出)。瀏覽器
純碎爲了學習和記錄。app