Full page layout in HTML mit Scroll-center
Ich habe eine Pflicht zur Erstellung einer HTML-layout wie folgt:
- Die Seite soll fließen zu besetzen, um den verfügbaren Platz im browser-Fenster
- Es sollte eine Feste Höhe, Kopf-und Fußzeile
- Den zentralen Bereich einnehmen sollte die Verbleibende Höhe
- Der zentrale Bereich ist aufgeteilt in drei Spalten. Jede dieser Spalten soll unabhängig scrollbare sollte der Inhalt größer sind als der verfügbare Bereich.
Hatte, habe ich dieses mittels einer Tabelle mit der Höhe 100% (funktioniert eventuell mit ein bisschen tweaking) mit den oberen und unteren Zellen mit festen Höhen. Dies lässt den zentralen Bereich zu besetzen, um den verbleibenden Platz. Dieser Bereich enthält eine weitere Tabelle mit drei Spalten. Jede Zelle enthält ein div mit Höhe und Breite auf 100% gesetzt und overflow auf auto gesetzt. Es scheint, wie es sollte funktionieren, aber überschüssige Inhalt einfach bewirkt, dass der Haupt-Tabelle zu erweitern, seine Höhe, so dass die ganze Seite wird Scrollbar.
Kennt jemand irgendwelche Beispiele dieser Arbeit in der Praxis? Die Lösung wird voraussichtlich einigermaßen cross-browser-aber nicht für jeden Ecke Fall.
Dank,
Phil
Update
Ich habe herausgefunden, eine Lösung, und veröffentlicht es als Antwort hier.
- Dein "update" gehen sollte, als Antwort, nicht als eine änderung der Frage.
- Danke, ich hatte nicht bemerkt, dass Sie Ihre eigene Frage zu beantworten.
- Durch das "fließen soll, zu besetzen, um den verfügbaren Platz", meinst du, dass es haben sollte 100% Höhe die ganze Zeit, oder dass Sie sollten erweitern Sie mit dem Inhalt?
- Ich meine, es sollte 100% Höhe die ganze Zeit (also 100% des browser-Fensters). Wenn der Inhalt in #center ist größer als der Raum, dann sollte es Scrollbar ist. Ebenfalls für #Links und #rechts.
- Dort gehen Sie, nicht-Tabelle Antwort.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hinweis: ich gehe davon aus HTML5 und CSS3 hier, hielt sich aber auf Eigenschaften, die in den meisten Browsern funktionieren. Der HTML5 kann leicht ausgetauscht werden für HTML 4.01.
Zu erstellen, die Art von layout, das Sie möchten, beginnen wir mit einigen grundlegenden HTML:
Die Schwierigkeit ist dieses styling nach Ihren Bedürfnissen. Ausgehend von der Einstellung einer 100% Höhe auf, so viel wie möglich, zusammen mit geeigneten überlauf Werte, wir erhalten etwas, das sehr nah an, was Sie wollen:
Leider, das macht das layout exakt 100px (die kombinierte Höhe der Fußzeile und Kopfzeile) zu groß. Um dies zu beheben, müssen wir verringern die Höhe der
#content
um den gleichen Betrag, aber die standard-box-Modell nicht für diese erlauben. Geben Sie diebox-sizing
(die unterstützt von allen gängigen Browsern außer dem IE7), die wir verwenden können, ändern Sie den box-Modell verwendet wird. Mit derborder-box
box-Modell, die Polsterung ist enthalten in der Höhe und als solche können wir "entfernen" die notwendige Höhe von#content
:Siehe auch dieses JSfiddle demo und die full-screen-Ergebnis für weitere details.
Gibt es mehrere Beispiele für diese Art von layout zur Verfügung. Einer der besten ist Matthew Levine ' s "Heilige Gral"," komplett mit tutorial.
Beachten Sie, dass dieses layout nicht fix die Fußzeile am unteren Rand des Bildschirms. Sie können dies tun, indem Sie die Einstellung
body
(oder ein allumfassendes div) Höhe bis zu 100% und mitoverflow:hidden
aber das führt potentielle usability-Probleme. Sie können feststellen, dass es am besten ist, lassen Sie Ihre Seite erweitern, auf die richtige Höhe ein, wie gebraucht.Dachte ich eine Lösung, es ist nicht elegant, aber es funktioniert. Ich erstellte eine Tabelle auf 100% Höhe. Ich habe dann Hinzugefügt, eine Funktion, die ausgeführt wird, auf load und Größe. Dieser erhält die Höhe des Fensters und zieht es auf die Höhe der Kopf-und Fußzeile, es setzt dann die Höhe eines div in zentral zu sein, dass die Verbleibende Höhe. Die größte Schwierigkeit war, kommen mit eine genaue Fenster-Höhe, durch verschiedene bits googeln, kam ich auf die folgende, die scheint gut zu funktionieren:
}
display
Werte.colspan
Attribut. Auch Browser zu unterstützendisplay: table-*
die mangelnde colspan und rowspan es so machen, dass es viele Probleme in der Tat, die nicht gelöst werden können, in CSS ohne Tabellen (oder auch ohne exzessive Bösartigkeit/flimsiness).