月球大数据地理空间分析展示平台-【前端】-月球2期前端
surprise
2024-03-01 12075d0fa73d963ff5d6dbc4727fb95fb6084961
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
const drag = {
  mounted(el: HTMLElement) {
    let moveEl = el as HTMLElement;
 
    const mouseDown = (e: MouseEvent) => {
      //鼠标点击物体那一刻相对于物体左侧边框的距离=点击时的位置相对于浏览器最左边的距离-物体左边框相对于浏览器最左边的距离
      // console.log(e.clientX, e.clientY, "-----起始", el.offsetLeft);
      // var value = sessionStorage.getItem("setDrag");
      // if (value) return;
      if ((window as any).dragging) {
        (window as any).dragging == true;
        return;
      }
      let X = e.clientX - el.offsetLeft;
      let Y = e.clientY - el.offsetTop;
      const move = (e: MouseEvent) => {
        // 获取拖拽元素的位置
        let left = e.clientX - X;
        let top = e.clientY - Y;
 
        if (left <= 0) {
          left = 0;
        } else if (
          left >=
          document.documentElement.clientWidth - el.offsetWidth
        ) {
          left = document.documentElement.clientWidth - el.offsetWidth;
        }
 
        // if (top <= 0) {
        //   top = 0
        // } else if (top > document.documentElement.clientHeight - el.offsetHeigh) {
        //   top = document.documentElement.clientHeight - el.offsetHeight
        // }
 
        el.style.left = left + "px";
        el.style.top = top + "px";
      };
      document.addEventListener("mousemove", move);
      document.addEventListener("mouseup", () => {
        document.removeEventListener("mousemove", move);
      });
    };
    moveEl.addEventListener("mousedown", mouseDown);
  },
};
 
const directives = {
  install: function (app: any) {
    app.directive("drag", drag);
  },
};
export default directives;