canvas层级太高问题的解决办法

一、产生原因

因为canvas组件是由客户端创建的原生组件,原生组件层级是最高的,所以页面中的其他组件无论设置 z-index 为多少都无法盖在原生组件上。

二、解决方案

1.html页面的处理
加上一个判断wx:if=“{{!canvasImg}}”

<canvas
   class="canvas-code"
   canvas-id="QRcode"
   wx:if="{{!canvasImg}}"
   style="width: 240rpx; height: 240rpx;">
</canvas>
<image wx:else src="{{canvasImg}}" style="width: 240rpx; height: 240rpx;" />

2.js页面的处理
(1)data中声明一个变量canvasImg

data(){
  return {
    //canvas转化为图片的临时路径
    canvasImg:"",
  }
},

(2)新增方法:处理canvas转化为图片

// 处理canvas转化为图片
handleCanvarToImg(){
   wx.canvasToTempFilePath({
     x: 0,
     y: 0,
     width: 120,
     height: 120,
     canvasId: 'QRcode',
     success: (res) => {
        //获取图片的临时路径
        this.canvasImg = res.tempFilePath
     }
   });
},

原理:弹框出现时,canvas隐藏,image出现
(1)弹框显示,转化为image,不再进行处理,当前页面之后都以image进行显示(上面展示的是此方法相关代码)。
(2)弹框显示,转化为image,弹框消失,转化为canvas,该方法中需在弹框消失时,将canvasImg赋为null。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值