2013-05-02 14 views
7

Ich versuche, mein gerendertes Diagramm 100% des übergeordneten Div ohne Erfolg zu füllen. Gibt es eine Möglichkeit, die Lücke auf der linken und rechten Seite zu entfernen?HighCharts in voller Breite Ausgabe

http://jsfiddle.net/sKV9d/

var chart = new Highcharts.Chart({ 
    chart: { 
     renderTo: 'chart', 
     margin: 0, 
     width: 300, 
     height: 200, 
     defaultSeriesType: 'areaspline' 
    },  

    series: [{ 
     data: [33,4,15,6,7,8, 73,2, 33,4,25],  

     marker: { 
      enabled: false 
     } 
    }] 
}); 

Antwort

9

Wenn Sie die Optionen width: 300, height: 200 wie folgt entfernen:

var chart = new Highcharts.Chart({ 
chart: { 
    renderTo: 'chart', 
    margin: 0, 
    defaultSeriesType: 'areaspline' 
},  

... 

wird es automatisch um den Behälter füllen.

+6

Getestet habe ich diese und es funktioniert nicht –

+0

Wie highcharts doc sagte: Eine explizite Breite für das Diagramm.Standardmäßig (wenn null) wird die Breite aus der Offset-Breite des enthaltenden Elements berechnet. Der Standardwert ist null. es funktioniert –

5

Try this:

var height= $("#container").height(); 
var width= $("#container").width(); 

var chart = new Highcharts.Chart({ 
    chart: { 
     renderTo: 'chart', 
     margin: 0, 
     width: width, 
     height: height, 
     defaultSeriesType: 'areaspline' 
    },  

    series: [{ 
     data: [33,4,15,6,7,8, 73,2, 33,4,25],  

     marker: { 
      enabled: false 
     } 
    }] 
}); 
+0

Noch hat die Lücken leider. Das Diagramm selbst (Svg) ist voller Breite, es scheint nur die Daten selbst hat eine Lücke. – user2341636

4

Ich löste es durch

window.dispatchEvent(new Event('resize')); 

UPD:

  1. remov Die Attribute Breite und Höhe.
  2. fügen in Css folgenden Code, um Block-Diagramm auf 100% des #container anzupassen:

Diagramm {Breite: 100%; Höhe: 100%; }

2a. eine andere Möglichkeit ist - im Falle, wenn nicht möglich, Behältergröße bei „Design“ Zeit definieren Sie Diagramm nach Diagramm Last umfließen kann (dh Aufruf chart.reflow();):

chart: { 

    events: { 
     load: function(event) { 
     **event.target.reflow();** 
     } 
    } 
}, 

Siehe Beispiel http://jsfiddle.net/yfjLce3o/

+0

Dies liefert keine Antwort auf die Frage. Um einen Autor zu kritisieren oder um Klärung zu bitten, hinterlasse einen Kommentar unter seinem Beitrag. - [Aus Bewertung] (/ review/low-quality-posts/11731250) –

+0

Ja, Sie haben Recht, es ist keine vollständige Antwort. Ich habe ein anderes gefunden und werde es als Kommentar für den Autor hinzufügen. –

+0

Sieht für mich nicht wie 100% aus, da ist noch ein Leerzeichen von 3px drin. – ram4nd

0

Wenn Sie dem Diagramm keine width-Eigenschaft zuweisen, sollte die Breite des Containers automatisch ermittelt werden. Also entfernen Sie einfach die Breite aus dem Diagramm und geben Sie den Container width: 100% und das sollte funktionieren.

Wenn Sie eine bestimmte Breite wünschen, ändern Sie einfach die Containerbreite auf eine bestimmte Größe. Das Diagramm sollte immer noch 100% dieser Größe sein. JSFiddle

Beispiel:

HTML

<div id="container"> 
    <div id="chart"></div> 
</div> 

JS

var chart = new Highcharts.Chart({ 

    chart: { 
     renderTo: 'chart', 
     margin: 0, 
     height: 200, 
     defaultSeriesType: 'areaspline' 
    }, 

    series: [{ 
     data: [33,4,15,6,7,8, 73,2, 33,4,25], 

     marker: { 
      enabled: false 
     } 
    }] 
}); 

CSS

#container { 
    width: 100%; 
    height: 200px; 
} 
5

Die Frage ist wegen jq sehr UI. Nachdem Sie Ihr Diagramm gerendert haben, rufen Sie diesen Code auf, um das Diagramm neu zu füllen. Diese feste mein Problem

chart.reflow(); 
+0

das funktioniert eigentlich für mich –

Verwandte Themen