美文网首页
前端手动实现拖拽移动并在边界不被遮挡

前端手动实现拖拽移动并在边界不被遮挡

作者: 杉虎 | 来源:发表于2019-11-25 15:13 被阅读0次
//clickId为点击的元素id,moveId为移动的元素id
function setMove(clickId,moveId) {
    const elClick = document.getElementById(clickId);
    const elMove = document.getElementById(moveId);
    elClick.onmousedown = function (ev) {
        var event = window.event || ev;
        // 获取屏幕中可视化的宽高的坐标
        var dx = event.clientX - elMove.offsetLeft; 
        var dy = event.clientY - elMove.offsetTop;
        const boxWidth = elMove.offsetWidth;
        const boxHeight = elMove.offsetHeight;
        //实时改变目标元素chatTab的位置
        document.onmousemove = function (ev) {
            var event = window.event || ev;
            var _x = ev.clientX - dx;
            var _y = ev.clientY - dy;
            if(_x < 0) {
                _x = 0;
            }
            if (_x > document.documentElement.clientWidth - boxWidth) {
                _x = document.documentElement.clientWidth - boxWidth;
            }
            if (_y < 0) {
                _y = 0;
            }
            if (_y > document.documentElement.clientHeight - boxHeight) {
                _y = document.documentElement.clientHeight - boxHeight;
            }
            elMove.style.left = _x + 'px';
            elMove.style.top = _y + 'px';
        }
        //抬起停止拖动
        document.onmouseup = function () {
            isMouseUp = true;
            document.onmousemove = null;
            document.onmouseup = null;
            stopPropagation(event);
        }
    }
}

相关文章

  • 前端手动实现拖拽移动并在边界不被遮挡

  • js实现拖拽

    ①鼠标按下+鼠标移动 → 拖拽②鼠标松开 → 无拖拽③鼠标偏移 → 拖拽距离 js实现 ① onmousedown...

  • ElementUI实现Dialog弹窗拖拽,禁止拖出屏幕,移动,

    完美版: 可以实现拖拽移动位置,水平垂直缩放,对角线缩放 ,禁止拖出屏幕 yyds! 关注点赞使用哟,持续更新前端...

  • Unity2D垃圾分类小游戏

    通过拖拽实例化的垃圾到制定的垃圾桶里,实现游戏逻辑。Unity实现对UI的拖拽。移动。

  • 可拖拽GridView代码解析

    分为三步来说明拖拽是怎么实现的。 1)如何让拖拽的Item来随着手指的移动而移动。 2)拖拽过程中相关item的移...

  • 数据透视表-排序

    1.手动排序 拖拽 移动:选中内容,右键选择移动 2.自动排序 选择部门->其他排序 3.自定义排序 文件->高级...

  • Player移动控制2

    通过另外一种方式实现Player的移动控制: 通过EventSystems实现屏幕上的手指拖拽,实时记录手指移动的...

  • 前端工具

    基于 Electron 的前端文件处理工具 一键拖拽并在当前目录下生成处理后的文件,处理零碎的前端文件从未如此轻松...

  • js拖拽自动排列

    上一次写了拖拽,其实主要还是想实现拖拽之后实现自动排列,跟手机屏幕那样移动图标可以自动排列,先看效果: 很常见的一...

  • 拖拽,碰撞检测

    1. 拖拽 1.1 拖拽原理 鼠标拖拽效果的实现,就是在鼠标摁下和移动的时候,修改元素的定位值的效果。 1.1.1...

网友评论

      本文标题:前端手动实现拖拽移动并在边界不被遮挡

      本文链接:https://www.haomeiwen.com/subject/hlqjwctx.html