我用mousedown,mousemove和mouseup模拟了一个元素的拖动,现在我想实现,如何判断在拖动中,a元素是否进入了b元素内。
我想知道原理,谢谢。

解决方案 »

  1.   


    这个原理跟拖动的原理很接近,关键是在 mousemove 事件中不断更新获取 a 元素的新坐标,同时判断其是否进入 b 元素的区域范围内,b 区域判断根据是 以 b 元素的左上角X,Y坐标和 b 元素的宽高共同定义的,即 b 元素的 X坐标加上 b 元素的宽度,Y 坐标加上 b 元素的高度即可得到 b 元素的区域,即如下(以下是大致的思路代码,具体写时自己看情况可能适当改变):var objB_x = objB.X坐标;
    var objB_y = objB.Y坐标;
    var rectB_width = objB_x + objB.width;
    var rectB_height = objB_y + objB.height;
    a 的坐标在 mousemove 事件中不断更新获取,如下:var objA_x=objA.X坐标;   //objA.offsetLeft or objA.style.left; //看情况取哪个方法求值自己定
    var objA_y=objA.Y坐标;   //objA.offsetTop or objA.style.top;   //看情况取哪个方法求值自己定判断 a 元素是否已经进入 b 元素的区域范围内if (objA_x > objB_x && objA_x < rectB_width && objA_y > objB_y && objA_y < rectB_height){
       alert(" a 元素已经进入 B 元素的区域范围内了。");
       //...其他操作...
    }在 mousedown 和 mouseup 事件中完成其他辅助代码自己补充上....
      

  2.   

    楼上说得很清楚了拖动就是控制坐标a元素是否进入了b元素内,就是判断坐标及宽高!你说的进入是只,b 完全包含a?
    还是,只要相交 就算进入? 规则不同,判断就不同!