Jasper
Ep2 Admin
     
Berichten: 15.056
Lid sinds: 04-2006
Reputatie: 223
|
XHTML, CSS layout 100% height met zelf in te stellen hoogte van je footer!
Wederom een behoorlijk lange titel, maar dat is ten eerste goed voor de zoekmachineresultaten en ten tweede heb ik écht geen idee hoe ik dit korter uit zou moeten leggen...!
DE HTML Template, Deel 2!
Introductie
Zoals ik besprak in mijn vorige tutorial, is het dus met een website die opgebouwd is met semantische HTML zonder het gebruik van tabellen voor layout dus heel goed mogelijk om je website altijd op 100% schermhoogte te krijgen! Alleen er ontbrak nog één dingetje, wat die layout perfect zou maken: Een zelf in te stellen hoogte van je footer! Dit moest in procenten en daardoor werd het ineens een stuk lastiger een fixed (vaste) hoogte in te stellen van deze div. Maar, niet getreurd, ik heb er nog eens op zitten brainstormen en eigenlijk denk ik dat ik iets revolutionairs heb bedacht!
Wat is het dan?
Met mijn techniek is het mogelijk een weblayout te maken die altijd tot tenminste 100% van je schermhoogte uitrekt, hetzelfde werkt in alle gangbare browsers, valide XHTML en CSS bevat en nu ook nog eens met een footer die je zelf een hoogte kunt geven! Woei, het wordt alleen maar beter! De zojuist besproken vorige methode heb ik al behoorlijk vaak succesvol toegepast in websites, maar nu gaan we het nog makkelijker maken! Deze template werkt. Punt.
Wat gaan we doen?
Het is eigenlijk heel makkelijk. Je maakt een heel simpel HTML document:
simpel HTML document, klik hier. 
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>stretchy footer</title>
<link rel="stylesheet" type="text/css" href="tut1.css" />
</head>
<body>
<div id="container">
<div id="header">
<h1>Je header titel</h1>
</div>
<div id="navbar">
<a href="#">Wat links ter illustratie</a> | <a href="#">Wat links ter illustratie</a> | <a href="#">Wat links ter illustratie</a> </div>
<div id="left">
<h2>Hier linker contents</h2>
<p>Linker paragraaf</p>
</div>
<div id="right">
<h1>Hier rechter contents</h1>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Mauris nec erat. Vivamus ultrices accumsan enim.
Suspendisse porta nonummy odio. Cras vitae leo. Duis sodales porttitor massa. Sed vehicula venenatis ligula.
Pellentesque dui dui, sodales eu, malesuada et, euismod eu, lacus. Nam pulvinar massa quis purus hendrerit molli.
Sed nisl nisl, bibendum at, laoreet sit amet, varius quis, sem. Mauris feugiat. Phasellus lorem ipsum, facilisis,
tristique ac, pretium eu, ante. Donec vitae massa eget ipsum tincidunt hendrerit. Mauris sit amet mi nec liberoy.
Proin eget est. Etiam nonummy justo. Mauris posuere pede ac velit. Praesent in elit. Morbi adipiscing, ante auct,
lectus nisl scelerisque augue, nec congue diam enim a augue.</p>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Mauris nec erat. Vivamus ultrices accumsan enim.
Suspendisse porta nonummy odio. Cras vitae leo. Duis sodales porttitor massa. Sed vehicula venenatis ligula.
Pellentesque dui dui, sodales eu, malesuada et, euismod eu, lacus. Nam pulvinar massa quis purus hendrerit molli.
Sed nisl nisl, bibendum at, laoreet sit amet, varius quis, sem. Mauris feugiat. Phasellus lorem ipsum, facilisis,
tristique ac, pretium eu, ante. Donec vitae massa eget ipsum tincidunt hendrerit. Mauris sit amet mi nec liberoy.
Proin eget est. Etiam nonummy justo. Mauris posuere pede ac velit. Praesent in elit. Morbi adipiscing, ante auct,
lectus nisl scelerisque augue, nec congue diam enim a augue.</p>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Mauris nec erat. Vivamus ultrices accumsan enim.
Suspendisse porta nonummy odio. Cras vitae leo. Duis sodales porttitor massa. Sed vehicula venenatis ligula.
Pellentesque dui dui, sodales eu, malesuada et, euismod eu, lacus. Nam pulvinar massa quis purus hendrerit molli.
Sed nisl nisl, bibendum at, laoreet sit amet, varius quis, sem. Mauris feugiat. Phasellus lorem ipsum, facilisis,
tristique ac, pretium eu, ante. Donec vitae massa eget ipsum tincidunt hendrerit. Mauris sit amet mi nec liberoy.
Proin eget est. Etiam nonummy justo. Mauris posuere pede ac velit. Praesent in elit. Morbi adipiscing, ante auct,
lectus nisl scelerisque augue, nec congue diam enim a augue.</p>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Mauris nec erat. Vivamus ultrices accumsan enim.
Suspendisse porta nonummy odio. Cras vitae leo. Duis sodales porttitor massa. Sed vehicula venenatis ligula.
Pellentesque dui dui, sodales eu, malesuada et, euismod eu, lacus. Nam pulvinar massa quis purus hendrerit molli.
Sed nisl nisl, bibendum at, laoreet sit amet, varius quis, sem. Mauris feugiat. Phasellus lorem ipsum, facilisis,
tristique ac, pretium eu, ante. Donec vitae massa eget ipsum tincidunt hendrerit. Mauris sit amet mi nec liberoy.
Proin eget est. Etiam nonummy justo. Mauris posuere pede ac velit. Praesent in elit. Morbi adipiscing, ante auct,
lectus nisl scelerisque augue, nec congue diam enim a augue.</p>
</div>
<br class="clear" />
<div id="footer">
<p>© 2007 Jezelf</p>
</div>
</div>
</body>
</html>
Een behoorlijk standaard setup. Een container, header, horizontale navigatie (die in dit voorbeeld NIET semantisch is, I know), 2 kolommen en een footer.
Nu linken we er eventjes een css bestand in. Voeg in je header toe:
Code:
<link rel="stylesheet" type="text/css" href="style.css" />
en maak een nieuw bestand aan en sla dat op als style.css in dezelfde map als je HTML document.
Dat CSS document ziet er als volgt uit:
CSS document, klik hier 
Code:
* {
margin: 0;
padding: 0;
}
html,body {
height: 100%; /* HEEL BELANGRIJK! */
background: #FFF;
}
.clear {
clear: both; /* deze class gaan we gebruiken om de twee floats #left en #right te clearen. */
}
#container {
min-height: 100%;
_height: 100%;
width: 800px;
margin: 0 auto; /* deze div centreren */
background: #ff6600;
position: relative; /* De footer wordt absoluut gepositioneerd, relatief aan #container. Dus position: relative moet dan hier toegevoegd worden */
}
#header {
height: 150px;
background: blue;
}
#navbar {
height: 30px;
line-height: 30px; /* height, line-height en vertical-align: middle zorgen ervoor dat de inhoud van deze div altijd verticaal gecentreerd wordt. */
vertical-align: middle;
background: green;
}
#left {
width: 200px;
float: left;
height: auto;
padding-bottom: 30px; /* dezelfde hoogte als de hoogte van #footer, anders zal de tekst in deze div onderaan achter de footer vallen omdat #footer absoluut gepositioneerd is */
}
#left h2, #left p {
padding: 10px;
}
#right {
width: 600px;
float: left;
background: #FFF;
height: auto;
padding-bottom: 30px; /* dezelfde hoogte als de hoogte van #footer, anders zal de tekst in deze div onderaan achter de footer vallen omdat #footer absoluut gepositioneerd is */
}
#right h1, #right p {
line-height: 18px;
padding: 10px;
}
#footer {
position: absolute;
bottom: 0;
left: 0;
width: 800px;
height: 30px;
line-height: 30px;
vertical-align: middle;
background: navy;
}
Dit geeft als resultaat:
http://ep2.nl/tutorials/html2/tut1.html
Maar wat als er nou minder tekst, of helemaal geen tekst in de div staat?
Dan ziet het er zo uit: http://ep2.nl/tutorials/html2/tut2.html
Niet helemaal perfect dus. Maar daar komt een faux column goed van pas! Ik maak een plaatje in photoshop dat dezelfde kleur heeft als de linker div (oranje) en maak dat plaatje ook net zo breed als de linkerdiv:
en dat voeg ik toe als achtergrond afbeelding van #container en ik lijn deze links uit en herhaal hem verticaal:
Code:
#container {
min-height: 100%;
width: 800px;
margin: 0 auto; /* deze div centreren */
background: #FFF url(tut2.gif) top left repeat-y; /* Faux column */
position: relative; /* De footer wordt absoluut gepositioneerd, relatief aan #container. Dus position: relative moet dan hier toegevoegd worden */
}
En dit heeft als resultaat een template met 2 kolommen met een meerekkende footer, opgebouwd uit nagenoeg semantische HTML die ook nog eens in alle browsers werkt!
http://ep2.nl/tutorials/html2/tut3.html
eigenlijk heel simpel  Succes ermee!
//EDIT 04-10-2008: foutje eruit gehaald. padding-bottom ipv margin-bottom
Om de zeven minuten denkt de vrouw dat de man alleen maar aan seks denkt.
(Dit bericht is het laatst bewerkt op 04-10-2008 om 15:52:53 door Jasper.)
|
|