Teil von SELFHTML aktuell Teil von Artikel Teil von HTML/XHTML

HTML/XHTML:
Horizontale Scrollbalken im Internet Explorer 6 vermeiden

nach unten Elke Wetzig (elya)
nach unten Hinweise zum Thema
nach unten Beispiel mit Erläuterungen
nach unten Lösungsansätze mit dem Quirks-Modus
nach unten Lösungsansatz mit proprietärem Code
nach unten Lösungsansatz mit standardkonformem Modus
nach unten Weiterführende Links

Elke Wetzig (elya)

E-Mail: E-Mail visu.elya@web.de
Homepage-URL: deutschsprachige Seite http://www.visuelya.de

Bei Fragen zu diesem Beitrag bitte die Autorin des Beitrags kontaktieren!

nach obennach unten

Hinweise zum Thema

Im Internet Explorer 6 werden in Frameseiten (auch bei eingebetteten Frames), sobald der Seiteninhalt länger als die Framehöhe wird, zusätzlich zu den vertikalen auch horizontale Scrollbalken eingeblendet. Es gibt auf der Seite keine (überbreiten) Inhalte, die diesen Querscrollbalken rechtfertigen. Das Phänomen taucht nur im standardkonformen Modus des Internet Explorers auf. In diesem Artikel werden verschiedene Lösungsansätze vorgestellt.

nach obennach unten

Beispiel mit Erläuterungen

Eine problematische Frameseite:

Popup-Seite Anzeigebeispiel: So sieht's aus

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
       "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Problemframe</title>
<style type="text/css">
<!--
body {background-color:#F0CB92;
      color:#000;
     }
-->
</style>
</head>
<body>

<h1>Willkommen</h1>
<p>[...]</p>

</body>
</html>

Erläuterung:

Diese korrekte HTML-Seite mit vollständiger Dokumenttyp-Angabe inklusive der Web-Adresse zur Dokumenttyp-Definition (DTD) "http://www.w3.org/TR/html4/loose.dtd" veranlasst den Internet Explorer 6, seinen Darstellungs-Modus auf "standard compliant" – also standardkonform – zu schalten. Innerhalb des Framesets oder eines eingebetteten Frames erscheinen in diesem Modus die horizontalen Scrollbalken.

Ursachen

Die CSS-Spezifikation des W3C unterscheidet bei der Darstellung eines Dokuments zwischen dem so genannten Viewport, also der eigentlichen im Browser sichtbaren Fläche, und einer theoretischen, den Viewport noch umschließende Fläche, dem Canvas. Die Browser bieten den Benutzern einen Viewport, ein Fenster auf dem Bildschirm. Das Wurzelelement des Dokumentbaums (also das <html>-Element) erzeugt eine Box (den Canvas), die als umschließender Ausgangsblock für die Darstellung des Dokuments dient. Ist der Viewport kleiner als der umschließende Ausgangsblock des Dokuments, sollte der Browser Scrollbalken anbieten. Allerdings führen die verschiedene Interpretationen der Browser zwischen <html> und <body> als Canvas auch zu unterschiedlichen Darstellungen.

Man kann nur vermuten, dass hier auch die Ursache des Fehlers im Internet Expoler 6 zu suchen ist, da die beiden Elemente im Elementbaum für diesen Browser nicht korrekt aufeinander abgestimmt zu sein scheinen.

nach obennach unten

Lösungsansätze mit dem Quirks-Modus

Weglassen der Web-Adresse zur Dokumenttyp-Definition

Popup-Seite Anzeigebeispiel: So sieht's aus

Die einfachste Lösung liegt in der Verwendung eines Dokumenttyps (für die einzelne Frameseite), die den IE aus dem standardkonformen in den so genannten Quirks-Modus schaltet, statt

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
    "http://www.w3.org/TR/html4/transitional.dtd">  

wird

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 transitional//EN">

verwendet ("Doctype Switch"). Auf diese Weise ist das Problem schnell behoben. Nachteil dieser Lösung: nach Umschalten des Dokumenttyps interpretiert der Internet Explorer 6 auch alle CSS-Eigenschaften auf seine "alte", nicht standardkonforme Weise. Wurde im CSS das proprietäre Box-Modell für ältere Internet Explorer nicht berücksichtigt, tauchen neue Darstellungsprobleme auf. Da zur Zeit beim Erstellen eines Stylesheets die Internet Explorer der fünften Generation jedoch noch miteinbezogen werden (sollten), ist diese Lösung durchaus brauchbar. Das Dokument ist auch ohne die Angabe der Web-Adresse zur Dokumenttyp-Definition valide.

Nutzung des XHTML 1.1-Dokumenttyps

Popup-Seite Anzeigebeispiel: So sieht's aus

