tab切换echarts无法正常显示

    技术2022-07-21  86

    https://blog.csdn.net/cjs68/article/details/78072382

     

    tab切换时候,第一个图正常显示,第二个及之后的图无法正常显示。 问题是这样的,用了两个tab切换,每个tab里面加载一个echarts图表,div的大小是百分比设置的,结果第一个echarts可以正常显示出来,第二个echarts被严重压缩了。 查看了一下网页布局,发现div是有大小的,但是里面加载的echarts宽高都是0,这可能就是echarts显示过小的原因。 有以下三个解决办法:

    将div的宽高设置成固定值,比如style=”width:500px;height:500px”,这时候echarts有了明确的大小时候就可以正常显示出来了。(不过这个方法还是不好,固定值的高宽无法自适应网页大小啊) 在点击第二个tab的时候获取父div的宽和高,将具体的宽和高赋值给echarts,如何在这个方法里面初始化echarts,而不要再加载网页的时候就初始化。 具体的代码如下: <ul id="myTab" class="nav nav-tabs">     <li class="active">         <a href="#chart1" data-toggle="tab">tab1</a>     </li>     <li>         <a href="#chart2" data-toggle="tab" οnclick="javascript:chartresize()">tab2</a>     </li>     <div class="tab-content">         <div class="tab-pane fade in active" id="chart1" style="width=100%;height=100%"></div>         <div class="tab-pane fade" id="chart2"></div>     </div> </ul> 1 2 3 4 5 6 7 8 9 10 11 12 13 chartresize()方法如下:

    function chartresize(){     console.log("chartresize");     var temp = new initchart();     temp.resize(); } 1 2 3 4 5 初始化echarts的方法如下:

    var initchart = function(){     var chart2 = echarts.init(document.getElementById('chart2'));     var chart2_option={         series: [             {                 type: 'pie',                 radius: '55%',                 center: ['50%', '50%'],                 data:[                     {value:10, name: 'pie1'},                     {value:20, name: 'pie2'},                     {value:10, name: 'pie3'},                 ]             }         ]     }     chart2.setOption(chart2_option);     $(function(){         window.onresize = function(){             chart2.resize();         }     })     this.resize = function size(){         var chart2div=document.getElementById('chart2');         var tabcontent = document.getElementById('tab-content');         width=tabcontent.offsetWidth;         height=tabcontent.offsetHeight;         chart2div.style.width=width+'px';         chart2div.style.height=height+'px';         chart2.resize(width,height);     } } 这样每次在点击第二个tab的时候就会重新加载下chart2了,就不会出现chart过小的问题。 3、设置tab切换时候加载时间 代码如下:

    $("a[data-toogle='tab']").on("shown.bs.tab",function(e){     var activeTab=$(e.target)[0].hash;     if(activeTab == "#tab1"){         window.onresize();     }     if(activeTab == "#tab2"){         window.onresize();     } } echarts的初始化跟正常的方式一样,不过记得将tab-content中的echarts高宽设为100%。

    Processed: 0.008, SQL: 9