小程序解决canvas层级太高

在开发小程序并使用ECharts绘制图表时遇到了canvas层级问题,导致图表被tab栏遮挡。本文提供两种解决方案:1) 将canvas转为图片,但会失去交互性;2) 使用cover-view和cover-image实现自定义Tab栏,有效提高层级。
摘要由CSDN通过智能技术生成


最近在开发小程序,里面有很多图表界面,这才知道小程序canvas的坑。使用echarts在小程序上绘制图表,自定义的tab栏层级不够,页面向上滚动的时候图表在tab栏上面,并且canvas层级比调试框还高。本文介绍两种解决这种问题的方案。

一、问题的出现

canvas层级太高导致自定义Tab栏被遮挡

二、解决方法

1.将canvas保存成图片,这个方案比较好实现,但是由于图表保存成了图片就无法响应点击事件,效果不好。

JS代码如下:

// 'mychart-dom-pie' ec-canvas的id
 const ecComponent = this.selectComponent('#mychart-dom-pie');
    ecComponent.canvasToTempFilePath({
      success: res => {
        console.log("tempFilePath:", res.tempFilePath)
		var path = res.tempFilePath
		//将图片设置到image上就可以了
      },
      fail: res => console.log(res)
    });

WXML代码如下:

<view class="container">
  <ec-canvas id="mychart-dom-pie" canvas-id="mychart-pie" ec="{{ ec }}"></ec-canvas>

</view>

WXSS代码如下:

ec-canvas {
  width: 300px;
  height: 300px;
}


2.自定义Tab栏使用cover-view、cover-image实现(推荐)

WXML代码:

<cover-view class="top-tab1 flex-wrp flex-tab">
  <cover-view class="tab" wx:for="{{navTab}}" wx:for-index="idx"
      wx:for-item="itemName" data-idx="{{idx}}" bindtap="switchTab">
    <cover-view class="tab-item" >
      {{itemName}}
    </cover-view>
    <cover-image hidden="{{currentNavtab!=idx}}" src="/images/blue_line.png" class="blue_line">
    </cover-image>
  </cover-view>
  <cover-view class="gray_line">

  </cover-view>
</cover-view>

三、总结

cover-view和cover-image应该是小程序里层级最高的控件了,结合使用可以完美解决canvas层级太高的问题。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值