Wer Wert auf eine vollständige XHTML-Dokumenttyp-Angabe legt, kann den XHTML 1.1-Dokumenttyp verwenden:

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

Der Internet Explorer erlaubt im standardkonformen Modus in der ersten Zeile eines (X)HTML-Dokuments ausschließlich eine Dokumenttyp-Angabe wie <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN";>. Durch Hinzufügen der XML-Deklaration in der ersten Zeile des Dokuments ignoriert der Internet Explorer den gesamten Dokumenttyp und schaltet wieder auf Quirks-Modus (ohne horizontale Scrollbalken) um. Dies hat zwar den Vorteil, dass mit einem sauberen XHTML-Dokumenttyp gearbeitet werden kann und das Dokument vollständig valide ist – doch wird der Internet Explorer das Box-Modell auch hier auf seine alte, proprietäre Weise interpretieren.

nach obennach unten

Lösungsansatz mit proprietärem Code

Popup-Seite Anzeigebeispiel: So sieht's aus

Die CSS-Eigenschaften overflow-x bzw. overflow-y sind proprietäre Erweiterungen von Microsoft, sie werden also nur vom Internet Explorer interpretiert.

Die Anweisung html {overflow-x:hidden;} im CSS-Stylesheet schaltet den horizontalen Scrollbalken (immer!) ab. Damit ist der CSS-Code jedoch nicht mehr valide. Zu beachten ist, dass im standardkonformen Modus diese CSS-Eigenschaft dem html- und nicht dem body-Element zuzuweisen ist.

nach obennach unten

Lösungsansatz im standardkonformen Modus

Conditional Comments mit overflow-x kombinieren

Popup-Seite Anzeigebeispiel: So sieht's aus

Eine der zur Zeit elegantesten Methoden ist die Kombination der oben gezeigten overflow-x-Eigenschaft mit den so genannten Conditional Comments. Diese sind eine proprietäre Methode von Microsoft zur Browsererkennung, die jedoch den Vorteil hat, dass sie innerhalb von HTML-Kommentarzeichen stehen und somit von anderen Browsern und dem Validator ignoriert werden. Das Dokument bleibt valide:

<style type="text/css">
html,body {margin:0; padding:0;}
html {background-color:blue;}
body {border:1px solid blue; margin:10px;}
</style>

<!--[if gte IE 6]>
<style type="text/css">
html {overflow-x:hidden;}
body {margin-right:28px;}
</style>
<![endif]-->

Die hier im zweiten Teil notierten CSS-Eigenschaften verhindern hier – und zwar ausschließlich für den Internet Explorer 6+ – die Anzeige des Scrollbalkens. Im gezeigten Beispiel wird neben overflow-x noch der rechte Rand margin-right um die ungefähre Breite des Scrollbalkens vergrößert (diese kann unter verschiedenen Windows-Betriebssystemen (XP, Windows 2000) durchaus schwanken). Aber Vorsicht, es handelt sich hier um einen so genannten "Hack", der möglicherweise nicht zukunftssicher ist, weil heute noch niemand weiß, wie sich zukünftige Versionen des Internet Explorers verhalten werden. Weitere Informationen zu Conditional Comments gibt es auf der Website von Microsoft: englischsprachige Seite About Conditional Comments.

Vorsicht ist ebenfalls geboten, wenn man sich die Option überbreiter Inhalte bei einzelnen Seiten offen halten will. Die Lösungen mit overflow-x schalten den horizontalen Scrollbalken in jedem Fall ab und machen so überbreite Seiteninhalte für den Benutzer möglicherweise nicht erreichbar.

nach obennach unten

Weiterführende Links

Die folgenden Stellen wurden für die vorgestellten Lösungsansätze als Quellen herangezogen und bieten weiterführende Lektüre zum Thema:

bereichsübergreifende Seite SELFHTML: Dokumenttyp-Angaben
deutschsprachige Seite Carsten Protsch: Der DOCTYPE-Switch und seine Auswirkungen
englischsprachige Seite Doctypes and their respective layout mode
englischsprachige Seite evolt.org: Zusammenhang der Elemente html und body mit und ohne Dokumenttypangabe und mit detaillierten Beispielseiten
englischsprachige Seite torn.be: Horizontal Scrollbar bug, ausführliche Darstellungsanalyse
bereichsübergreifende Seite SELFHTML-Forumsarchiv: Molilys Beispiel der Conditional Comments mit einem weiteren, nicht validen Hack
englischsprachige Seite MSDN Library: CSS Enhancements in Internet Explorer 6 (grafische Darstellung des Box-Modells)

Teil von SELFHTML aktuell Teil von Artikel Teil von HTML/XHTML

© 2007 bereichsübergreifende Seite Impressum