english English

Een crossbrowser sticky footer maken

Een sticky footer is een footer die altijd onderaan de pagina staat ongeacht hoe hoog de content van de pagina is. Geregeld kreeg ik de vraag hoe men dit gemakkelijk kon realiseren, vandaar dat ik het nuttig vond om dit kort via een blogpost uit te leggen. In deze tutorial leer je op een snelle en gebruiksvriendelijke manier een sticky footer te maken.

Wat is een goede Sticky Footer?

Op het internet kan je enkele tientallen voorbeelden vinden van hoe je een sticky footer kan maken, de een is al wat efficiënter dan de andere.

De kenmerken van een goede sticky footer:

  1. Gebruikt uitsluitend semantische tags
  2. Geen hacks nodig
  3. Crossbrowser compatibiliteit

De ultieme sticky footer maken

In slechts 2 stappen leer je een crossbrowser footer te maken. In deze tutorial gaan we er wel vanuit dat je over basiskennis HTML en CSS beschikt.

Stap 1: Een nieuw HTML document maken

Maak een nieuw xHTML-document en stel zeker een doctype in, deze stel je best in als xHTML 1.0 transitional of xHTML 4.0.1 strict/transitional.

Je kan onderstaande code kopiëren en plakken in een .html bestand.


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Sticky Footer</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>

<body>

<div id="wrapper">

	<div id="content">
		
		<h1>Pagina titel</h1>
		
		<p>Content komt hier</p>

	</div>
		
	<div id="push"></div>
</div>

<div id="footer">
	<p>Footer - ©2009</p>
</div>

</body>
</html>

Stap 2: De CSS

In de eerste regel gaan we de selector * gebruiken om alle elementen op onze pagina te resetten door de property margin de value 0 toe te kennen. Als volgt gaan we de body en html selector een height van 100% geven, dit zorgt ervoor dat de eerste div in de body een hoogte van 100% krijgt. Vervolgens zorgen we ervoor dat de div #wrapper een minimum hoogte van 100% heeft. Je ziet ook dat we height: auto !important gebruiken, dit is een *propere hack* om min-height in Internet Explorer 6 aan de praat te krijgen. De vierde property heeft een negatieve margin die even hoog is als de footer en de push div die op de laatste CSS regel wordt gedefinieerd.

Maak een nieuw CSS bestandje aan en link deze aan het html bestand. Deze code kan je ook kopiëren en plakken.


* { margin:0; } /* alle elementen resetten, best de Yahoo! reset gebruiken of iets vergelijkbaars */

body, html{ height:100%; } /* De body en html 100% hoogte geven */

div#wrapper{ min-height:100%; height:auto !important; height:100%; margin:0 auto -60px; } /* negatieve margin is gelijk aan hoogte van de footer */

div#push, div#footer{ height:60px; } /* De footer en de push div een gelijke hoogte geven */

Conclusie

Zoals je ziet is het maken van een sticky footer erg simpel. Oplossingen die je op het internet kan vinden met browserhacks zijn allemaal overbodig of richten zich op browsers die in de praktijk niet meer gebruikt worden.

Bekijk hier het resultaat of download de bronbestanden.

RSS reacties feed

17 reacties tot nu toe

Rob Frederix

Rob Frederix zei 2 jaar geleden:

Interessante blogpost @David, ik had het op deze manier nog niet voorzien binnen mijn projecten, ga het zeker eens uitproberen.
Webdesign Roosendaal

Webdesign Roosendaal zei 2 jaar geleden:

Ontzettend netjes! Zo pak ik het zelf bij mijn eigen projecten ook aan.

Je kan nog een stap verder gaan door de IE6 hack in een apart IE6 css bestand te plaatsen trouwens.
Bjorn Ruysen

Bjorn Ruysen zei 2 jaar geleden:

Zeer handig en gemakkelijk!

Net ingeplant in een bestaand project en het was zo gebeurd, merci!
Unexpected

Unexpected zei 2 jaar geleden:

Mooi postje! Thanks! Ga het ook eens proberen.
Webdesign

Webdesign zei 2 jaar geleden:

Bedankt voor de interessante post. Ik ga er meteen mee aan de slag.
r4 kaart

r4 kaart zei 2 jaar geleden:

Nette oplossing, was precies wat ik zocht bedankt!
David Candreva

David Candreva zei 2 jaar geleden:

Fijn om te lezen dat er al een paar mensen mee vertrokken zijn!
Thomas

Thomas zei 2 jaar geleden:

Goede duidelijke post! De negative margin is inderdaad een goede manier om dit te doen. Op http://www.dave-woods.co.uk/index.php/css-fixed-footer/ ben ik een soortgelijke manier tegengekomen, werkt ook met de negative margin. Overigens staan daar nog een aantal hele goede CSS tips.

Keep it up!
r4 flash kaart

r4 flash kaart zei 2 jaar geleden:

great, very helpful, keep it up.
Hypotheekrente overzicht

Hypotheekrente overzicht zei 2 jaar geleden:

Leuke post. Ik vraag me wel af of zo'n sticky footer op elke pagina goed is ivm seo. Op elke pagina dezelfde x aantal links. Dit ga ik nog even uitzoeken.
Boudewijn

Boudewijn zei 1 jaar geleden:

Duidelijke tutorial, zelf maak ik ook gebruik van zo een sticky footer.
ps3 gamer

ps3 gamer zei 1 jaar geleden:

thank's for the info :)
wva

wva zei 51 weken geleden:

Een erg goed uitleg, en de footer werkt prima, bedankt!
Controvi

Controvi zei 29 weken geleden:

Hey,

Goede duidelijke uitleg.

Voor diegene die waarbij het niet werkt in eerste instantie, zoals bij mij.

Geef de 'push' div een breedte.
Anders krijgt de div de hoogt niet.

Maar echt bedankt.
Dit ga ik vaker gebruiken.

groeten
Oldtimerverzekering

Oldtimerverzekering zei 9 weken geleden:

Thanks voor deze post, dit zocht ik. En @Controvi... dat deed het voor mij ;) thanks.
Aloneal

Aloneal zei 5 weken geleden:

Helemaal toppie toppie. Die * { margin:0; } heb ik niet gebruikt. Dan kwam mijn gecentreerde site helemaal links te staan. In plaats daarvan heb ik in CSS body de top- en bottom-margin op 0 gezet en de left- en right-margin op auto.

Verder wilde ik dat mijn copyright net een kleine regel boven de onderkant van de pagina zou zweven. Dat heb ik rechtgetrokken door !important margin een extra -30px mee te geven.

Ik had het alleen niet klaar gekregen. Dus heel fijn dat er pagina's als deze op het www te vinden zijn.
Kredietsimulator

Kredietsimulator zei 2 weken geleden:

Prima oplossing zo, ook toegepast. Thanks!

Reageer op dit artikel

Toegelaten tags: <a href="" title=""> <code> <em> <strong>

RSS Feed

Bekijk alle tags

Laatste reacties

  • Tom Claus: @Filip Bedankt voor de tip, CouchDB gaan we zeker even mee bekijken. @Fabio Deze...
  • Fabio Maggio: Is die presentatie van Masterizing PHP Data Structure ook nog ergens te bekijken?
  • Tom Hermans: Thx Tom, schone samenvatting en een massa interessante links, ideaal voor mensen die die dag...
  • Filip Stas: Als MongoDb je al boeit zeker ook eens kijken naar couchbase ook zeker de moeite!
  • Dragolin: Wij proberen in 2012 alvast sportief Vlaanderen warm te maken voor sportieve experiences :)