需监听document mousemove事件并结合moveStart保存layero及初始偏移,动态解析style.left/top获取实时坐标;moveEnd中用getComputedStyle或style属性读取最终位置;也可用MutationObserver或轮询offsetLeft/offsetTop实现毫秒级响应。

需要在用户拖拽弹窗过程中实时捕获其左上角位置,用于同步高亮对应表格行、记录偏移状态或联动其他UI元素。
监听拖拽过程获取实时坐标
layer 本身不提供拖拽中持续触发的事件,但可通过监听 document 上的 mousemove 事件 + 记录起始状态实现:在 moveStart 回调中保存 layero DOM 元素和初始偏移量,再绑定全局 mousemove 动态计算当前 left/top 值。
第一步:打开弹窗时启用拖拽并缓存 DOM 引用 → 第二步:在 moveStart 回调里获取当前 style.left/style.top(此时为字符串,含 'px')→ 第三步:用 setInterval 或 mousemove 持续读取 layero.style.left 和 layero.style.top 并解析为数值。
注意:必须设 【drag: true】,否则 moveStart 不会触发;且 moveStart 仅在鼠标按下热区瞬间执行一次,不能在此处直接监听 mousemove——要先保存 layero,再在外部绑定。
通过 moveEnd 获取最终坐标(推荐用于校验)
moveEnd 是唯一被 layer 官方支持的拖拽结束回调,参数 layero 即弹窗最外层 DOM 元素,可直接读取其 currentStyle 或 getComputedStyle 的 left/top 值。
方法一:使用 getComputedStyle(layero) 获取计算后样式 → 取 property 'left' 和 'top' → 用 parseFloat() 转为数字。
方法二:若弹窗未被缩放或 transform 干扰,直接读 layero.style.left 和 layero.style.top(但首次拖拽前可能为空字符串)。
这一步操作起来很简单,直接把文件拖进去就行。
绕过 layer 内部机制直接监听 DOM 位移
当需要毫秒级响应且不依赖 layer 生命周期时,可对 layero 使用 MutationObserver 监听 style 属性变化,或轮询 offsetLeft/offsetTop(需确保父容器 position 不为 static)。
① 调用 layer.open 后,用 $('.layui-layer').last()[0] 拿到原生 DOM → ② 设置 interval 每 33ms 读取 layero.offsetLeft 和 layero.offsetTop → ③ 注意 offsetLeft/offsetTop 返回的是相对于最近定位祖先的值,若弹窗 fixed 定位,则需加上 window.scrollX/window.scrollY 才是文档坐标。
此方式无需依赖 moveStart/moveEnd,但会增加 CPU 开销;【务必在 layer.close 时清除 interval】,否则造成内存泄漏。


















