uni-app 小程序使用animation动画时,在动画执行期间点击事件无响应,iOS

uni-app 小程序使用animation动画时,在动画执行期间点击事件无响应,iOS

2 回复

demo能贴一下么

更多关于uni-app 小程序使用animation动画时,在动画执行期间点击事件无响应,iOS的实战教程也可以访问 https://www.itying.com/category-93-b0.html


在 uni-app 小程序中,iOS 设备上动画执行期间点击事件无响应,通常是由于 CSS 动画或 animation 属性触发了硬件加速,导致渲染层与事件层分离。以下是解决方案:

  1. 使用 transform 替代 animation
    将动画改为 transform 实现,例如使用 translatescale 等属性,可减少事件阻塞。

  2. 调整 animation 属性
    避免使用 animation-fill-mode: bothforwards,这些属性可能导致元素保持动画结束状态,影响事件响应。可尝试改为 none

  3. 添加 pointer-events 控制
    在动画执行期间,通过动态类名控制 pointer-events

    .animating {
      pointer-events: none;
    }
    .animating-end {
      pointer-events: auto;
    }
    

    动画开始时添加 animating 类,结束时切换为 animating-end

  4. 使用 uni.createAnimation() API
    改用 uni-app 提供的动画 API,通过 JavaScript 控制动画,避免 CSS 动画的兼容性问题:

    const animation = uni.createAnimation({
      duration: 500,
      timingFunction: 'ease'
    })
    animation.translateX(100).step()
    this.animationData = animation.export()
    
  5. 检查 z-index 层级
    确保动画元素未被其他元素覆盖,调整 z-index 确保可点击区域在前景。

  6. iOS 特定修复
    为动画元素添加以下 CSS 属性,强制触发 GPU 渲染并优化事件处理:

    -webkit-transform: translateZ(0);
    transform: translateZ(0);
回到顶部