u-swipe-action 解决在微信小程序(ios)中滑动过快导致按钮闪现问题—— 一行代码搞定!!!

(省流:解决方案在最后)

需求:开发一个用户可以左滑删除的订单列表,如下图

组件库:uViePlus

根据官方demo,可以很快完成

<u-swipe-action>
   <u-swipe-action-item
     v-for="item in 100"
     :key="item.id"
     :options="options1"
     :threshold="100"
     @click.stop="handleError(item.id)"
   >
      xxxx//html代码       
   </u-swipe-action-item>
</u-swipe-action>

<script lang="ts" setup>
const options1 = ref([
  {
    text: '删除',
    icon: 'xxxx.svg',
    style: {
      backgroundColor: '#F74349',
    },
  },
])
</script>

但是真机调试时发现,手机上滑时 右侧按钮会出现闪现的情况

这也太不优雅了,查看uview源码,层层排查后,发现有一行神奇的css:

根据MDN的描述:

will-change可以用于浏览器优化,但其并不是最好的优化方案,且官网也给出了说明:

 这个需求中,由于我们在u-swipe-action-item的option属性中设置了icon,在渲染的时候 u-icon会默认给img标签添加 will-change:transform:

这就导致在ios环境中,微信小程序会预渲染右侧的按钮icon,当我们滑动很快时,处理器反应不过来,就会出行闪现的情况。

那么根据官方示例,可以看出 will-change 的默认配置为 auto

所以,我们使用deep深度选择器 修改css如下:

 即可解决!!!!!!!

:deep(.u-icon__img) {
  will-change: auto !important;
}

解决后的效果图:

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值