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

JavaScript中mouseleave事件触发时仅保留dpkCursor类移除其余类的最佳方案

解决方法

核心思路是不出现类名空窗期,直接过滤保留需要的dpkCursor类,移除其余所有类,避免触发不必要的样式重绘导致闪烁。

方案1:遍历classList逐个移除(兼容性最好,逻辑清晰)

function resetCursor() {
  Array.from(dpkCursor.classList).forEach(className => {
    if (className !== 'dpkCursor') {
      dpkCursor.classList.remove(className)
    }
  })
}

优势:

  • 全程不会清空类名,没有样式断层的时间点,完全避免闪烁
  • 不需要提前知晓其他动态添加的类名,适配所有后续新增的额外类场景
  • 兼容所有支持classList的浏览器,无额外依赖

方案2:直接改写className为过滤后结果(写法更简洁)

function resetCursor() {
  dpkCursor.className = Array.from(dpkCursor.classList)
    .filter(className => className === 'dpkCursor')
    .join(' ')
}

优势:

  • 代码更精简,仅一次DOM属性赋值操作
  • 同样不存在类名空窗期,不会触发闪烁

注:你原有代码里dpkCursor.classList.add(dpkCursor)属于错误写法,add方法需要传入字符串类型的类名,你传入了DOM元素对象,本身就会导致类名添加失败。

内容的提问来源于stack exchange,提问作者Dpk

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 13:09:03