"fixed" und "min-width" _gleichzeitig_ im IE?
Thomas
- css
Hallo Zusammen!
Ich verwende das SELFHTML-Workaround für position:fixed im IE (http://de.selfhtml.org/css/layouts/anzeige/fixiert_ie.htm) über die gesamte Breite eines Browserfenster.
Gleichzeitig mit dieser Variante möchte ich noch ein Workaround für min-width (http://www.cssplay.co.uk/boxes/width2.html) anwenden. Das Objekt mit min-width soll ebenfalls über die gesamte Breite des Browsers gehen.
Nun ist es aber leider so, dass die "künstliche" Scrollbar des selbst definierten Bereiches zu den 100% des inneren min-width Objektes hinzuaddiert wird. So entsteht also immer ein horizontaler Scrollbalken, da die Seite um etwa 16 Pixel zu breit ist.
Ich bin verzeifelt, das Problem scheint mir unlösbar.
Wenn es doch irgendeinen Profi gibt, der einen Kniff kennt, freue ich mich über einen Post.
Gruß Thomas
Hallo Thomas,
es gibt ja verschiedene Möglichkeiten position fixed oder min-width für die
Internet Explorer nachzubilden, vielleicht findest du eine geeignetere Kombination.
Ansonsten sollte es aber auch gelingen die 16 px entsprechend abzuziehen,
notfalls über eine geeignete expression, oder vielleicht über eine CSS-Weiche.
Hast du deinen Testcode online?
Grüsse
Cyx23
Hi Cyx,
danke für deine Antwort.
Ich bin mir der Alternativen bewusst, möchte aber wegen der Zugänglichkeit der Seite definitiv kein JS verwenden.
Der Code ist nicht online, ziemlich lang und demotivierend.
Ich wünschte mir, man könnte die 16 Pixel abziehen, aber ich finde einfach keine Möglichkeit. Auf die Scrollbar hat man ja keinen "Zugriff", da sie einfach vom IE eingefügt wird, wenn er sie braucht.
Und wenn ich z.B. bei den 100% des inneren DIVs ein margin einsetze, hat das keine Auswirkung (vermutlich bei 100% normal?). Doch selbst wenn es funktionieren würde, wäre dann wiederum das margin auch da, wenn mal keine Scrollbar vorhanden ist, was zu einem ungewollten Abstand führen würde.
Gruß Thomas
hi,
kein einfaches Thema, welches du da anschneidest - mir ist keine Lösung bekannt, wie man das Problem beim position:fixed-Workaround mit über die gesamte Breite gehenden fixierten Elementen wirklich zufriedenstellend lösen könnte.
Ich wünschte mir, man könnte die 16 Pixel abziehen, aber ich finde einfach keine Möglichkeit. Auf die Scrollbar hat man ja keinen "Zugriff", da sie einfach vom IE eingefügt wird, wenn er sie braucht.
Als erstes würde ich dafür sorgen, dass der IE seinen bekannten "Geisterscrollbalken" auch für den overflow-Container anzeigt - also einen "leeren" Scrollbalken einblendet, wenn der Inhalt kürzer ist als der Bildschirm hoch. Damit wären wir die Sorge los, uns um beide Fälle einzeln kümmern zu müssen.
Mittels overflow-y:scroll ist das machbar.
Und wenn ich z.B. bei den 100% des inneren DIVs ein margin einsetze, hat das keine Auswirkung (vermutlich bei 100% normal?).
Eine Möglichkeit, die ich dazu mal verwendet habe, war ein negatives margin-left von x Pixeln. Damit kann ich ein 100% breites, absolut positioniertes Element so weit nach links "ziehen", dass es den Scrollbalken nicht mehr überdeckt. Klar, dann fehlt links ein Stück vom Inhalt - das kann man über ein entsprechendes padding-left für den Inhalt oder eine entsprechende Positionierung von Hintergrundbildern (in meinem Falle war der Inhalt des fixierten Elementes nur ein solches) wieder geraderücken.
Bestehen bleibt das größte Problem: Du weißt nicht, wie breit der Scrollbalken ist. In meinen Versuchen kam ich mit dem IE 6 auf 17 Pixel in einer Standardinstallation - aber unter anderen Bedingungen, oder wenn der Nutzer die Einstellung geändert hat, kann das schon wieder hinfällig sein.
Eine Möglichkeit, die Scrollbarbreite mittels Javascript abzufragen, habe ich noch nicht finden können (obwohl der IE doch sonst so bereitwillig Auskunft über alles mehr oder weniger Wissenswerte gibt ...)
gruß,
wahsaga
Hallo wahsaga,
»»ein negatives margin-left von x Pixeln
phantastisch! Das negative margin hat mich gerettet. Ich gebe zu, das Problem mit der Breite der Scrollbar werde ich mal ausnahmsweise vernachlässigen. Das Workaraound ist ja "nur" für den IE notwendig und hier haben die meisten User die Breite der Scrollbar wohl nicht verändert. Eine Javascript-Abfrage käme für mich sowieso nicht in Frage.
Mittels overflow-y:scroll ist das machbar.
Fürs Archiv: Es ist übrigens so, dass der IE anscheinend bei dieser Deklaration die Scrollbar für absolut am rechten Rand positionierte Elemente "existent" macht. Bei overflow-y:auto hingegen "wollen sich die Elemente dann immer trotzdem an den Rand rechts neben der Scrollbar schieben", womit sich wiederum die Breite des Browserfensters vergrößert.
Beim IE 5.0 besteht die ganze Problematik übrigens nicht, d.h. die Scrollbar wird _nicht_ zu den 100% hinzuaddiert.
Danke, Thomas
hi,
phantastisch! Das negative margin hat mich gerettet.
Freut mich.
Ich gebe zu, das Problem mit der Breite der Scrollbar werde ich mal ausnahmsweise vernachlässigen.
Ja, kann man hier wohl machen.
Selbst wenn die Scrollbar mal nicht exakt so breit sein sollte wie angenommen - das gibt dann halt mal einen optisch unschönen Effekt, sollte die Bedienbarkeit aber nach wie vor gewährleisten.
(Auch wenn mich solche Feinheiten dann trotzdem stören, und ich gerne eine bessere Möglichkeit, wie bspw. Abfrage der Scrollbalkenbreite über JS, hätte.)
Beim IE 5.0 besteht die ganze Problematik übrigens nicht, d.h. die Scrollbar wird _nicht_ zu den 100% hinzuaddiert.
Natürlich, dass dessen Vorstellung vom Box Model "kaputt" ist, ist ja altbekannt.
gruß,
wahsaga
Hallo Thomas,
Ich bin mir der Alternativen bewusst, möchte aber wegen der Zugänglichkeit der Seite definitiv kein JS verwenden.
Falls ohne JS das min-width nicht funktioniert wäre es wohl nicht ganz so
schlimm, aber wahrscheinlich soll es die Risiken von "fixed" etwas begrenzen?
Für "fixed" gibt es auch noch etwas unterscheidliche CSS-Varianten, wie sich
das jeweils auf min-width auswirkt müßte ich mir aber auch erst anschauen.
Der Code ist nicht online, ziemlich lang und demotivierend.
Wenn du das Problem isolieren könntest wäre Beispielcode schon hilfreich.
Ansonsten dürfte es sich wohl anbieten, den Scrollbalkenabstand immer zu
berücksichtigen.
Grüsse
Cyx23
Hi Cyx,
dank wahsaga's Posting konnte ich das Problem lösen.
Danke für deine Mühe.
Gruß Thomas