Der bessere Trick gegen ruckelnde Websites
[An dieser Stelle würden Sie einen Facebook-„Gefällt mir“-Button sehen – wenn Deutschland nicht das Land der ausufernden Datenschutz-Paranioia wäre.]
Zentriert ausgerichtete Websites (mit fester Breite) ruckeln optisch ein
klein wenig horizontal hin und her, wenn man von einer langen Seite mit vertikalem
Scrollbalken zu einer kurzen Seite ohne Scrollbalken wechselt – und umgekehrt. Der
allgemein übliche Trick zur Vermeidung dieses Ruckel-Effekts hat einen
unerwünschten Nebeneffekt: Er macht die Seite im Safari 3 unbenutzbar. Auch
wenn die Verbreitung des Safari 3 weit unter der Ein-Prozent-Marke liegt, hat
mich das gestört.
Meine bisherige Lösung: Erzwingen des vertikalen Scrollbalkens mithilfe
der body-Höhe
Wie viele andere Webdesigner auch, habe ich bis gestern den folgenden
bekannten Trick angewendet, um die Anzeige eines vertikalen Scrollbalkens zu
erzwingen, unabhängig von der Länge bzw. Kürze der Seite.
html {
height: 100%;
}
body {
height: 101%;
}
Dadurch ist jede Seite immer ein klein wenig länger als der
Viewport im Browser, so dass ein „echter“ vertikaler Scrollbalken angezeigt
wird. Nicht so im Safari 3. Dort wird im Gegensatz zu allen anderen Browsern
überhaupt kein Scrollbalken angezeigt. Und noch schlimmer: Eine auf diese Weise
„gepimpte“ Seite kann im Safari 3 überhaupt nicht mehr gescrollt werden und ist
damit in diesem Browser unbenutzbar.
Meine neue Lösung: Erzwingen des vertikalen Scrollbalkens mithilfe der
CSS3-Eigenschaft overflow-y
Anstatt einen „echten“, funktionierenden vertikalen
Scrollbalken mit einem etwas zu hohen body zu erzwingen, lässt sich das Ruckel-Problem
auch viel einfacher beheben. Die CSS3-Eigenschaft overflow-y lässt sich prima
dazu verwenden, auch bei kurzen Seiten einen inaktiven vertikalen Scrollbalken
anzeigen zu lassen. Das reicht völlig aus, denn es geht schließlich nur darum, dass
der Platz des vertikalen Scrollbalkens „reserviert“ ist. Und so geht es:
html {
overflow-y: scroll;
}
Soweit ich das bisher testen konnte, kommen alle Browser
problemlos damit klar und zeigen bei zu kurzen Seiten einen inaktiven
vertikalen Scrollbalken an.
Wichtig dabei: Die Eigenschaft overflow-y muss dem
html-Element zugewiesen werden, nicht dem body. Versucht man letzteres, erhält man in den Internet-Explorer-Versionen 6 und 7 zwei vertikale Scrollbalken
direkt nebeneinander, was seltsam aussieht.
29. Juni 2010 · Thema: Webdesign · 10 Kommentare

Kommentar Nr. 1 · Wednesday, 30. June 2010, 09:06 Uhr
Danke, guter Tipp!
Der Trick funktionierte bei meinen Tests bestens.
Einzige kleine Ergänzung: Der W3C CSS Validierungsdienst meldet nun bei dieser Zeile einen Fehler.

Kommentar Nr. 2 · Wednesday, 30. June 2010, 11:09 Uhr
Danke für diesen Supertipp.
p.s.: ich muss jetzt beim Captcha MODx... eingeben!
Das ist doch so gewollt ;-)

Kommentar Nr. 3 · Thursday, 1. July 2010, 22:37 Uhr
@knuti: Ja, wenn ich mich recht entsinne, ist MODx eines der Captcha-Wörter. Ich muss die Liste bei Gelegenheit mal etwas fantasievoller gestalten.

Kommentar Nr. 4 · Tuesday, 30. November 2010, 10:58 Uhr
Hallo Michael,
dein Tipp war mein Startpunkt, aber dann habe ich noch etwas weiter recherchiert.
Mit
body { overflow-y:scroll; }
und
body { o\verflow:visible; }
trickst man die ollen IEs aus :-)
Und immer schön, mal einen Modxler zu treffen.

Kommentar Nr. 5 · Tuesday, 30. November 2010, 12:35 Uhr
Nachtrag Kommentar:
natürlich nur wenn man es über eine IE7patch-Datei einbaut.

Kommentar Nr. 6 · Tuesday, 28. December 2010, 01:54 Uhr
Wenn man so am MODx basteln ist und über das Suchwort »Captcha« hierher gelangt… Aber Deinen Tipp nehme ich gerne mit ;-)

Kommentar Nr. 7 · Thursday, 31. March 2011, 09:55 Uhr
Hallo,
aber wie kann man dann das Problem im W3C CSS Validierungsdienst ausschalten? Dort wird nun angezeigt:
Die Eigenschaft overflow-y existiert nicht in CSS level 2.1, aber in : scroll scroll
Das sieht sehr unschön aus, wenn dort ein Fehler angezeigt wird.
Würde mich über einen hilfreichen Tipp sehr freuen.
L.G. Silke

Kommentar Nr. 8 · Thursday, 31. March 2011, 10:09 Uhr
@Silke: Da darfst du mich nicht fragen. Auf HTML-Validierung achte ich zwar. Aber weil man bei CSS immer mit haufenweise Hacks und Tricks arbeiten muss, achte ich übrhaupt nicht auf CSS-Validierung.

Kommentar Nr. 9 · Thursday, 1. September 2011, 15:34 Uhr
Hallo,
Naja, die CSS Validierung kann meiner Meinung nach sehr sinnvoll sein z.B. wenn man ein Semikolon vergessen hat o. ä.
Bei browserspezifische Präfixe hört die Validierung jedoch auf. Zusätzlich lässt die Warnung "Die gleichen Farben für den Vordergrund und den Hintergrund in den zwei Kontexten " meinen Puls rasant ansteigen. Diese Warnung kommt selten alleine.
Meine Lösung den W3C Validator zu umgehen: einfach das Stylesheet vor dem Validiator verbergen.
Mehr dazu mehr auf meiner Webseite http://www.rocking-minds.org/blog/2011-08-31/the_w3c_css_validation_hack (Anleitung auf Englisch)
Ich hoffe ihr könnt etwas mit meinem kleinen "Hack" anfangen.
Gruß Johannes

Klaus Rascher
Kommentar Nr. 10 · Saturday, 10. December 2011, 13:34 Uhr
Maximalen Dank. Seeeeehr hilfreicher Hinweis.