Gebruikerslogin

Nu online

Er zijn momenteel 1 gebruiker en 20 gasten online.

Online gebruikers

Enquête

Wat is leuker?
White hat SEO
70%
Black hat SEO
30%
Totaal aantal stemmen: 98

Box model

Arjan Snaterse

4 februari 2007

Wat is het box model

Om het heel kort te zeggen: het box model beschrijft de manier waarop breedte, padding, borders en margins door een browser geïnterpreteerd moeten worden. Elk html element op de pagina heeft hiermee te maken.

Het box model volgens het W3C

In bovenstaande afbeelding zien we van binnen naar buiten de content area, de padding, de border en de margin. De scheiding tussen 'binnen' de box en 'buiten' de box wordt gelegd door de border.

Erg leuk dit, maar waarom moet ik dit weten? Nou, afgezien van het feit dat theoretische achtergrondkennis nooit verkeerd is, is het probleem met dit box model dat niet elke browser dit goed interpreteert. Dat wil zeggen: Internet Explorer in quirks mode heeft een andere benadering van het box model dan ooit bedoeld is door het W3C. Het verschil zit hem in de interpretatie van de css atributen width en height. Voor het gemak spreek ik in dit artikel even alleen over het width attribuut, maar je kunt overal net zo goed height er voor invullen.

De verschillen

In het box model, zoals bedoeld door het W3C, valt het attribuut width samen met de breedte van de content area. De padding en de border worden daarbij opgeteld. Het box model van Internet Explorer pakt dit wat anders aan. Deze pakt bij het width attribuut de breedte van de content area, de padding en de border samen. Als je dat dan vergelijkt bij het box model van het W3C zie je dat als je in je css een element met een width van 100px, een padding van 10px en een border van 1px hebt, het element in totaal (afgezien van het margin attribuut; die heeft in dit verhaal niet zovel te zoeken) een breedte van 100+10+1 = 111px heeft. In Internet Explorer zou dit echter maar een breedte van 100px opleveren, omdat de padding en de border ‘samenvallen’ met de width. Zoals je wel vermoed is dit nogal vervelend bij het opzetten van een website layout.

Zoals ik al zei komt dit probleem alleen voor als Internet Explorer in Quirks Mode zit. Het enige wat we dus moeten doen is voorkomen dat dit gebeurt. Om dit te doen mag er voor de doctype declaratie geen tekst staan. Vaak zie je dat men html commentaar helemaal bovenaan de code zet om daar hun copyrights in kwijt kunnen of een xml character encoding declaratie in de vorm van <?xml version="1.0" encoding="UTF-8"?>. Dit allebei zorgt dus dat er tekst voor de doctype declaratie staat, waardoor IE in Quirks Mode wordt gedrukt. Als je dus zorgt dat dit niet gebeurt, zal IE gewoon in standards-compliant mode draaien en zul je dus ook geen last ondervinden van het box model.

Noot: Hoewel er niet veel gebruik meer van wordt gemaakt gaat bovenstaand verhaal niet op voor de versies van voor IE6. Er zal dan dus gebruik gemaakt moeten worden van css hacks om de zaak weer recht te trekken.