echarts图表与tab页连用时图表不显示问题

当echarts图表置于多标签页时,由于初始隐藏导致无法获取容器尺寸,从而可能绘制失败。解决方案是在切换到相应标签页时调用resize方法,或在图表配置中设定固定尺寸。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有时候图表会放在多个标签页里,那些初始隐藏的标签在初始化图表的时候因为获取不到容器的实际高宽,可能会绘制失败,因此在切换到该标签页时需要手动调用 resize 方法获取正确的高宽并且刷新画布,或者在 opts 中显示指定图表高宽。
 <div class="layui-tab-item layui-show">
   <div class="layui-tab" lay-filter="twoTabs">
        <span>来源:</span>
        <ul class="layui-inline layui-tab-title" style="border-bottom:none !important;">
            <li lay-id="11" class=" selectstate layui-this">1</li>
            <li lay-id="22" class="selectstate ">2</li>
            <li lay-id="33" class="selectstate">3</li>
            <li lay-id="44" class="selectstate">4</li>
        </ul>
        <div class="layui-tab-content content">
            <!-------1的内容-------->
            <div class="layui-tab-item layui-show">
                <div id="all" style="height:400px;"></div>
            </div>
            <!-------2的内容--------------->
            <div class="layui-tab-item ">
                <div id="ipReputation" style="height:400px;"></div>
            </div>
            <!-------3的内容--------------->
            <div class="layui-tab-item">
                <div id="fileReputation" style="height:400px;"></div>
            </div>
            <!-------4的内容--------------->
            <div class="layui-tab-item">
                <div id="test" style="height:400px;"></div>
            </div>
        </div>
    </div>
</div>

图标的配置略

<script>
 var myChart= echarts.init(document.getElementById('all'));
var option = {

    tooltip: {
        trigger: 'axis',
        axisPointer: {
            type: 'shadow'
        }
    },
    legend: {
        top:'bottom',
        data: ['上周', '当前周']

    },
    grid: {
        left: '5%',
        top:'1%',
        // right: '40%',
        bottom: '10%',
        containLabel: true
    },
    xAxis: {
        type: 'value',
        boundaryGap: [0, 0.01]
    },
    yAxis: {
        type: 'category',
        data: ['172.10.10.110','172.10.10.111','172.10.10.112','172.10.10.113','172.10.10.114','172.10.10.115','172.10.10.116','172.10.10.117','172.10.10.118','172.10.10.119']
    },
    series: [
        {
            name: '上周',
            type: 'bar',
            data: [50, 80, 60, 70, 95, 105,120,156,210,56]
        },

        {
            name: '当前周',
            type: 'bar',
            data: [50, 80, 60, 70, 95, 105,120,156,210,56]
        }
    ]
};
myChart.setOption(option);
//其余echarts具体配置就不详写了
//现象就是默认首页显示的图表会正常显示,但一切换到其它页面,除了首页,其他图标都不显示,原因就是获取不到当前父级容器的宽高
//关键一步resize()
 element.on('tab(twoTabs)', function(elem){
            //切换tab页,获取正确的宽高并刷新画布
            myChart.resize();
          
        });
</script>

以上纯属个人见解,如有错误,欢迎指出!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值