Layout met 100% hoogte
Wat velen willen, maar niet lukt
Iets wat velen reeds hebben gevraagd via e-mail en wat ook veel ter sprake komt op verschillende forum’s, maar wat weinigen weten:
Hoe maak je een pagina die 100% hoog is - dus de gehele viewpoint in beslag neemt - terwijl er eigenlijk weinig tekst of inhoud in staat ?
Eén van de oplossingen hiervoor is min-height, maar natuurlijk, - daar hoor je de de lange baard weer aankomen - het werkt niet crossbrowser, ik hoef hier geen verwijzing te maken.
Met header én footer ?
Maar natuurlijk, met de nodige know-how kan je alles verwezenlijken. Om met header én footer 100% hoogte te hebben moet men eerst een container aanmaken waarin de header en footer zich bevinden.
<div id=”container”>
<h1>Header</h1>
<div id=”inhoud”>
…
</div>
<div id=”footer”>Footer</div>
</div>
De truckendoos geopend
Om nu 100% hoogte te hebben moeten we verschillende dingen doen, ten eerste gaan we body en HTML aanspreken, daar deze de parents zijn van onze #container:
html, body {
height: 100%; /* héél belangrijk */
}
Daarna zeggen we met een IE specifieke manier dat de container ook 100% moet zijn met een klein truckje:
#container {
position: relative;
min-height: 100%;
height:auto !important; /* voor moderne browsers */
height:100%; /* voor IE */
}
min-height word niet ondersteund door IE, daarom dat we nadien - laatste regel - nog eens de waarde in IE-taal vastzetten, moderne browser zullen voorrang geven aan de voorlaatste regel en deze ook waarachtig uitvoeren, daarmee halen we het voordeel voor IE nadien nog eens te bepalen.
De footer
Met de footer moeten we ook iets speciaal doen, het zal je misschien zijn opgevallen dat er position: relative in de #container staat, dus kunnen we nu de footer absolute positioneren, als je niet weet waarover ik het heb lees dan het artikel: Het absolute relatief maken.
Door deze methode toe te passen kunnen we de footer ook echt helemaal onderaan zetten, deze trekt dan als het ware de #container naar onderen.
#footer {
position: absolute;
bottom: 0; /* heel belangrijk */
}
En natuurlijk kun je een echt online voorbeeld van dit alles bekijken, dat je ziet dat ik hier gene zever in pakskes verkoop.
Gelezen: 12629 | Styling, XHTML, CSS, Tutorials
Trackback/Pingbacks
- Newbies en hun problemen | Nono
Reacties op: Layout met 100% hoogte
-
toch zit er nog een kleine ruimte onderaan in Firefox (en Netscape)…waarschijnlijk, hopelijk, is er nog iets over het hoofd gezien? maar om de body en html ook aan te spreken wordt inderdaad vaak over het hoofd gezien :))
-
Jammer dat het niet werkt… in Firefox. Firefox laat de pagina nog iets scrollen, wat natuurlijk neit zo hoort. Engelstalig is veel te vinden, kijk eens in de source van deze twee:
footerstick
en
Sticky Footer
-
Dit is inderdaad een mooie werkwijze. Ik heb deze al een paar keer toegepast en die werkt heel erg mooi (behalve in Opera dacht ik).
-
In FF werk het bij mij niet zo goed, zit ruimte tussen de onderkant van de vieuwport en de footer. In IE werkt ie wel. Je kunt er ook voor kiezen de footer buiten de container div te plaatsen. Op deze site vond ik info over de “footer stick (alt)”. Werkt voor mij altijd prima.
-
In Firefox krijg ik een vervelende scrollbar er bij.
-
Dit ziet er in Firefox inderdaad niet zo fris uit…
De scrollbar komt door een fout in de xhtml: binnen je footer div wordt een paragraaf element gesloten terwijl er geen geopend was. Indien je de openingtag zou zetten zit je nog met een probleem: de hoogte van de footer wordt bepaald in pixels (
height:40px) terwijl de inhoud en de padding van de footer in ems staat, met als gevolg dat je footer een overflow krijgt.In de code kwam ik trouwens een illegale tag tegen: <center>. Waar gebruik je deze voor?
En ik denk dat je viewport bedoelt ipv viewpoint, niet?
-
Mooie en handige manier.
Het voorbeeld werkt goed in de laatste versie van Opera.
Om het online voorbeeld te testen in andere browsers heb ik deze toegevoegd aan browsershots.
Jammergenoeg is niet alles toegelaten omdat de queue langer is dan 60 minuten. Misschien nog eens op een ander tijdstip proberen.
-
@Danny: inderdaad, mijn fout had die div moeten afsluiten, is gebeurd nu. Die illegale
centeris iets voor de belstat counter, trouwens is dit bewust gekozen, weet dat het niet goed is, maar de pagina dient als voorbeeld, niet als showcase voor correcte code, daarmee bedoel ik de voorbeeld code, die is correct, niet wat erachter komt.
-
Effe bijkomend vraagje over ‘height’: Hoe kan ik een doorzichig iframe leggen over de ganse hoogte van mijn pagina. Waarom: ik wil een showModalDialog imiteren in FF. De ‘dialoog’ die getoond wordt moet eerst worden beantwoord eer je met de app verder mag. De onderliggende elementen worden dus afgeschermd door een iframe.
Waarom een iframe en geen div: omdat een iframe het bijkomend voordeel heeft de comboboxen niet door mijn dialog te laten ‘floepen’ in IE.Mijn iframe moet dus zo hoog worden als mijn pagina hoog is.
Met dank!
-
Volgens mij is die
divnog steeds niet afgesloten. Een harde refresh geeft ook geen andere broncode.
Als dedivwordt afgesloten en de pagina is correct dan is de code zeer bruikbaar
-
DE code zal op zich wel goed zijn in het voorbeeld maar de stats pagina link die er bij staat is nog niet in de totale div opgenomen, en die zorgt voor een verspringing in het totaal.. wordt dus bij die 100% opgeteld
-
display:tablekan ook wonderen doen
-
Heb ik (een absolute nono) dankzij jouw oplossing een lay-out met 100% hoogte met 3 kolommen gecombineerd, nu blijkt dat:
1. de kolommen niet doorlopen.
2. er geen plaatjes in de kolommen (zonder inhoud) verschijnen
Nu wil ik de 2 buitenste kolommen voorzien van plaatjes met lijntjes en de boel toch ‘liquid’ gaan maken.
Help!
Een test kan je zien op deze pagina
-
Je hebt de “container” 100% hoogte gegeven, maar niet de 3 kolommen
-
Na veel prutsen krijg ik deze pagina niet aan het werk in mijn website… En ik weet waarom
Als je in firefox bij pagina-info kijkt zul je zien dat de pagina geparsed wordt in quirksmode, zeg maar compatibiliteitsmodus.
Dit komt doordat er geen doctype opgegeven is.
In mijn website die als strict wordt geparst werkt het niet. Kan je hier eens naar kijken ?
-
@Javache: ik heb de voorbeeld-pagina aangepast, DOCTYPE toegevoegd, en charset, en de pagina wordt dus nu niet meer in quirksmode getoond, en werkt nog steeds.
Kan je misschien eens een voorbeeld tonen ?
-
Mmh, was waarschijnlijk meer een fout in logica bij mij dan in css-techniek. Wat ik trachtte te bereiken was dat het content gedeelte altijd zo groot mogelijk is. Ik dacht dat dit bij jou zou was maar eigenlijk is het gewoon een witte actergrondkleur.
-
Helemaal onderaan de footer is nog 1px (? in ieder geval een klein ****-stukje) witruimte over. Te zien in IE. Is erg lastig als je een achtergrondafbeelding gebruikt, dan valt het op. Hoe krijg ik die footer echt helemaal onderin in IE?
-
#footer {
position: absolute;
bottom: -1px; /* een beetje mee spelen */
}
-
Als de inhoud van de pagina groter wordt dan het venster, dan lukt het bij mij enkel als de container een absolute positie krijgt (zoals in deze pagina).
Anders plaats de footer zich onderaan de viewport en niet onderaan de tekst, wat dus zeer lelijk is, want de footer scrollt dan gewoon mee.
-
Hallo Mark,
Deze code heeft me heel erg veel geholpen bedankt!
Ik heb alleen nog een vraagje.
Ik heb zeg maar dit:
HEADER
CONTENT
FOOTERMaar ik wil dat content 100% height is zeg maar (de tussenliggende ruimte van header en footer) aangezien er onderaan een scrollbalk moet komen (tegen de footer aan).
Is hier ook een oplossing voor?Alvast bedankt.
Riny van Tiggelen
-
Probeer eens met 105% of meer.
-
Super, eindelijk eens een korte en begrijpelijke uitleg. Trouwens ik heb mijn ogen uitgekeken op deze site, zeer handig materiaal!
Nu mijn vraag. Ik ben een beetje aan het spelen geraakt met dit voorbeeld. Alles goed en wel tot zover. Alleen wat doe ik als de content groter is dan wat de viewport kan laten zien. Ik wil geen tekst in tweeën hakken. Ik heb op mijn eigen site een div-block met een vaste hoogte/breedte en ernaast twee div-tags met een scrollscript erin. Dat werkt perfect. Maar ik wil graag dat de header bovenin blijft en de footer onderaan het browservenster blijft. Echter, als er “teveel” content wordt geladen dan krijg ik toch die lelijke scrollbalk rechts, omdat de content-gedeelte zich helemaal verticaal uitstrekt. En dat wil ik juist niet, want ik heb daar die div-scrollscript-tags voor.
Ik heb me sufgepiekerd, maar ik krijg het niet voor elkaar.
-
Heel mooi uitgelegd, het heeft mij goed op weg gezet. Maar ik heb nu een andere uitdaging: het middenste gedeelte in 4 kolommen onderverdelen, en die van header tot footer doen lopen. Zie
Alle hulp welkom.
-
Geweldige site, heeft mij erg op weg geholpen!.
Maar ik zou graag antwoord willen zien op de 2 posts boven die van mij.
(hier worstel ik ook mee).Keep up the good work!.

