1. window.onload = function () {
    2. // drag处于绝对定位状态
    3. let drag = document.getElementById('box')
    4. drag.onmousedown = function(e) {
    5. var e = e || window.event
    6. // 鼠标与拖拽元素边界的距离 = 鼠标与可视区边界的距离 - 拖拽元素与边界的距离
    7. let diffX = e.clientX - drag.offsetLeft
    8. let diffY = e.clientY - drag.offsetTop
    9. drag.onmousemove = function (e) {
    10. // 拖拽元素移动的距离 = 鼠标与可视区边界的距离 - 鼠标与拖拽元素边界的距离
    11. let left = e.clientX - diffX
    12. let top = e.clientY - diffY
    13. // 避免拖拽出可视区
    14. if (left < 0) {
    15. left = 0
    16. } else if (left > window.innerWidth - drag.offsetWidth) {
    17. left = window.innerWidth - drag.offsetWidth
    18. }
    19. if (top < 0) {
    20. top = 0
    21. } else if (top > window.innerHeight - drag.offsetHeight) {
    22. top = window.innerHeight - drag.offsetHeight
    23. }
    24. drag.style.left = left + 'px'
    25. drag.style.top = top + 'px'
    26. }
    27. drag.onmouseup = function (e) {
    28. this.onmousemove = null
    29. this.onmouseup = null
    30. }
    31. }
    32. }