上文描述了拖拽标签的场景,本文详述标签移动过程中的定位,以及拖拽前后落位区域的情况。
在鼠标点击->拖动->抬起的过程中,在不同时机均调用了isLocatedToWhere方法,该方法会返回目前被拖拽标签的位置。其基本原理是通过fallInDiv方法由外向内查找各个div容器,判断当前被移动元素的坐标中心点是否落入当前容器内。isLocatedToWhere最终返回一个代表位置的结构如{firestLevel: 1, secondLevel: 1, [thirdLevel: 2]},索引从1开始,
根据不同场景决定需要前两层位置或者也需要第三层位置
下图演示了isLocatedToWhere方法判断位置的逻辑。红框代表的是第一层级,如图’广州’处于第一个逻辑块内,firstLevel: 1;黄框代表第二个层级,'广州’依然处于第一个逻辑块内,secondLevel: 1;蓝框代表第三个层级,'广州’是第二个逻辑块,thirdLevel: 2
1. 移动过程中,触发相应区域高亮
mousemove过程中,调用isLoatedToWhere方法检测目前经过的区域,当拖拽的元素经过时,高亮对应区域,通过改变border样式高亮,此场景只需要firstLevel和secondLe