当前位置: 首页 > news >正文

记一次奇葩的错误,uniapp @tap点击失效

先说问题原因,css 中使用了卡片翻转效果,backface-visibility: hidden; 这行导致正面元素能看到,但是点击失效了。移除掉这行就好了。

异常说明

下面这段uniapp代码在微信小程序的ios环境能够正常触发tap事件,但是到了安卓没有任何反应,也没报错。

排查过程

(z-index) 首先可能是元素层级导致

很多因为这个的原因但是我遇到的不是。当时代码中元素层级很复杂,排查层级这一步废了很多时间。

事件传递原因

我的组件最外层盒子有注册@touchstart @touchmove @touchend ,有让我在内层tap加 stop 阻止事件传递。试了没效果

解决

结论就是因为使用了3d盒子,然后安卓和ios机制不一样,ios可以触发安卓无法触发。
backface-visibility: hidden;
把这行移动到背面的盒子上,解决!

css真是高深,玩不明白。

伪代码


<view class="card-swiper"><view class="card-swiper-item"><view class="card"><view class="card-box-base-sty">// fun1有效 , fun2无效 (当时排查头发扣完都没想明白!)<view @tap="fun1(item)" class="image-card-btn share-btn">按钮2</view><view @tap="fun2(item)" class="image-card-btn share-btn">按钮2</view></view><view class=" card-box-base-sty card-box-back">....省略</view></view></view>
</view>// style.card {position: relative;width: 70%;height: auto;transform-style: preserve-3d;/* 给卡片添加默认动画 */animation: 1s cubic-bezier(0.66, -0.47, 0.33, 1.5) forwards;animation-name: rotate-reverse;}.card-swiper {position: relative;z-index: 2;left: 0;top: 0;width: 100%;height: 100%;display: flex;flex-direction: row;transition: transform 0.5s ease;/* 保证删除时的平滑重排 */will-change: transform;backface-visibility: hidden;}.card-swiper-item {flex: none;width: 100%;display: flex;align-items: center;justify-content: center;perspective: 1000px;}// 卡片正面.card-box-base-sty {position: relative;width: 100%;height: 100%;overflow: hidden;border-radius: var(--border-radius);padding: 0;transition: all 0.5s ease;border: 12rpx solid var(--color);box-sizing: border-box;backface-visibility: hidden; // 注意这行 - 罪魁祸首!}// 卡片背面.card-box-back {position: absolute;top: 0;left: 0;width: 100%;height: 100%;transform: rotateY(180deg);display: flex;align-items: center;justify-content: center;z-index: 5;backface-visibility: hidden; }

相关文章:

  • Rust 学习笔记:生命周期
  • uniapp使用sse连接后端,接收后端推过来的消息
  • 深入掌握Node.js HTTP模块:从开始到放弃
  • 在uni-app中修改上一个页面的值,可以通过多种方式实现,这里提供几种常见的方法:
  • 解决 IntelliJ IDEA 配置文件中文被转义问题
  • 杰发科技AC7840——CSE硬件加密模块使用(1)
  • idea添加jar包
  • Ubuntu24.04 LTS安装java8、mysql8.0
  • Android --- CopyOnWriteArrayList 的使用场景及讲解
  • 【全解析】EN 18031标准下的TCM流量控制机制
  • 大数据 笔记
  • 向量数据库及ChromaDB的使用
  • MySQL 索引失效及其解决办法
  • MySQL 可观测性最佳实践
  • Redis 中如何保证缓存与数据库的数据一致性?
  • 深入解析Spring Boot与Redis集成:高效缓存与性能优化
  • 146.LRU缓存-图解LRU
  • 点云(point cloud):自动驾驶的“三维扫描图“
  • 使用web3工具结合fiscobcos网络部署调用智能合约
  • 相机标定与图像处理涉及的核心坐标系
  • 网站添加留言板功能/谷歌优化工具
  • 如何做独立网站/网站收录查询方法
  • 合肥有多少建网站公司/谷歌浏览器手机版
  • 南京做网站设计/网络推广网站的方法
  • 高清图片素材网站免费/百度秒收录
  • 张家港网站制作建议/网站优化排名软件