VueJS有时拖动元素会导致它粘在鼠标指针上

w41d8nur  于 2022-11-25  发布在  Vue.js
关注(0)|答案(1)|浏览(282)

我有一个div(它包含一个缩放iFrame),我想在屏幕上移动它。但是...有时如果用户用鼠标不平稳,它会粘在指针上,唯一的方法就是刷新页面。
这是其他人经历过的事情吗?你是如何解决的?
我可以想象这与我的Javascript部分以及我如何监听一些事件有关。
编辑:想补充一下,下面的代码基本上是根据本文中的Vue进行调整的:https://javascript.info/mouse-drag-and-drop
提前感谢!
于飞:

<div
  class="zoom-wrapper"
  ref="draggableContainer"
>
  <div
    @mousedown="dragMouseDown"
    ref="grabBar"
  </div>
</div>

Javascript语言

dragMouseDown(event) {
                event.preventDefault();
                const { draggableContainer, grabBar } = this.$refs;

                let shiftX = event.clientX - draggableContainer.getBoundingClientRect().left;
                let shiftY = event.clientY - draggableContainer.getBoundingClientRect().top;

                draggableContainer.style.position = 'absolute';
                draggableContainer.style.zIndex = 1000;

                moveAt(event.pageX, event.pageY);

                function moveAt(pageX, pageY) {
                    draggableContainer.style.left = pageX - shiftX + 'px';
                    draggableContainer.style.top = pageY - shiftY + 'px';
                }

                function onMouseMove(event) {
                    moveAt(event.pageX, event.pageY);
                }

                window.addEventListener('mousemove', onMouseMove);

                window.onmouseup = function () {
                    window.removeEventListener('mousemove', onMouseMove);
                    grabBar.removeEventListener('mousedown', this.dragMouseDown);
                    window.onmouseup = null;
                };
            },
pu82cl6c

pu82cl6c1#

这是一个通过点击移动元素的演示。
我认为目前您的错误在于您希望如何删除mousedown上的eventlistener
我希望这个演示能给予你一个如何解决问题的提示。
第一个

相关问题