DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> 關於JavaScript >> JavaScript 拖拽實例代碼
JavaScript 拖拽實例代碼
編輯:關於JavaScript     

一、JS 拖拽的實現實例代碼:

<!DOCTYPE html>
 <html lang="en">
 <head>
 <meta charset="UTF-8" />
 <title>拖拽js</title>
 <style type="text/css">
 html, body {
 overflow:hidden;
 }
 body, div, {
 margin:0;
 padding:0;
 }
 body {
 color:#fff;
 font:12px/2 Arial;
 }
 p {
 padding:0 10px;
 margin-top:10px;
 }
 span {
 color:#ff0;
 padding-left:5px;
 }
 #box {
 position:absolute;
 width:300px;
 height:150px;
 background:#D5CDDA;
 border:2px solid #ccc;
 top:150px;
 left:400px;
 margin:0;
 }
 #drag {
 height:25px;
 cursor:move;
 background:#724a88;
 border-bottom:2px solid #ccc;
 padding:0 10px;
 }

</style>
</head>
<body>
<div id="box">
 <div id="drag">拖動區域</div>
 被拖動的整個div
 </div>
</body>
</html>

<script src="js/jquery-1.10.1.min.js"></script>
<script type="text/javascript">
$(function(){
 moveBox($("#box"),$("#drag")) ;
})
//B被拖動的div,BT可拖動區域
function moveBox(B,BT){
 var bDrag = false;
 var _x,_y;
 BT.mousedown(function(event){
var e=event || window.event;
bDrag = true;
 _x=e.pageX-B.position().left;
 _y=e.pageY-B.position().top;
 return false
 })
 $(document).mousemove(function(event){
 if(!bDrag) return false;
 var e=event || window.event;
 var x=e.pageX-_x;
 var y=e.pageY-_y;
 console.log(B.position());
 var maxL = $(document).width() - B.outerWidth();
 var maxT = $(document).height() - B.outerHeight();
 x = x < 0 ? 0: x; x = x > maxL ? maxL: x;
 y = y < 0 ? 0: y; y = y > maxT ? maxT: y;
 B.css({left:x,top:y});
 return false
 }).mouseup(function(){
 bDrag = false;
 return false
 })
}
</script>

二、 js之拖拽效果

主要原理:

   1、當鼠標按下時,記錄鼠標坐標,用到的是 onmousedown;

   2、當鼠標移動時,計算鼠標移動的坐標之差,用到的是 onmousemove;

   3、當鼠標松開時,清除事件,用到的是 onmouseup;

了解的知識:

   1、div 的 offsetLeft 與 style.left 的區別:http://www.jb51.net/article/93142.htm

效果圖如下:

突然發現有沒有效果圖都一樣哈哈,不說廢話了,上代碼:

html代碼:

<!DOCTYPE html>
<html>
<head>
 <meta charset="utf8">
 <title>js拖拽效果</title>
 <style type="text/css">
 #div1 {
  width : 200px;
  height: 200px;
  position: absolute;
  background: #99dd33;
  cursor: move;
 }
 </style>
</head>
<body>
 <div id="div1"></div>
</body>
<script type="text/javascript">
 // js代碼
</script>
</html>

js代碼:

window.onload function() {
 var disX = disY = 0;       // 鼠標距離div的左距離和上距離
 var div1 = document.getElementById("div1"); // 得到div1對象
 
 // 鼠標按下div1時
 div1.onmousedown = function(e) {
  var evnt = e || event;     // 得到鼠標事件
  disX = evnt.clientX - div1.offsetLeft; // 鼠標橫坐標 - div1的left
  disY = evnt.clientY - div1.offsetTop; // 鼠標縱坐標 - div1的top
  
  // 鼠標移動時
  document.onmousemove = function(e) {
   var evnt = e || event;
   var x = evnt.clientX - disX;
   var y = evnt.clientY - disY;
   var window_width = document.documentElement.clientWidth - div1.offsetWidth;
   var window_height = document.documentElement.clientHeight - div1.offsetHeight;
   
   x = ( x < 0 ) ? 0 : x;       // 當div1到窗口最左邊時
   x = ( x > window_width ) ? window_width : x; // 當div1到窗口最右邊時
   y = ( y < 0 ) ? 0 : y;       // 當div1到窗口最上邊時
   y = ( y > window_height ) ? window_height : y; // 當div1到窗口最下邊時
   
   div1.style.left = x + "px";
   div1.style.top = y + "px";
  };
  
  // 鼠標抬起時
  document.onmouseup = function() {
   document.onmousemove =null;
   document.onmouup = null;
  };
  
  return false;
 };
};

 當然,這個雖然支持大部分浏覽器,但是,我覺得div跟隨鼠標的速度有點滯後,如果有好的解決辦法請聯系我喔,謝謝!

以上就是js實現拖拽的實例代碼,有需要的小伙伴可以參考下,謝謝大家對本站的支持!

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved