Highcharts宽度超过第一次加载时的容器div

act*_*gic 29 highcharts jquery-mobile

我正在使用Highcharts和jQuery Mobile.

我在jQM data-role="content"容器中绘制了一个区域图,在该容器中我有以下div:

<div style="padding-top: 5px; padding-bottom: 10px; position: relative; width: 100%;">
    <div id="hg_graph" style="width: 100%"></div>
</div>
Run Code Online (Sandbox Code Playgroud)

我的高图图是从他们的一个示例中获取的基本图,其中我没有设置图表width属性.

在第一次加载时,图形超出了包含div的宽度,但是当我调整浏览器大小时,它会捕捉到适当的宽度.

我怎样才能使它的宽度在第一页加载时正确,而不仅仅是调整大小?

我已经回顾了关于堆栈溢出的类似帖子,但没有一个解决方案似乎有效.

更新

  1. 我发现问题在于,<rect>Highcharts 动态生成的标签在页面加载时占据了浏览器窗口的全宽,而根本没有从容器div宽度中获取它.这是我检查时生成的html:

    <rect rx="5" ry="5" fill="#FFFFFF" x="0" y="0" **width="1920"** height="200"></rect>

  2. 我试图在JSFiddle中重现,但它似乎在那里工作正常,这真的让我难过.这是我的JSFiddle代码:http://jsfiddle.net/meandnotyou/rMXnY

Lyu*_*yla 37

打电话chart.reflow()帮助了我.文档:http://api.highcharts.com/highcharts#Chart.reflow

  • 对于那些看不到这个答案的人,我感到很遗憾.振作起来这个答案! (2认同)

com*_*tIt 30

这就像魔法一样

把你的css文件放在下面

.highcharts-container {
    width:100% !important;
    height:100% !important;
}
Run Code Online (Sandbox Code Playgroud)

  • 这隐藏了图表的一部分 (28认同)

小智 13

我有同样的问题,在我的情况下有一个highchart图表,它点击一个按钮后显示.我放在$(window).resize();show事件后,它正确地解决了问题.我希望你服务.


小智 5

设置图表的宽度.这是唯一对我有用的选择.

chart: {
            type: 'line',
            width: 835
        },
Run Code Online (Sandbox Code Playgroud)


Tim*_* Z. 3

我在将它给出的高图表居中时遇到了类似的问题。对于某些分辨率(但不是全部),它可以正确居中和调整大小。如果没有,我的症状与您在这里描述的完全相同。

我通过将附加 css 附加/覆盖到 highcharts 默认值来修复它。

所以在自定义CSS文件中,添加

.highcharts-container{
/** Rules it should follow **/
}
Run Code Online (Sandbox Code Playgroud)

应该可以解决你的问题。假设您的 div“hg=graph”除了 highcharts 之外什么也没有。