-
Inderdaad fantastische site, heb dit artikel toegepast en het werkt perfect maar zoals Ralf heb ik ook het probleem dat de footer mee scrollt wanneer de pagina te groot is om weer te geven in de viewport.
Nogmaals bedankt voor dit schitterend stukje code
-
als ietst niet werkt in FF heb ik een heel simpele oplossing! gewoon geen FF gebruiken, want waarom iets maken dat door nog geen 20% van de wereld bevolking met een iternet-verbinding word gebruikt.
-
Ehmm FF wordt dan door 20% gebruikt, dit is toch al aardig veel als je bedenkt hoeveel mensen er wel niet Windows gebruiken. En Internet Explorer hanteert de html regels niet echt zuiver, FF doet dit wel weer. FF is dus veel beter dan IE. Ik heb iedere keer weer als ik een site maak het probleem dat IE totaal niet meewerkt. FF mag van mij dus echt wel de nieuwe standaard worden en ik support het dan volledig!
-
ik heb gemerkt dat vele van jullie klagen over de scrollbar in FF, deze is heel simpel weg te halen door:
margin:0; padding:0;te zetten bij dehtml, bodyin je CSSverder is het een leuke oplossing.
-
Thanks voor de duidelijk uitleg, ik heb het bij m’n oude site en andere projecten gebruikt en het werkt perfect. Alleen m’n nieuwe site vertikt het om de footer netjes onderaan de site te houden.
Ik heb al diverse dingen geprobeerd, zonder succes.
Mocht er iemand naar willen kijken heeeeel graag.
OntwerpAlvast heel erg bedankt.
Marcel
-
in Opera staat hij netjes onderaan
-
Mm weird, laat ik nu net geen opera hebben en het alleen op FF en IE checken

