Get relative position between 2 DOM elements using JavaScript

前端 未结 3 639
天命终不由人
天命终不由人 2020-12-09 05:00

I\'ve implemented a set of draggable elements that can be dropped into some containers using jQuery. What I need is an animation that moves an element to a specific containe

相关标签:
3条回答
  • 2020-12-09 05:34

    Using pure javascript.

    var dx = obj1.offsetLeft - obj2.offsetLeft;
    var dy = obj1.offsetTop - obj2.offsetTop;
    var distance = Math.sqrt(Math.pow(dx,2) + Math.pow(dy,2));
    
    0 讨论(0)
  • 2020-12-09 05:38

    What about the following?

    var isIE = navigator.appName.indexOf("Microsoft") != -1;
    
    function getDistance(obj1, obj2){
        var obj1 = document.getElementById(obj1);
        var obj2 = document.getElementById(obj2);
        var pos1 = getRelativePos(obj1);
        var pos2 = getRelativePos(obj2);
        var dx = pos1.offsetLeft - pos2.offsetLeft;
        var dy = pos1.offsetTop - pos2.offsetTop;
        return {x:dx, y:dy};
    }
    function getRelativePos(obj){
    var pos = {offsetLeft:0,offsetTop:0};
    while(obj!=null){
        pos.offsetLeft += obj.offsetLeft;
        pos.offsetTop += obj.offsetTop;
        obj = isIE ? obj.parentElement : obj.offsetParent;
    }
    return pos;
    }
    //
    var obj = getDistance("element1","element2")
    alert(obj.x+" | "+obj.y);
    
    0 讨论(0)
  • 2020-12-09 05:46

    I never used jQuery, just looked up API, so I can assume you can do the following:

    var o1 = $(element1).offset();
    var o2 = $(element2).offset();
    var dx = o1.left - o2.left;
    var dy = o1.top - o2.top;
    var distance = Math.sqrt(dx * dx + dy * dy);
    
    0 讨论(0)
提交回复
热议问题