Bootstrap标签页(Tab)插件切换echarts不显示问题的解决

问题:

1.  在echarts跟bootstrap选项卡整合的时候,默认第一个选中选项卡可以正常加载echarts图表,但是切换其他选项的时候不能渲染出其他选项卡echarts图表。

2.  echarts自适应怎么实现?

解决办法:

//解决tab切换不显示问题 在加载窗口后重新渲染。
 $(\'a[data-toggle=\"pill\"]\').on(\'shown.bs.tab\', function(e) {
 for(var i = 0; i < charts.length; i++) {
 charts[i].resize();
 }
 }); //data-toggle=\"pill还是data-toggle=\"tab\" 根据前面所用标签页的不同来选择
//echarts自适应
 var charts = [];
 var chart1 = echarts.init(document.getElementById(\"left1\"));
 var chart2 = echarts.init(document.getElementById(\"left2\"));
 var chart3 = echarts.init(document.getElementById(\"right11\"));
 var chart4 = echarts.init(document.getElementById(\"right12\"));
 var chart5 = echarts.init(document.getElementById(\"right21\"));
 var chart6 = echarts.init(document.getElementById(\"right22\"));
 chart1.setOption(option1);
 chart2.setOption(option1);
 chart3.setOption(option2);
 chart4.setOption(option2);
 chart5.setOption(option1);
 chart6.setOption(option1);
 charts.push(chart1);
 charts.push(chart2);
 charts.push(chart3);
 charts.push(chart4);
 charts.push(chart5);
 charts.push(chart6);
 $(window).resize(function() {
 for(var i = 0; i < charts.length; i++) {
 charts[i].resize();
 }
 })

下面看一个实现的demo:

            demo 完成内容:

                                      1. bootstrap实现响应式布局

                                      2. echats实现自适应

                                      3. 标签页切换、缩放正常显示

<!DOCTYPE html>
<html>
 <head>
 <meta charset=\"UTF-8\">
 <title></title>
 <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">
 <!--设置视口的宽度(值为设备的理想宽度),页面初始缩放值<理想宽度/可见宽度>-->
 <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">
 <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/bootstrap.min.css\" rel=\"external nofollow\" />
 <link rel=\"stylesheet\" href=\"../css/main.css\" rel=\"external nofollow\" />
 <!-- 可选的Bootstrap主题文件(一般不用引入) -->
 <link rel=\"stylesheet\" href=\"http://cdn.bootcss.com/twitter-bootstrap/3.0.3/css/bootstrap-theme.min.css\" rel=\"external nofollow\" >
 <title></title>
 <!-- jQuery文件。务必在bootstrap.min.js 之前引入 -->
 <script src=\"../js/jquery-3.1.1.js\"></script>
 <!-- 最新的 Bootstrap 核心 JavaScript 文件 -->
 <script src=\"../js/bootstrap.min.js\"></script>
 <!-- 最新的echarts核心 JavaScript 文件 -->
 <script src=\"../js/echarts.js\"></script>
 <script src=\"../js/main.js\" type=\"text/javascript\" charset=\"utf-8\"></script>
 </head>
 
 <body>
 <div class=\"container\">
 <div class=\"row\">
 <div class=\"col-lg-6 col-md-6 col-sm-6 col-xs-12 col-left\">
  <div class=\"css_height1\" id=\"left1\">
  </div>
  <div class=\"css_height\" id=\"left2\">
  </div>
 </div>
 <div class=\"col-lg-6 col-md-6 col-sm-6 col-xs-12 col-right\">
  <div class=\"right_title\">
  <ul class=\"nav nav-pills\">
  <li class=\"active\">
  <a href=\"#right1\" rel=\"external nofollow\" data-toggle=\"pill\">1</a>
  </li>
  <li>
  <a href=\"#right2\" rel=\"external nofollow\" data-toggle=\"pill\">2</a>
  </li>
  <li>
  <a href=\"#\" rel=\"external nofollow\" rel=\"external nofollow\" rel=\"external nofollow\" data-toggle=\"pill\">3</a>
  </li>
  <li>
  <a href=\"#\" rel=\"external nofollow\" rel=\"external nofollow\" rel=\"external nofollow\" data-toggle=\"pill\">4</a>
  </li>
  <li>
  <a href=\"#\" rel=\"external nofollow\" rel=\"external nofollow\" rel=\"external nofollow\" data-toggle=\"pill\">5</a>
  </li>
  </ul>
  </div>
  <div class=\"tab-content\">
  <div class=\"tab-pane fade in active\" id=\"right1\">
  <div class=\"css_height\" id=\"right11\">
 
  </div>
  <div class=\"css_height\" id=\"right12\">
 
  </div>
  </div>
  <div class=\"tab-pane fade in\" id=\"right2\">
  <div class=\"css_height\" id=\"right21\">
 
  </div>
  <div class=\"css_height\" id=\"right22\">
 
  </div>
  </div>
  </div>
 </div>
 </div>
 </div>
 </body>
</html>
<script type=\"text/javascript\">
 var charts = [];
 var chart1 = echarts.init(document.getElementById(\"left1\"));
 var chart2 = echarts.init(document.getElementById(\"left2\"));
 var chart3 = echarts.init(document.getElementById(\"right11\"));
 var chart4 = echarts.init(document.getElementById(\"right12\"));
 var chart5 = echarts.init(document.getElementById(\"right21\"));
 var chart6 = echarts.init(document.getElementById(\"right22\"));
 chart1.setOption(option1);
 chart2.setOption(option1);
 chart3.setOption(option2);
 chart4.setOption(option2);
 chart5.setOption(option1);
 chart6.setOption(option1);
 charts.push(chart1);
 charts.push(chart2);
 charts.push(chart3);
 charts.push(chart4);
 charts.push(chart5);
 charts.push(chart6);
 $(window).resize(function() {
 for(var i = 0; i < charts.length; i++) {
 charts[i].resize();
 }
 });
 //解决tab切换不显示问题 在加载窗口后重新渲染。
 $(\'a[data-toggle=\"pill\"]\').on(\'shown.bs.tab\', function(e) {
 for(var i = 0; i < charts.length; i++) {
 charts[i].resize();
 }
 });
</script>
.css_height{
 height: 400px;
 margin-top: 30px;
}
.css_height1{
 height: 400px;
 margin-top: 72px;
}
.right_title{
 width: 90%;
 margin-left: 10%;
}
.nav>li>a{
 padding: 5px 18px;
 margin-top: 10px;
}
body{
 background-color:#009688;
}
.container{
 background-color:#dcedf5;
 margin-top: 25px;
 border-radius: 15px;
}
option1= {
 title: {
  text: \'未来一周气温变化\',
  subtext: \'纯属虚构\'
 },
 tooltip: {
  trigger: \'axis\'
 },
 xAxis: {
  type: \'category\',
  boundaryGap: false,
  data: [\'周一\',\'周二\',\'周三\',\'周四\',\'周五\',\'周六\',\'周日\']
 },
 yAxis: {
  type: \'value\',
  axisLabel: {
   formatter: \'{value} °C\'
  }
 },
 series: [  {   name:\'最高气温\',   type:\'line\',   data:[11, 11, 15, 13, 12, 13, 10],
   markPoint: {
    data: [
     {type: \'max\', name: \'最大值\'},
     {type: \'min\', name: \'最小值\'}
    ]
   },
   markLine: {
    data: [
     {type: \'average\', name: \'平均值\'}
    ]
   }
  },
  {
   name:\'最低气温\',
   type:\'line\',
   data:[1, -2, 2, 5, 3, 2, 0],
   markPoint: {
    data: [
     {name: \'周最低\', value: -2, xAxis: 1, yAxis: -1.5}
    ]
   },
   markLine: {
    data: [
     {type: \'average\', name: \'平均值\'},
     [{      symbol: \'none\',      x: \'90%\',      yAxis: \'max\'     }, {      symbol: \'circle\',      label: {       normal: {        position: \'start\',        formatter: \'最大值\'       }      },      type: \'max\',      name: \'最高点\'     }]
    ]
   }
  }
 ]
};
option2 = {
 title: {
  text: \'大规模散点图\'
 },
 legend: {
  data:[\'sin\',\'cos\']
 },
 xAxis : [  {   type : \'value\',   scale:true  } ],
 yAxis : [  {   type : \'value\',   scale:true  } ],
 series : [  {   name:\'sin\',   type:\'scatter\',   large: true,   symbolSize: 3,   data: (function () {    var d = [];
    var len = 10000;
    var x = 0;
    while (len--) {
     x = (Math.random() * 10).toFixed(3) - 0;
     d.push([
      x,
      //Math.random() * 10
      (Math.sin(x) - x * (len % 2 ? 0.1 : -0.1) * Math.random()).toFixed(3) - 0
     ]);
    }
    //console.log(d)
    return d;
   })()
  },
  {
   name:\'cos\',
   type:\'scatter\',
   large: true,
   symbolSize: 2,
   data: (function () {
    var d = [];
    var len = 20000;
    var x = 0;
    while (len--) {
     x = (Math.random() * 10).toFixed(3) - 0;
     d.push([
      x,
      //Math.random() * 10
      (Math.cos(x) - x * (len % 2 ? 0.1 : -0.1) * Math.random()).toFixed(3) - 0
     ]);
    }
    //console.log(d)
    return d;
   })()
  }
 ]
};

demo效果链接:  demo

github源码: 源码  |  本地下载

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容