您现在的位置是:首页 >技术杂谈 >解决vue pointerevent事件无法更改cursor问题 抓取图标(grab/grabbing)网站首页技术杂谈

解决vue pointerevent事件无法更改cursor问题 抓取图标(grab/grabbing)

斯幽柏雷科技 2023-05-31 16:00:03
简介解决vue pointerevent事件无法更改cursor问题 抓取图标(grab/grabbing)

vue pointerevent事件无法更改cursor问题

告诉你一个扎心的事情,Ctrl+F5就好了…
另外开F12调试工具且在双屏的副屏上也会出现这个bug…

故障重现

我想要实现一个抓取拖放的功能,鼠标按下修改指针为gragbbing状态,抬起恢复到grab
于是我大概和你一样,尝试在pointdown事件里写修改css或者style,甚至添加自定义属性利用css选择器实现,但是总有bug不更新指针…

于是我开始怀疑浏览器有问题,于是在firefox上试了好用…
我甚至都想反馈bug给chrome了…

但是无意间打开了一个别人的案例,发现居然tmd好使…
https://www.zhangxinxu.com/study/201412/cursor-grab-grabbing.html

不瞒你说,当时我就炸了
随手一个Ctrl+F5,奇迹发生了
好…用了…

<template>
        <div ref="dragBar" @pointerdown="onDragBarDown" @pointermove="onDragBarMove"
            @pointerup="onDragBarUp" @pointercancel="onDragBarUp">
        </div>
</template>
<script setup lang="ts">
import { ref, Ref, onMounted, onUnmounted } from "vue"
const dragBar: Ref<HTMLElement | undefined> = ref()

function onDragBarDown(e: PointerEvent) {
    if (dragBar.value) dragBar.value.style.cursor = "grabbing";
}
function onDragBarMove(e: PointerEvent) {
}
function onDragBarUp(e: PointerEvent) {
    if (dragBar.value) dragBar.value.style.cursor = "grab";
}


</script>
<style lang="less">
//省略...
</style>
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。