Javascript 谷歌图表调整窗口大小

Javascript 谷歌图表调整窗口大小,javascript,charts,google-visualization,Javascript,Charts,Google Visualization,如何使我的谷歌图表正确调整大小,当前,当我展开窗口时,它会变大,但当我缩小窗口时,它不会缩小。基本上,我已经将整个谷歌图表包装在一个调整大小的函数中,但它并不完全正确: function resize() { google.charts.load('current', {'packages':['timeline']}); google.charts.setOnLoadCallback(drawChart); function drawChart() { var conta

如何使我的谷歌图表正确调整大小,当前,当我展开窗口时,它会变大,但当我缩小窗口时,它不会缩小。基本上,我已经将整个谷歌图表包装在一个调整大小的函数中,但它并不完全正确:

function resize() {
  google.charts.load('current', {'packages':['timeline']});
  google.charts.setOnLoadCallback(drawChart);

  function drawChart() {
    var container = document.getElementById('timeline');
    var chart = new google.visualization.Timeline(container);
    var dataTable = new google.visualization.DataTable();

    dataTable.addColumn({ type: 'string', id: 'Type' });
    dataTable.addColumn({ type: 'string', id: 'Organisation' });
    dataTable.addColumn({ type: 'date', id: 'Start' });
    dataTable.addColumn({ type: 'date', id: 'End' });
    dataTable.addRows([
      [ 'Work Experience', 'GE', new Date(2010, 8, 1 ), new Date(2011, 8, 30) ],
      [ 'Work Experience', 'Shell', new Date(2015, 2, 1),  new Date(2016, 1, 1) ],
      [ 'Work Experience', 'British Gas', new Date(2016, 1, 1),  new Date(2017, 9, 1) ],
      [ 'Work Experience', 'British Telecom', new Date(2017, 9, 1),  new Date() ],
      [ 'Work Experience', 'University', new Date(2011, 8, 30),  new Date(2015, 2,1) ]
      ]);
  
    var options = {
                  timeline: {showRowLabels: false},
                  backgroundColor: '#161616',
                  barLabelStyle: { fontName: 'Roboto', color: '#ffffff' },
                  height: 100, 
                  hAxis: {textStyle:{color: '#ffffff'}}
                  };
  
  google.visualization.events.addListener(chart, 'ready', function () {
  var labels = container.getElementsByTagName('text');
  Array.prototype.forEach.call(labels, function(label) {
      if (label.getAttribute('text-anchor') === 'middle') {
      label.setAttribute('fill', '#ffffff');
  }
  });
  });

  google.visualization.events.addListener(chart, 'ready', function () {
  var rects = container.getElementsByTagName('rect');
  Array.prototype.forEach.call(rects, function(rect) {
    // find chart <rect> element
    if ((rect.getAttribute('x') === '0') && (rect.getAttribute('y') === '0')) {
      // remove stroke from last <rect> element
      rect.setAttribute('stroke', 'none');
      rect.setAttribute('stroke-width', '0');
      }
    });
  });

  chart.draw(dataTable, options);
  }

}

window.onload = resize;
window.onresize = resize;
function resize(){
load('current',{'packages':['timeline']});
google.charts.setOnLoadCallback(drawChart);
函数绘图图(){
var container=document.getElementById('timeline');
var chart=newgoogle.visualization.Timeline(容器);
var dataTable=new google.visualization.dataTable();
addColumn({type:'string',id:'type'});
addColumn({type:'string',id:'organization'});
addColumn({type:'date',id:'Start'});
addColumn({type:'date',id:'End'});
dataTable.addRows([
[“工作经历”,“通用电气”,新日期(2010年8月1日),新日期(2011年8月30日)],
[‘工作经验’、‘壳牌’、新日期(2015年2月1日)、新日期(2016年1月1日)],
[‘工作经验’、‘英国天然气’、新日期(2016年1月1日)、新日期(2017年9月1日)],
[“工作经历”,“英国电信”,新日期(2017年9月1日),新日期(),
[‘工作经历’、‘大学’、新日期(2011年8月30日)、新日期(2015年2月1日)]
]);
变量选项={
时间线:{showRowLabels:false},
背景颜色:“#161616”,
barLabelStyle:{fontName:'Roboto',颜色:'#ffffff'},
身高:100,
hAxis:{textStyle:{color:'#ffffff'}}
};
google.visualization.events.addListener(图表'ready',函数(){
var labels=container.getElementsByTagName('text');
Array.prototype.forEach.call(标签,函数(标签){
if(label.getAttribute('text-anchor')=='middle'){
label.setAttribute('fill','#ffffff');
}
});
});
google.visualization.events.addListener(图表'ready',函数(){
var rects=container.getElementsByTagName('rect');
Array.prototype.forEach.call(rects,function(rect){
//查找图表元素
if((rect.getAttribute('x')=='0')&&(rect.getAttribute('y')=='0')){
//从最后一个元素中删除笔划
rect.setAttribute('stroke','none');
rect.setAttribute('stroke-width','0');
}
});
});
图表绘制(数据表、选项);
}
}
window.onload=调整大小;
window.onresize=调整大小;

调整大小时,需要在重新绘制之前清除图表。
如果未清除图表,它可以防止图表的容器收缩。
重新绘制时,其大小相同。
(这完全取决于页面布局,但清除将解决大多数问题)

使用方法-->
chart.clearChart()

此外,每次页面加载只需调用一次加载回调。
无需在resize事件处理程序中包含load语句

而且,谷歌的load语句将在默认情况下等待页面加载。
并且可以用来代替-->
窗口。onload

请参阅以下工作片段

google.charts.load('current'{
软件包:[“时间线”]
}).然后(函数(){
var container=document.getElementById('timeline');
var chart=newgoogle.visualization.Timeline(容器);
var dataTable=new google.visualization.dataTable();
addColumn({type:'string',id:'type'});
addColumn({type:'string',id:'organization'});
addColumn({type:'date',id:'Start'});
addColumn({type:'date',id:'End'});
dataTable.addRows([
[“工作经历”,“通用电气”,新日期(2010年8月1日),新日期(2011年8月30日)],
[“工作经历”,“壳牌”,新日期(2015年2月1日),新日期(2016年1月1日)],
[“工作经验”,“英国天然气”,新日期(2016年1月1日),新日期(2017年9月1日)],
[“工作经历”,“英国电信”,新日期(2017年9月1日),新日期(),
[‘工作经历’、‘大学’、新日期(2011年8月30日)、新日期(2015年2月1日)]
]);
变量选项={
时间线:{showRowLabels:false},
背景颜色:“#161616”,
barLabelStyle:{fontName:'Roboto',颜色:'#ffffff'},
身高:100,
hAxis:{textStyle:{color:'#ffffff'}}
};
google.visualization.events.addListener(图表'ready',函数(){
var labels=container.getElementsByTagName('text');
Array.prototype.forEach.call(标签,函数(标签){
if(label.getAttribute('text-anchor')=='middle'){
label.setAttribute('fill','#ffffff');
}
});
var rects=container.getElementsByTagName('rect');
Array.prototype.forEach.call(rects,function(rect){
//查找图表元素
if((rect.getAttribute('x')=='0')&&(rect.getAttribute('y')=='0')){
//从最后一个元素中删除笔划
rect.setAttribute('stroke','none');
rect.setAttribute('stroke-width','0');
}
});
});
window.addEventListener(“调整大小”,绘图图);
图纸();
函数绘图图(){
chart.clearChart();
图表绘制(数据表、选项);
}
});

太棒了,图表现在运行得很好,谢谢!!