我正在使用HighCharts 4.0.4,我有一个带有自定义图例的图表:
<div class="wrapper"> <div class="element"> <div id="chart"></div> </div> <div class="legend"> Legend </div> </div>
CSS看起来像这样.包装器是一个表,因此我可以在图例中使用table-cell一个vertical-align:middle.我希望两者都有50%的包装宽度.
.wrapper { display: table; width: 100%; } .element { display: table-cell; width: 50%; } .legend { display: table-cell; width: 50%; vertical-align: middle; } #chart { width: 100%; }
问题是,我创建了一个JSFiddle here,如果输出/结果窗口很小,“运行”代码,我看到50%:50%.调整输出窗口的大小并使其变大,一切正常,50%:50%没问题,但是使输出窗口变小,图表不能正确调整大小.
我看到了一些带有$(window).resize();的解决方案.在我的情况下,我尝试使用outerHeight,但只有当我将屏幕尺寸设置得更大时,值才会改变.所以我发现这个解决方案有效:
$('#chart').highcharts().setSize( $(".wrapper").width() / 2,$('#chart').highcharts().height,doAnimation = true );
但是还有一个解决方案不需要使用JavaScript,只需要HTML和CSS吗?
解决方法
这应该只使用CSS …没有调整大小的功能.
尝试将position:absolute添加到图表css属性中
#chart的新css如下所示:
#chart { display: table-cell; position:absolute; width:50%; }
我想这就是你想要的效果.
注意:我删除了所有调整大小的Javascript
跟进:
如果需要在动画窗口调整大小时调整Highcharts的大小,可以使用此语法执行此操作.
$(window).resize(function() { height = $(window).height() width = $(window).width() / 2 $("#chart").highcharts().setSize(width,height,doAnimation = true); });
我认为这更像你想要使用Highchart setSize方法和动画而不是CSS