首页 前端知识 echarts层级过高遮挡其他组件问题

echarts层级过高遮挡其他组件问题

2024-06-06 10:06:23 前端知识 前端哥 510 70 我要收藏

echarts层级过高问题,遮挡其他组件

问题:小程序中echarts因为小程序原生的canvas层级太高,而导致弹窗这类dom元素无法遮挡住canvas,如下图;
在这里插入图片描述
解决方案1:(wx:if控制dom显隐,显示canvas就重新渲染echarts,简单粗暴,但是耗费性能):

第一步:wxml:

<!-- echarts饼图——用wx:if控制dom显隐,hidden没办法隐藏 -->
<ec-canvas id="storeChart" canvas-id="storeChart" ec="{{ pieChart }}" wx:if="{{!showDate}}"></ec-canvas>
 
<!-- vant的日期选择控件——弹出日期控件就隐藏echarts,关闭日期控件就重新渲染echarts -->
<view class="calendar">
    <van-calendar show="{{ showDate }}" color="#ff4366" type="range" bind:close="onClose" bind:confirm="onConfirm" min-date="{{ minDate }}"
  max-date="{{ maxDate }}" allow-same-day/>
</view>

第二步:js

Page({
 
  /**
   * 页面的初始数据
   */
  data: {
    showDate: false, // 饼图、日期 显隐
    //饼图
    pieChart: {
      lazyLoad: true // 延迟加载
    },
    pieData: {
      data: [{
        value: 10,
        name: '杭州'
      }, {
        value: 20,
        name: '广州'
      }, {
        value: 38,
        name: '上海'
      }]
    },
  },
 
  // 显示日期
  onDisplay() {
    this.setData({
      showDate: true,
    });
  },
  // 关闭日期
  onClose() {
    this.setData({
      showDate: false,
    });
    //dom节点出现需要时间,延迟一下重新渲染饼图
    setTimeout(()=>{
    this.pieEchartsComponnet = this.selectComponent('#storeChart'); //获取饼图dom
    this.pieChart() // 饼图初始化
    },0)
  },
})

解决方案2:(hidden控制dom显隐,比较推荐,不会销毁dom重新渲染):
第一步:wxml

<view hidden="{{!echartsShow}}" style="height:500rpx;width:100%">
    <ec-canvas id="chart" canvas-id="chart" ec="{{ chartsEc }}" force-use-old-canvas="true"></ec-canvas>
</view>

第二步:js(同方案1 )

转载请注明出处或者链接地址:https://www.qianduange.cn//article/11046.html
标签
评论
发布的文章
大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!