Bootstrap標(biāo)簽頁(Tab)插件切換echarts不顯示問題的解決
問題:
1. 在echarts跟bootstrap選項(xiàng)卡整合的時(shí)候,默認(rèn)第一個(gè)選中選項(xiàng)卡可以正常加載echarts圖表,但是切換其他選項(xiàng)的時(shí)候不能渲染出其他選項(xiàng)卡echarts圖表。
2. echarts自適應(yīng)怎么實(shí)現(xiàn)?
解決辦法:
//解決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" 根據(jù)前面所用標(biāo)簽頁的不同來選擇
//echarts自適應(yīng)
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();
}
})
下面看一個(gè)實(shí)現(xiàn)的demo:
demo 完成內(nèi)容:
1. bootstrap實(shí)現(xiàn)響應(yīng)式布局
2. echats實(shí)現(xiàn)自適應(yīng)
3. 標(biāo)簽頁切換、縮放正常顯示
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<!--設(shè)置視口的寬度(值為設(shè)備的理想寬度),頁面初始縮放值<理想寬度/可見寬度>-->
<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" rel="external nofollow" >
<title></title>
<!-- jQuery文件。務(wù)必在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: '純屬虛構(gòu)'
},
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: '最高點(diǎn)' }]
]
}
}
]
};
option2 = {
title: {
text: '大規(guī)模散點(diǎn)圖'
},
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
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
相關(guān)文章
JS函數(shù)動態(tài)傳遞參數(shù)的方法分析【基于arguments對象】
這篇文章主要介紹了JS函數(shù)動態(tài)傳遞參數(shù)的方法,結(jié)合實(shí)例形式分析了javascript通過arguments對象獲取傳遞參數(shù)的相關(guān)操作技巧,需要的朋友可以參考下2019-06-06
ES6數(shù)組復(fù)制和填充方法copyWithin()、fill()的具體使用
本文主要介紹了ES6數(shù)組復(fù)制和填充方法copyWithin()、fill()的具體使用,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-10-10
基于JavaScript實(shí)現(xiàn)一個(gè)簡單的事件觸發(fā)器
這篇文章主要為大家詳細(xì)介紹了如何使用JavaScript實(shí)現(xiàn)一個(gè)簡單的事件觸發(fā)器,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-01-01
JS根據(jù)key值獲取URL中的參數(shù)值及把URL的參數(shù)轉(zhuǎn)換成json對象
本篇文章主要圍繞js url 參數(shù)值展開話題,js根據(jù)key值獲取url中的參數(shù)值,接著把url的參數(shù)轉(zhuǎn)換成json,感興趣的朋友一起來學(xué)習(xí)吧,本文寫的不好地方還望多多指出批評建議2015-08-08