Enig idee waar het aan zou kunnen liggen?
-
Opgelost!
Het probleem zat hem in het feit dat als de tabjes (links en rechts) qua hoogte langer waren dan de content zelf, dan zat de footer niet meer helemaal onderaan (nog onder de tabjes), maar bleef hij onder de content hangen.
link
-
Hmm.. Ik ben nu zelf met een site bezig en wou dit ook wel doen.. nou de footer blijft netjes aan de onderkant staan.. maar het probleem zit hem bij mij bij de content.
zodra er te weinig content in zit, houdt de achtergrond van de content te snel op en heb je zeg maar een gap tussen de content en de footer. Daar zou ik de achtergrond van de content door willen laten lopen, ook al zit er verder geen content meer in. Kan dit?
En zodra er teveel content in zit, staat de footer netjes onderaan.. voor 100% ja.. maar zodra ik zoveel content heb voor een scrollbar blijft de footer op 100% staan en gaat de content onder de footer door.. en dit is al helemaal een raadsel voor me.
Iemand een idee?
-
Ah.. ik heb het probleem soort van opgelost, door de 100% height van de container weg te halen of met een hack te doen, zodat hij alleen werkt in IE zorgt ervoor dat de footer niet meer over de content heen zit zodra de content te lang wordt…
Maar als je hem geheel weghaalt dan heb je in Internet Explorer niet meer dat de footer ook aan de onderkant blijft zitten in internet explorer. En hacks komen niet door de CSS validator.. dus.. dat zuigt..
-
Hartstikke bedankt voor de uitgebreide uitleg=). Zeer usefull.
Grtz,
-
Voor Firefox moet je een overflow:auto; in je containerdiv zetten. Dan heb je er geen ruimte eronder. Bij mij niet in ieder geval.
-
Goed man, werkt prima. Ik heb ‘m getest in IE6, IE7, FF, Netscape en Opera.
Als ik op gegeven moment een height gaf aan de footer ging het niet goed in IE6, maar daar kom ik wel uit
thnks
-
Als de content langer is dan 100%, dan gaat ie onder de footer door. Is hier iets aan te doen?

