js拖拽

假設(shè)我們把物體1 拖拽到物體2 的地方,此刻可以知道拖拽的步驟是:先鼠標(biāo)左鍵點(diǎn)到物體1 然后移動(dòng)到物體2的地方,松開(kāi)左鍵,完成拖拽
當(dāng)點(diǎn)擊的時(shí)候,可以通過(guò)事件源e.pagaX或者e.pageY獲取到鼠標(biāo)點(diǎn)擊的位置,然后通過(guò)腳本化css可以獲取到物體距離邊界的top值和left值。假設(shè)物體1的深藍(lán)線條點(diǎn)擊處距離物體上邊界disY,距離物體左邊界為disX,即:disX = e.pageX - box.offsetLeft、disY = e.pageY - box.offsetTop。
上面知道了鼠標(biāo)點(diǎn)擊位置距離物體上\左邊界的距離大小,當(dāng)移動(dòng)的時(shí)候就必須要重新計(jì)算物體的top值和left值。即:box.style.left = e.pageX - disX + 'px'; box.style.top = e.pageY - disY + 'px';。這樣物體就跟著你的鼠標(biāo)移動(dòng)了。
代碼入下:

        var box = document.getElementById("box"),
        wrapper = document.getElementById('wrapper');

    function bindEvent(box, wrapper) {
        var X,
            Y,
            boxL,
            boxT,
            disL,
            disT,
            drag = false;
        box.onmousedown = function (e) {
            drag = true;
            var e = e || window.event;
            X = e.pageX;
            Y = e.pageY;
            boxT = box.offsetTop;
            boxL = box.offsetLeft;
            disT = Y - boxT;
            disL = X - boxL;
        }
        wrapper.onmousemove = function (e) {
            var e = e || window.event;
            if (drag) {
                box.style.left = e.pageX - disL + 'px';
                box.style.top = e.pageY - disT + 'px';
            }
        }
        box.onmouseup = function () {
            drag = false;
        }
    }
    bindEvent(box, wrapper);
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 標(biāo)題為啥寫vue呢?原因我的這個(gè)功能是在vue的項(xiàng)目里面的,然而實(shí)際上是用js實(shí)現(xiàn)的,與vue并無(wú)太大的關(guān)系。 如...
    你猜_3214閱讀 1,405評(píng)論 0 1
  • //獲取到box元素 var box = document.querySelector('.box'); ...
    別來(lái)無(wú)恙_ly閱讀 516評(píng)論 0 1
  • 前言 本文依據(jù)半年前本人的分享《淺談js拖拽》撰寫,算是一篇遲到的文章。 基本思路 雖然現(xiàn)在關(guān)于拖拽的組件庫(kù)到處都...
    lanberts閱讀 2,930評(píng)論 0 0
  • *{margin: 0;padding: 0;} body,ul,li{margin:0;padding:0;...
    岳小弟閱讀 1,539評(píng)論 0 0
  • 1.“工欲善其事必先利其器”時(shí)間管理工具的重要性 2.管理時(shí)間就是管理事件 3.運(yùn)用手機(jī)為主,紙筆為短期中期(隨身...
    Lulugwh閱讀 180評(píng)論 0 0

友情鏈接更多精彩內(nèi)容