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


Posted in Javascript onJuly 13, 2018

问题:

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源码: 源码  |  本地下载

总结

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

Javascript 相关文章推荐
jquery $.each()使用探讨
Sep 23 Javascript
js倒计时小程序
Nov 05 Javascript
TypeError document.getElementById(...) is null错误原因
May 18 Javascript
jquery实现点击向下展开菜单项(伸缩导航)效果
Aug 22 Javascript
js中遍历对象的属性和值的方法
Jul 27 Javascript
canvas实现手机端用来上传用户头像的代码
Oct 20 Javascript
Javascript之面向对象--接口
Dec 02 Javascript
实现div滚动条默认最底部以及默认最右边的示例代码
Nov 15 Javascript
React Native中NavigatorIOS组件的简单使用详解
Jan 27 Javascript
浅析Vue.js中v-bind v-model的使用和区别
Dec 04 Javascript
JS去除字符串最后的逗号实例分析【四种方法】
Jun 20 Javascript
JavaScript中判断为整数的多种方式及保留两位小数的方法
Sep 09 Javascript
Bootstrap开发中Tab标签页切换图表显示问题的解决方法
Jul 13 #Javascript
微信小程序实现tab页面切换功能
Jul 13 #Javascript
php中and 和 &amp;&amp;出坑指南
Jul 13 #Javascript
vue项目base64字符串转图片的实现代码
Jul 13 #Javascript
angular 组件通信的几种实现方式
Jul 13 #Javascript
JavaScript实现异步图像上传功能
Jul 12 #Javascript
Angular4 组件通讯方法大全(推荐)
Jul 12 #Javascript
You might like
Terran建筑一览
2020/03/14 星际争霸
PHP数据库处理封装类实例
2016/12/24 PHP
PHP全功能无变形图片裁剪操作类与用法示例
2017/01/10 PHP
php静态成员方法和静态的成员属性的使用方法
2017/10/26 PHP
javascript 操作select下拉列表框的一点小经验
2010/03/20 Javascript
关于IE浏览器以及Firefox下的javascript冒泡事件的响应层级
2010/10/14 Javascript
JavaScript基本数据类型及值类型和引用类型
2015/08/25 Javascript
JavaScript模块规范之AMD规范和CMD规范
2015/10/27 Javascript
JavaScript事件 &quot;事件对象&quot;的注意要点
2016/01/14 Javascript
AngularJs bootstrap搭载前台框架——基础页面
2016/09/01 Javascript
js实现表单提交后不重新刷新当前页面
2016/11/30 Javascript
jQuery实现手势解锁密码特效
2017/08/14 jQuery
vue 标签属性数据绑定和拼接的实现方法
2018/05/17 Javascript
node 文件上传接口的转发的实现
2019/09/23 Javascript
小程序点击图片实现png转jpg
2019/10/22 Javascript
BootstrapValidator实现表单验证功能
2019/11/08 Javascript
基于vue3.0.1beta搭建仿京东的电商H5项目
2020/05/06 Javascript
[03:42]2014DOTA2国际邀请赛 第三日比赛排位扑朔迷离
2014/07/12 DOTA
[00:33]2016完美“圣”典风云人物:Sccc宣传片
2016/12/03 DOTA
Python中的rjust()方法使用详解
2015/05/19 Python
使用httplib模块来制作Python下HTTP客户端的方法
2015/06/19 Python
python实现关键词提取的示例讲解
2018/04/28 Python
详解python中的线程与线程池
2019/05/10 Python
Pytorch实现将模型的所有参数的梯度清0
2020/06/24 Python
手把手教你实现一个canvas智绘画板的方法
2019/03/04 HTML / CSS
俄罗斯的精英皮具:Wittchen
2018/01/29 全球购物
全球在线商店:BerryLook
2019/04/14 全球购物
工商企业管理应届生求职信
2013/11/03 职场文书
恐龙的灭绝教学反思
2014/02/12 职场文书
《望洞庭》教学反思
2014/02/16 职场文书
小学领导班子对照材料
2014/08/23 职场文书
房产协议书范本
2014/10/18 职场文书
2014年图书馆个人工作总结
2014/12/18 职场文书
文明单位创建材料
2014/12/24 职场文书
2016年6月份红领巾广播稿
2015/12/21 职场文书
ORACLE数据库对long类型字段进行模糊匹配的解决思路
2021/04/07 Oracle