我在Boostrap标签中显示Google图表时遇到问题。 我有两个标签,每个标签都有一个Google图表。在第一个中,图表被正确显示,但在第二个图表中,图表很小并且被压缩。 我不明白为什么..
这是我的代码:
<div class="tab-pane active" id="player">
<h3>Players' resources</h3>
<div id="totalPlayerChart" style="height: 500px;"></div>
</div>
<div class="tab-pane" id="producer">
<h3>Producers' resources</h3>
<div id="totalProducerChart" style="height: 500px;"></div>
</div>
<script type="text/javascript">
google.charts.load('current', {'packages':['corechart']});
google.charts.setOnLoadCallback(drawTotalPlayerChart);
google.charts.setOnLoadCallback(drawTotalProducerChart);
function drawTotalPlayerChart() {
[...]
var chart = new google.visualization.LineChart(document.getElementById('totalPlayerChart'));
chart.draw(data, options);
}
function drawTotalProducerChart() {
[...]
var chart = new google.visualization.LineChart(document.getElementById('totalProducerChart'));
chart.draw(data, options);
}
</script>
答案 0 :(得分:4)
在charts
内实施graphs
,tabs
时,可能会出现内容调整大小问题。
此类问题的原因
在Bootstrap选项卡中,当我们切换选项卡时,只有活动选项卡的属性display: block;
tab-contents
的其余部分将应用于display: none;
。
如果div元素具有属性display: none;
,则宽度也被视为 0px ,这是此问题的主要原因。
要覆盖此问题,我添加了以下 CSS ,而不是使用display: none;
隐藏标签,而是使用高度&amp;处理此方法的溢出属性宽度不会设置为 0px 。
.tab-content>.tab-pane {
height: 1px;
overflow: hidden;
display: block;
visibility: hidden;
}
.tab-content>.active {
height: auto;
overflow: auto;
visibility: visible;
}
感谢。
注意:这是使用CSS解决此问题的方法之一。
答案 1 :(得分:1)
这是在隐藏容器时绘制图表的结果 当选项
中没有特定的尺寸设置时更正问题,添加特定尺寸,或等到标签显示后再绘制图表...
另外,setOnLoadCallback
每页加载只需要调用一次
它也可以放在load
声明
建议将类似设置为以下代码段
google.charts.load('current', {
callback: function () {
$('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
switch ($(e.target).html()) {
case 'Players':
drawTotalPlayerChart();
break;
case 'Producers':
drawTotalProducerChart();
break;
}
});
function drawTotalPlayerChart() {
[...]
var chart = new google.visualization.LineChart(document.getElementById('totalPlayerChart'));
chart.draw(data, options);
}
function drawTotalProducerChart() {
[...]
var chart = new google.visualization.LineChart(document.getElementById('totalProducerChart'));
chart.draw(data, options);
}
// draw chart on initial tab
drawTotalPlayerChart();
},
packages: ['corechart']
});
答案 2 :(得分:0)
您需要在shown.bs.tab
以下是其他人的bootply演示,但这是Google Map(同样适用的方法):http://www.bootply.com/102241