Problem mit position:fixed bei IE7
Reini
- css
0 suit0 Reini
0 Gunnar Bittersmann
Hallo,
ich möchte eine einfach aufgebaute Seite per CSS-Layout realisieren. Links das Menü, rechts der Inhalt, beides zusammen im Fenster zentriert. Das Menü sollte allerdings fixiert bleiben, also bei längerem Inhalt rechts nicht nach oben wegscrollen.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<style type="text/css">
#Gesamt {
margin: 0 auto;
width: 800px;
}
#Menue {
float: left;
position: fixed;
width: 300px;
background:#99FF66;
}
#Inhalt {
width: 500px;
margin-left: 300px;
background: #FFFF66;
}
</style>
</head>
<body>
<div id="Gesamt">
<div id="Menue">
Eintrag 1<br>Eintrag 2
</div>
<div id="Inhalt">
Zeile 1<br>Zeile 2<br>Zeile 3<br>Zeile 4<br>Zeile 5
</div>
</div>
</body>
</html>
Das funktioniert im Firefox 3 ideal. Ich möchte aber, dass dies zumindes auch im IE 7 funzt, der ja angebl. nun mit position:fixed umgehen kann. Das Problem ist aber, das der IE das Fixed-Menue-DIV nun über den Inhalt-DIV
legt. Daher ist der nun verbleibende Gesamtinhalt auch nicht mehr zentriert, sondern nach rechts verschoben.
Kann ich das Fixed-feature dennoch irgendwie mit dem IE7 sinnvoll einsetzen?
Kann ich das Fixed-feature dennoch irgendwie mit dem IE7 sinnvoll einsetzen?
der ie7 geht bei fixed afaik davon aus, dass er ursprung immer der viewport des browsers ist - andere elemente mit einer position-eigenschaft abweichend von static sind ihm egal - erst ab der ie8 beta 1 funktioniert das auch im ie
übrigens ist position fixed eine schlechte idee, da es die bedienbarkeit bei kleinen viewports unnötig einschränkt - im schlimmsten fall ersetze die eigenschaft nur für den ie durch ein position: absolute
Hab' mich jetzt in meiner Not noch mittels Trial-und-Error gespielt und irgendwann habe ich dann tatächlich die Lösung gefunden, wie auch der IE7 das Fixed-DIV richtig platziert:
das Eltern-DIV (=#Gesamt"), des fixed-DIV muss position:relativ oder position:absolut sein, weiters dürfen bei fixed keine left,top Werte angegeben werden, sonst wird beim IE7 relativ zum Viewport platziert.
Auf float:left habe ich nun verzichtet, stattdessen den Inhalt-Div absolut zum Eltern-DIV platziert.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<style type="text/css">
#Gesamt {
position:relative;
margin: 0 auto;
width: 800px;
}
#Menue {
position: fixed;
width: 300px;
background:#99FF66;
}
#Inhalt {
position: absolute;
top: 0px; left: 300px;
width: 500px;
/* margin-left: 0px; */
background: #FFFF66;
}
</style>
</head>
<body>
<div id="Gesamt">
<div id="Menue">
Eintrag 1<br>Eintrag 2
</div>
<div id="Inhalt">
Zeile 1<br>Zeile 2<br>Zeile 3<br>Zeile 4<br>Zeile 5
</div>
</div>
</body>
</html>
@@Reini:
Kann ich das Fixed-feature dennoch irgendwie mit dem IE7 sinnvoll einsetzen?
Wie vorhin schon gesagt: Hole ihn aus dem Quirksmodus!
Live long and prosper,
Gunnar