IE: Scrollbar trotz passendem Content
Andi
- programmiertechnik
0 acid0 Gernot Back0 Andi
Hallo,
folgendes beschäftigt mich nun seit ca. 1 Stunde:
In einer Webseite befindet sich rechts ein Container-Element A mit Höhe 100% in einem größeren Container B, der sich je nach verfügbarem Anzeigebereich skaliert.
A ist mit overflow:auto definiert, damit der Content scrollbar wird sobald er nicht mehr auf die für A verfügbare Fläche paßt (die natürlich direkt von B abhängt).
Warum kann es nun bei bestimmten Aktionen passieren, daß A eine (vertikale) Scrolleiste bekommt obwohl der Content eigentlich noch hineinpassen würde?
Mache ich z.B. das Fenster erst groß genug (keine Scrolleiste) und verkleinere es sukzessive, geht das bis zu einer Höhe y gut ohne daß die Leiste erscheint, dann ist der Content *wirklich* zu klein für den Bereich, alles ok.
Reloade ich die Seite dann mit exakt denselben Fenster-/Dokument-Dimensionen, wird wieder die Scrollbar gerendert... *ächz*
Ich habe folgenden Eindruck: ab einer gewissen Höhe y+n rendert der IE zuerst eine (höhenmäßig) "grobe" (zu hohe) Tabelle, stellt fest, daß er eine Scrolleiste braucht, und stellt dann erst den Inhalt dar, welcher natürlich durch die Leiste zusätzlich an Platz verbraucht.
Gibt es eine Methode sicherzustellen, daß der Content eines Containers (DIV,SPAN) nicht von der *durch die Scrolleiste selbst* eingeschränkten Fläche abhängt?
Danke,
Andreas
hallo,
einfach den height: auf 99% setzen.
hatte auch das problem. ist glaube sogar browserspezifisch
Hallo Andi,
hast du denn auch daran gedacht, Margin, Padding und Border all deiner ineinander verschachtelten und sich in ihrer prozentualen Höhe jeweils aufeinander beziehenden Elemente auf Null zu setzen, bis hinauf zum BODY- und zum HTML-Element?
In folgendem Artikel findest du vielleicht auch Abhilfe:
http://aktuell.de.selfhtml.org/tippstricks/html/scrollbalken/index.htm
Gruß Gernot
Danke für Eure Antworten! Ich habe inzwischen einen Workaround gefunden!
Zuvor noch als Ergänzung zu meinem Posting:
Ich fange auf der Seite auch noch das Resize Event ab und durchlaufe einen Code, der mir u.a. den Container B korrekt skaliert. Container A erhält ja dann automatisch 100% von Container B's Höhe.
Der Workaround sieht so aus, daß ich in diesem Resize-Script *vor* der Skalierung die Overflow-Eigenschaft von A auf hidden setzte --> Tabelle und Inhalt werden gerendert, Scrollbar wird in jedme Fall unterdrückt.
Dann findet die Skalierung von B (und A) statt...
Nach der Skalierung setze ich Overflow (A) wieder auf auto --> die endgültige (tatsächliche) Höhe vom Content steht schon fest, der IE kann sich nochmal entscheiden, ob er eine Scrollbar rendern muss oder nicht.
Jedenfalls funktioniert das!
Grüße aus Frankfurt,
Andi