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

首頁 > 開發 > JS > 正文

自己封裝的一個原生JS拖動方法(推薦)

2024-05-06 16:33:02
字體:
來源:轉載
供稿:網友

代碼:

function drag(t,p){  var point = p || null,    target = t || null,    resultX = 0,    resultY = 0;  (!point)? point = target : ''; //如果沒有拖動點,則拖動點默認為整個別拖動元素  function getPos(t){    var offsetLeft = 0,      offsetTop = 0,      offsetParent = t;    while(offsetParent){      offsetLeft+=offsetParent.offsetLeft;      offsetTop+=offsetParent.offsetTop;      offsetParent = offsetParent.offsetParent;    }    return {'top':offsetTop,'left':offsetLeft};  }  function core(){    var width = document.body.clientWidth || document.documentElement.clientWidth,      height = document.body.clientHeight || document.documentElement.clientHeight;       maxWidth = width - target.offsetWidth,      maxHeight = height - target.offsetHeight;    (resultX >= maxWidth)? target.style.left = maxWidth+'px' : (resultX > 0)?target.style.left = resultX +'px': ''; //重置默認位置。    (resultY >= maxHeight)?  target.style.top = maxHeight +'px' : (resultY > 0)?target.style.top = resultY +'px':''; //重置默認位置。    point.onmousedown=function(e){        var e = e || window.event,        coordX = e.clientX,        coordY = e.clientY,        posX = getPos(target).left,        posY = getPos(target).top;      point.setCapture && point.setCapture();  //將Mouse事件鎖定到指定元素上。      document.onmousemove=function(e){        var ev = e || window.event,          moveX = ev.clientX,          moveY = ev.clientY;        resultX = moveX - (coordX - posX); //結果值是坐標點減去被拖動元素距離瀏覽器左側的邊距        resultY = moveY - (coordY - posY);        (resultX > 0 )?((resultX < maxWidth)?target.style.left = resultX+'px' : target.style.left = maxWidth+'px') : target.style.left = '0px';         (resultY > 0 )?((resultY < maxHeight)?target.style.top = resultY+'px' : target.style.top = maxHeight+'px') : target.style.top = '0px';         ev.stopPropagation && ev.stopPropagation();         ev.preventDefault;        ev.returnValue = false;        ev.cancelBubble = true;      };    };    document.onmouseup=function(){  // 解決拖動時,當鼠標指向的DOM對象非拖動點元素時,無法觸發拖動點的onmousedown的BUG。      document.onmousemove = null;        point.releaseCapture && point.releaseCapture();  // 將Mouse事件從指定元素上移除。    };    point.onmouseup=function(e){      var e = e || window.event;      document.onmousemove = null;      point.releaseCapture && point.releaseCapture();    };  }  core();  window.onresize = core;  }

使用方式:

drag(t,p)/*  * 說明  * t 表示被拖動的元素 * p 表示拖動點*/// 注意:如果省略拖動點,默認可拖動的區域是整個被拖動元素

以上就是小編為大家帶來的自己封裝的一個原生JS拖動方法(推薦)全部內容了,希望大家多多支持VeVb武林網~


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 吉木乃县| 策勒县| 桃江县| 米泉市| 根河市| 拉孜县| 祁东县| 买车| 兰考县| 玉龙| 大新县| 葵青区| 读书| 卫辉市| 武乡县| 上虞市| 陈巴尔虎旗| 吉林省| 马公市| 迁西县| 赤城县| 皮山县| 漳平市| 青田县| 三亚市| 桓仁| 靖安县| 樟树市| 醴陵市| 新巴尔虎左旗| 调兵山市| 那坡县| 清水县| 贵德县| 清丰县| 蒙自县| 奇台县| 麻江县| 龙里县| 平潭县| 土默特右旗|