我在带有Bootstrap标签的页面中使用了两个(或更多)Google图表。根据我的标签导航,图表会失去默认(?)大小的大小。 Bellow是一个简化的测试用例,可以看到问题:
https://jsfiddle.net/73o0rfqe/
如何重现:
情况#1:
情况#2:
这部分代码:
$("a[href='#One']").on('shown.bs.tab', function (e) {
google.load('visualization', '1', {packages: ['corechart'], callback: drawChart});
clearChart();
});
我正在尝试使用它,但它不能像它应该的那样工作。任何帮助都会有所帮助。
PS:有关优化此代码的任何建议都会有所帮助。感谢。
答案 0 :(得分:8)
问题在于您使用
重绘图表$("a[href='#One']").on('shown.bs.tab', function (e) {
google.load('visualization', '1', {packages: ['corechart'], callback: drawChart});
clearChart();
});
当你改变标签时。我不知道为什么当你按照你写的方式进行绘制时,它的大小不正确,但我从未使用过bootstrap。
(作为旁注,我不知道为什么你在标签更改时加载谷歌包,这会导致谷歌服务器的大量负载。像
$("a[href='#One']").on('shown.bs.tab', function (e) {
drawChart();
});
就够了。)
解决方案是在页面加载时渲染两个图表然后完成它们,检查this fiddle并且您将看到它有效。
答案 1 :(得分:5)
在charts
内实施graphs
,tabs
时,可能会出现内容调整大小问题。
此类问题的原因
在Bootstrap选项卡中,当我们切换选项卡时,只有活动选项卡的属性display: block;
tab-contents
的其余部分将应用于display: none;
。
如果div元素具有属性display: none;
,则宽度也被视为 0px ,这是此问题的主要原因。
要覆盖此问题,我添加了以下 CSS ,而不是使用display: none;
隐藏标签,而是使用高度&处理此方法的溢出属性宽度不会设置为 0px 。
.tab-content>.tab-pane {
height: 1px;
overflow: hidden;
display: block;
visibility: hidden;
}
.tab-content>.active {
height: auto;
overflow: auto;
visibility: visible;
}
我已经从你的代码中分叉了你的代码jsfiddle链接问题(https://jsfiddle.net/73o0rfqe/)。
这是具有更新代码的链接(即,仅添加了上面给出的CSS)
https://jsfiddle.net/swasatz/28qttaqb/2/
查看小提琴希望这对你有帮助
感谢。
注意:这是使用CSS解决此问题的方法之一。
答案 2 :(得分:1)
显然这是一个CSS问题。这是解决我遇到的问题的解决方案,将图表加载到隐藏的标签中:
.tab-content > .tab-pane,
.pill-content > .pill-pane {
display: block;
height: 0;
overflow-y: hidden;
}
.tab-content > .active,
.pill-content > .active {
height: auto;
}