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

8 reacties tot nu toe

Rob Frederix

Rob Frederix zei 12 weken 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 10 weken 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 10 weken geleden:

Zeer handig en gemakkelijk!

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

Unexpected zei 9 weken geleden:

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

Webdesign zei 9 weken geleden:

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

r4 kaart zei 8 weken geleden:

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

David Candreva zei 8 weken geleden:

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

Thomas zei 1 week 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!

Reageer op dit artikel

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

RSS Feed

Bekijk alle tags

Laatste reacties

  • Christof: Hoe minder een advertentie op een advertentie lijkt, hoe beter de CTR. Tekst onderlijnen zodat...
  • Luk Balcer: Belangrijk om te beseffen is dat het niet enkel gaat over de 'vorm'. Bij versie B maak je een...
  • Gert Bangels: Hoe meer je advertentie op een banner lijkt, des te slechter de conversie. mensen negeren...
  • Christof: Conclusie is dus dat het design zonder design het beste doet ;-)
  • Joggink: @Davy, de tekst zal er zeker toe doen. Doet me denken aan firefox die bij hun "download" knop het...