-
Heel proper!
Toch heb ik in tegenstelling tot anderen in elke browser nog een scrollbar onder de footer met lege ruimte ?
Weet iemand hoe ik daarvan af kan ?
-
Chris ik heb je site eens bekeken, voordat je je site op 100% hoogte insteld is het misschien slim eerst deze tutorial eens door te nemen.
Dan heb je iets meer inzicht in hoe om te gaan met div’s.
-
Goedemiddag,
Ik ben al een tijdje bezig geweest met bovenstaande handleiding om de footer onder in het scherm te krijgen. Ook bij mij gaat zodra de content meer als 100% wordt onder de footer door.
Is er al iemand die hier een geschikte oplossing voor te vinden, zodat de footer wel naar beneden schuift?
-
Is de ruimte in Firefox waar iedereen het over heeft niet gewoon veroorzaakt door het Belstat grafiekje?
-
Sticky footer and header lukt me wel, maar wat niet lukt is om de inhoud van ” verticaal gecentreerd te krijgen. Horizontaal lukt het me wel, maar vert.. pffff
-
Fijn script, alleen werkt het niet altijd: bij weinig content (dus met loze ruimte tussen de content en de footer) is een ‘bottom: 0px; ‘ prima, maar wanneer de content groter is, dan moet de footer uit het scherm gedrukt worden als het ware en dan dient de bottom-waarde de hoogte van de footer aan te nemen.
Op deze site heb ik een beter werkende oplossing gevonden.
Toch bedankt voor de moeite, je had me wel op weg geholpen!
-
IJzersterke oplossing!
Heb nog wel een vraagje:
Omdat ik een gradient in de achtergrond van mijn contentvlak wil gebruiken en ook weer een andere achtergrond voor de container heb, dient de div in de container ook 100% hoog te zijn. Ik heb nu de volgende code:html, body {
height: 100%;
}#container {
position: relative;
margin: auto;
width: 984px;
background-image: url(../img/bg_container.jpg);
min-height: 100%;
height: auto !important;
height: 100%;
}#wrap {
position: relative;
width: 960px;
background-image: url(../img/bg_wrap.jpg);
min-height: 100%;
height: auto !important;
height: 100%;
}De #wrap bevindt zich in de #container, maar strecht dus niet. Is dit mogelijk?
Alvast dank
-
Deze ga ik eens proberen om mijn footer altijd beneden te krijgen, ook in IE6. Bedankt!
-
Aha, ik heb jullie door….
Gewoon het inhoud element dezelfde kleur geven als de container….






