element 一个可拖拽的dialog,获取拖动前的弹窗距离顶部距离
时间: 2024-03-23 22:39:01 浏览: 52
根据element+vue 自定义dialog+drawer组件 弹窗+抽屉 无覆盖 + 可拖拽.7z
5星 · 资源好评率100%
如果你要获取一个可拖拽的 `dialog` 拖动前的位置,即距离页面顶部的距离,可以使用以下代码:
```javascript
var dialog = document.getElementById('your-dialog-id');
var dialogTop = getElementDistanceFromTop(dialog);
dialog.addEventListener('mousedown', function(e) {
var shiftY = e.pageY - dialogTop;
document.addEventListener('mousemove', onMouseMove);
document.addEventListener('mouseup', onMouseUp);
function onMouseMove(e) {
dialog.style.top = (e.pageY - shiftY) + 'px';
}
function onMouseUp() {
document.removeEventListener('mousemove', onMouseMove);
document.removeEventListener('mouseup', onMouseUp);
}
});
```
这个代码假设你已经有了一个可拖拽的 `dialog` 对象,并给它绑定了一个 `mousedown` 事件。当用户按下鼠标时,它会计算出鼠标相对于弹窗顶部的偏移量,并在 `mousemove` 事件中更新弹窗的位置。当用户释放鼠标时,它会移除 `mousemove` 和 `mouseup` 事件监听器。
在 `mousedown` 事件处理程序中,它首先使用 `getElementDistanceFromTop()` 函数获取弹窗距离页面顶部的距离。然后,它计算出鼠标相对于弹窗顶部的偏移量,并在 `mousemove` 事件中更新弹窗的位置。具体来说,它计算出鼠标相对于页面顶部的位置,减去弹窗顶部距离页面顶部的距离,得到鼠标相对于弹窗顶部的偏移量。然后,它把这个偏移量加到弹窗的 `top` 样式上,让弹窗随着鼠标移动。
最后,在 `mouseup` 事件处理程序中,它移除 `mousemove` 和 `mouseup` 事件监听器,结束拖拽操作。
阅读全文