Machen Sie ein div-füllen Sie die Höhe des verbleibenden Platz auf dem Bildschirm

Arbeite ich an einer web-Anwendung, wo ich will, die Inhalte zu füllen, die Höhe des gesamten Bildschirms.

Die Seite hat einen header, der ein logo und Konto-Informationen. Dies könnte ein beliebiger Höhe. Ich will den content div zu füllen den rest der Seite nach unten.

Ich habe einen header div einem Inhalt div. Im moment bin ich mit Hilfe einer Tabelle für das layout etwa so:

CSS-und HTML -

CSS:

#page {
    height: 100%; width: 100%
}

#tdcontent {
    height: 100%;
}

#content {
    overflow: auto; /* or overflow: hidden; */
}

HTML:

<table id="page">
    <tr>
        <td id="tdheader">
            <div id="header">...</div>
        </td>
    </tr>
    <tr>
        <td id="tdcontent">
            <div id="content">...</div>
        </td>
    </tr>
</table>

Die gesamte Höhe der Seite gefüllt ist, und kein scrollen erforderlich ist.

Für alles, was in die content-div-Einstellung top: 0; wird es direkt unter dem header. Manchmal wird der Inhalt einer realen Tabelle, mit seiner Höhe auf 100% gesetzt. Setzen header innen content wird nicht zulassen, dass dies funktioniert.

Gibt es eine Möglichkeit, den gleichen Effekt erzielen, ohne die table?

Update:

Elemente innerhalb des content - div haben Höhen eingestellt Prozentsätze als gut. So etwas zu 100% innerhalb des div füllen Sie es auf den Boden. So werden zwei Elemente bei 50%.

Update 2:

Beispielsweise, wenn der header nimmt 20% des Bildschirms in der Höhe, einer Tabelle angegeben, bei 50% innerhalb #content dauern würde, bis 40% der Platz auf dem Bildschirm. So weit, wickelt das ganze in einer Tabelle ist das einzige, was funktioniert.

  • Für alle, stolpern hier in der Zukunft, können Sie die gewünschte Tabelle in den meisten Browsern, ohne die Tabelle markieren, indem Sie mit display:table und die dazugehörigen Eigenschaften finden Sie unter die Antwort, eine sehr ähnliche Frage.
  • Ich habe versucht, recereate Ihre setup - jsfiddle.net/ceELs -, sondern seine nicht funktioniert, was bin ich vermisste?
  • Alien-die Antwort ist einfach und nützlich, check it out http://stackoverflow.com/a/23323175/188784
  • Eigentlich ist das, was Sie beschreiben, funktioniert nicht, auch mit Tabellen: wenn der Inhalt nimmt mehr vertikalen Platz als die Bildschirmhöhe, die Zelle in der Tabelle und die gesamte Tabelle zu erweitern, über den Schirm unten. Ihr Inhalt ist overflow:auto wird keine scrollbar angezeigt.
  • es wird funktionieren, nachdem Sie die Höhe des übergeordneten Elements, Blick auf jsfiddle.net/ceELs/5
  • .screenful: {height: 100vh} im entstehen ist, fügen Sie box-sizing: border-box; enthalten Polsterung.
  • Also Leute verpasst nicht das offensichtliche: Wenn passiert zu sein, nur einige css-Eigenschaften (wie background-color), die Sie brauchen, um füllen Sie die restlichen Seite, dann könnten Sie festlegen, dass css auf das body-element.

Schreibe einen Kommentar