You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何设置光标样式,避免Vue元素中键点击时变为滚动光标?

解决Vue中中键点击后光标变滚动样式的问题

嘿,这个问题我之前也碰到过!核心原因就是Chrome默认把中键点击绑定了“自动滚动”功能,触发这个默认行为时会强制替换光标样式,哪怕你提前设了cursor: pointer也没用。下面给你两个靠谱的解决办法:

方法一:在事件里阻止浏览器默认行为

Vue的.prevent修饰符对中键的默认行为不太管用,所以得手动在事件处理函数里调用event.preventDefault(),直接掐掉自动滚动的触发:

<template>
  <div 
    style="cursor: pointer;" 
    @click.middle="handleMiddleClick"
  >
    点我试试中键
  </div>
</template>

<script setup>
const handleMiddleClick = (event) => {
  // 阻止自动滚动的默认行为
  event.preventDefault();
  // 这里写你的业务逻辑
  console.log("中键点击触发啦!");
};
</script>

这么做之后,Chrome就不会启动自动滚动,光标会一直保持你设置的指针样式,完美解决问题。

方法二:加CSS增强兼容性(可选)

要是担心其他浏览器也有类似的默认样式冲突,可以给目标元素加个CSS类,强制锁定光标样式:

<template>
  <div 
    class="middle-click-target"
    @click.middle="handleMiddleClick"
  >
    点我试试中键
  </div>
</template>

<style scoped>
.middle-click-target {
  cursor: pointer;
  /* 优先级不够的话可以加!important,不过尽量优先用选择器权重提升 */
  /* cursor: pointer !important; */
}
</style>

<script setup>
const handleMiddleClick = (event) => {
  event.preventDefault();
  console.log("中键点击触发啦!");
};
</script>

这里的!important是兜底方案,要是你的选择器权重足够(比如用类选择器+元素选择器),其实不用加也能生效。

补充说明

为啥会出现这个情况?因为Chrome中中键点击的默认优先级很高,浏览器先执行了自动滚动的行为,替换了光标样式,才轮到你的自定义事件触发。所以只要用event.preventDefault()阻止这个默认行为,就能让你的光标样式保持原样啦。

内容的提问来源于stack exchange,提问作者Mertcan Çüçen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 13:37:52