Hi,
ich hoffe, ich habe Dein Problem richtig verstanden.
- Dein Layout soll immer 100% Höhe des Anzeigebereichs einnehmen
- Oben und unten sollen sich jeweils 20 Pixel Kopf- bzw. Fusszeile befinden
- Der Contenteil soll scrollbar sein
Wie Du schon festgestellt hast, funktioniert eine Grössenangabe über
top und
bottom nur
im IE nicht.
Deshalb muss auf einen Trick zurückgegriffen werden. Es wird der
Box-Model-Bug
des Internet-Explorers ausgenutzt. Und zwar die Eigenschaft, dass die Breite der Rahmen
in die Grössenangaben mit einfliessen. Damit wir es möglich, dem Inhalt 100% Höhe zu geben
und den Abstand von oben und unten mit Hilfe von Rahmen zu realisieren.
Mit Hilfe eines CSS-Filters wird das entsprechende CSS so verändert, dass es nur von IEs
interpretiert werden kann.
Im Einzelnen muss folgendes angepasst werden:
- Zurücksetzen aller Positionswerte (top, bottom) auf Null
- Höhe des Bereichs auf 100% setzen
- Einrücken von oben um die Höhe des Kopfbereiches durch Angabe einer
Rahmenstärke, die der Höhe des Heads entspricht.
- Einrücken von unten um die Höhe des Fussbereiches durch Angabe einer
Rahmenstärke, die der Höhe des Footers entspricht.
Footer und Header werden absolut in einer höheren Ebene (
z-index) positioniert, so dass
sie den entstandenen Rahmen bedecken.
Beispieldokument:
HTML:
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<meta name="author" content="Quaese" />
<style type="text/css">
<!--
body, html{ margin: 0;
padding: 0;
height: 100%;
width: 100%;
overflow:hidden;} /* Scrolling zunächst ausschalten -> im ContentDiv einschalten */
body{ background-color: #f6f6f6;
font-family : "Lucida Grande", "Lucida Sans Unicode", verdana, lucida, sans-serif;
font-size: 12px;}
/* Footer */
#headDiv{ position: absolute;
height: 19px;
width: 100%;
top: 0;
border-bottom: 1px solid #d4d0c8;
z-index: 5;}
/* Positionierung für Nicht-IE-Browser */
#mainDiv{ position: absolute;
top: 20px;
bottom: 20px;
z-index: 1; /* Content-Ebene tiefer als Footer und Head! */
width: 100%;
overflow: auto;} /* Scrollen bei Übergrösse wieder aktivieren*/
/* CSS-Filter: Positionierung des Content-Divs im IE */
*html #mainDiv{ top: 0;
bottom: 0;
height: 100%;
border-top: 20px solid #f6f6f6;
border-bottom: 20px solid #f6f6f6;}
/* Footer */
#footerDiv{ position: absolute;
height: 19px;
width: 100%;
bottom: 0;
border-top: 1px solid #d4d0c8;
z-index: 5;}
-->
</style>
</head>
<body>
<div id="headDiv">Header</div>
<div id="mainDiv">
<div style="height: 1200px;">Container zum Erzeugen von Höhe</div>
</div>
<div id="footerDiv">Footer</div>
</body>
</html>
Hoffentlich kannst Du damit etwas anfangen.
Ciao
Quaese