国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

JavaScript實現簡單的拖動效果

2019-11-20 09:34:13
字體:
來源:轉載
供稿:網友

拖動是一件非常酷的事情。你點擊某個對象,并按住鼠標不放,將鼠標移動到另一個區域,然后釋放鼠標按鈕將對象放在這里。
下面是一個簡單的案例:
HTML部分:注意,拖動元素一定要為絕對定義,即position = absolute;

復制代碼 代碼如下:
<div style="position:absolute;height:100px;width:100px;background:red" class="draggable"></div>
<script src="dome.js"></script>

JS部分(dome.js):

var EventUtil = {  // 獲取事件和目標  getEvent : function (event) {    return event ? event : window.event;  },  getTarget : function (event) {    return event.target || event.srcElement;  },  // 添加監聽事件  addEvent : function (element, type, handler) {    if (element.addEventListener)    {      element.addEventListener(type, handler, false);    } else if (element.attachEvent)    {      element.attachEvent("on" + type, handler);    }  },  // 注銷監聽事件  delEvent : function (element, type, handler) {    if (element.removeEventListener)    {      element.removeEventListener(type, handler, false);    } else if (element.detachEvent)    {      element.detachEvent("on" + type, handler);    }  }}var DragDrop = function () {  // 判斷DOM元素是否正在被拖動的標志  var dragging = null;  // DOM元素左上角與鼠標指針的差值    diffX = 0;    diffY = 0;  function handleEvent(event) {    event = EventUtil.getEvent(event);    var target = EventUtil.getTarget(event);    switch (event.type) {      case "mousedown" :       // 判斷DOM元素的class中是否含有draggable屬性        if (target.className.indexOf("draggable") > -1) {          dragging = target;          diffX = event.clientX - target.offsetLeft;          diffY = event.clientY - target.offsetTop;        }      break;      case "mousemove" :         if (dragging != null) {          target.style.left = event.clientX - diffX + "px";          target.style.top = event.clientY - diffY + "px";        }      break;      case "mouseup" :        dragging = null;      break;    }  }  return {    enable : function () {      EventUtil.addEvent(document, "mousedown", handleEvent);      EventUtil.addEvent(document, "mousemove", handleEvent);      EventUtil.addEvent(document, "mouseup", handleEvent);    },    disable : function () {      EventUtil.delEvent(document, "mousedown", handleEvent);      EventUtil.delEvent(document, "mousemove", handleEvent);      EventUtil.delEvent(document, "mouseup", handleEvent);    }  }}();DragDrop.enable();

這里需要講解的是diffX和diffY,它們表示元素左上角與鼠標指針的差值。
diffX = 鼠標的x坐標 - 元素對象的offsetLeft
diffY = 鼠標的y坐標 - 元素對象的offsetTop

以上就是本文的全部內容,希望對大家的學習有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 勃利县| 江西省| 双城市| 渝中区| 永城市| 沧源| 武鸣县| 成武县| 秀山| 武城县| 邛崃市| 手机| 香港 | 丹寨县| 池州市| 韩城市| 海宁市| 津市市| 温泉县| 筠连县| 大方县| 云浮市| 沙河市| 新津县| 和林格尔县| 清徐县| 沅陵县| 长岭县| 许昌县| 神农架林区| 辽源市| 万宁市| 渭南市| 叙永县| 肥西县| 永和县| 娄底市| 楚雄市| 铁岭县| 道孚县| 河北区|