Die Graphik der Hochmaterialgrafik wurde nicht korrekt dargestellt

8

Hallo Ich habe ein Problem mit Highstocks bei der Verwendung von jquery Tabs.

Dies ist der Code für den Konstruktor.

%Vor%

Der Container hat nur die halbe Breite der ganzen Seite.

Wenn die Seite in die Registerkarte geladen wird, die das Diagramm enthält, wird ihre Breite korrekt wiedergegeben. Wenn die Seite jedoch zuerst auf eine andere Registerkarte geladen wird, erstreckt sich ihre Breite über die gesamte Breite der Seite und überschneidet sich mit anderen Dingen auf der Seite. Daher muss die Seite aktualisiert werden, um dies zu beheben.

Hat jemand dafür eine Lösung?

    
user1081236 05.12.2011, 09:40
quelle

5 Antworten

21

Sie können auch das window.resize Event

auslösen %Vor%

Und Highcharts sollte die Diagrammgröße

aktualisieren     
david 04.11.2013 13:20
quelle
10

Highcharts legt die Breite des Diagramms auf die Breite des enthaltenden Elements fest. Wenn also das enthaltene Element ausgeblendet ist, kann es keine Breite erhalten.

Um das Problem zu beheben, können Sie bei der Initialisierung Ihres Diagramms die Option width festlegen:

%Vor%

Wenn Sie das Diagramm nicht auf die richtige Breite einstellen können, habe ich diesen Trick verwendet, um die Breite eines versteckten Elements zu erhalten:

jQuery: Hole die Höhe des versteckten Elements in jQuery

Hoffe, das hilft.

    
Brent Dubecki 06.12.2011 16:58
quelle
7

Ich weiß, das ist eine lange Zeit, nachdem Sie Ihre Frage gestellt haben, aber ich hatte ein ähnliches Problem, da meine Diagramme auf dem Client mit der Breite null gerendert wurden, wenn das Diagramm auf einer Registerkarte war, die nicht standardmäßig aktiviert war. Dies liegt daran, dass Highcharts, wie @brent angibt, die Breite des übergeordneten Elements verwendet, und ab jQuery UI 1.9 verwendet das Registerkarten-Widget einen Inline-Stil von display: none , um die inaktiven Registerkarten auszublenden.

Anstatt das document ready-Ereignis von jQuery zu verwenden, um Ihr Highchart zu initialisieren, sollten Sie stattdessen das activate-Ereignis auf der Registerkarte verwenden, auf der sich Ihr Diagramm befindet. Dies hat den zusätzlichen Vorteil, dass Sie jedes Mal, wenn der Benutzer auf die Registerkarte klickt, die Snazzy-Diagrammanimation durchführt.

Anstelle von:

%Vor%

Verwenden:

%Vor%     
Robb Vandaveer 06.02.2013 04:08
quelle
3

Sie können die Breite des Container-Divs des Diagramms mit einem Prozentwert festlegen.

So etwas sollte funktionieren.

%Vor%

Hoffe, das hilft.

    
Salvador P. 29.10.2012 08:25
quelle
1

Ersetzen Sie in Ihrem Stylesheet die Regel für den Klassenselektor ".ui-tabs .ui-tabs-hide" mit

.ui-tabs .ui-tabs-hide { position: absolute; left: -10000px; }

Lösung entnommen aus: jQuery UI - Tabs

    
Ketan Modi 26.12.2011 17:31
quelle