国产探花免费观看_亚洲丰满少妇自慰呻吟_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

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 连云港市| 收藏| 乐清市| 武穴市| 阿克陶县| 南漳县| 三台县| 大足县| 安吉县| 克东县| 浦县| 旬邑县| 客服| 海阳市| 盐亭县| 固始县| 四会市| 来凤县| 玛多县| 中西区| 绵竹市| 渝北区| 兴山县| 临漳县| 四会市| 察雅县| 耒阳市| 苍梧县| 特克斯县| 新绛县| 合山市| 弥勒县| 衡水市| 阳江市| 温宿县| 利川市| 沂南县| 酉阳| 天门市| 商洛市| 沭阳县|