Sideshow barker

Waarom lay-outen met tabellen dom is:

problemen ontleed, oplossingen aangedragen

Tabellen bestaan binnen HTML hierom: Het tabulair weergeven van gegevens. Echter, border="0" maakte het voor ontwerpers mogelijk om plaatjes en teksten te plaatsen op een raster. Terwijl tabellen vandaag de dag het belangrijkste hulpmiddel zijn om visuele en grafische websites te bouwen staan ze het opzetten van betere, meer toegankelijke, flexibele en functionele websites in de weg. Ontdek waar de problemen vandaan komen en leer hoe websites op te zetten gedeeltelijk of geheel zonder tabellen.

Opmerking voor gebruikers van IE/Mac:

Om een website met een niet-Romaans alfabet te kunnen bekijken (zoals de Bulgaarse en Chinese vertaling van deze site), moet u de Taal/Lettertype voorkeur zo instellen dat de Default Characterset "Universal Alphabet (UTF-8)" is. Dit heeft geen invloed op andere websites die u bezoekt en geeft u een blik op een hele nieuwe wereld van sites in talen die u waarschijnlijk toch niet kunt lezen.

Yuppie holding a cigar

Cheeeffff!

Zitten er "stropdassen" in de zaal? Zo niet, haal ze er dan snel bij. Zij zijn de mensen die moeten weten dat webstandaarden het bedrijf geld kunnen besparen.

Plumber with a toliet plunger

Overzicht: Wat heb ik eraan?

We introduceren een nieuwe manier van werken die

We hebben het ook over het feit dat het weergeven van pagina's met Cascading Style Sheets (CSS) een iets andere denkwijze vereist over inhoud en opmaak.

Man in a top hat, tuxedo, and white tie

Websites om van te gillen: geneste tabellen en spacer GIFs

In het begin werd het internet door academici, onderzoekers en defensie gebruikt om informatie te delen. Het duurde echter niet lang of slimmeriken hadden in de gaten dat dit nieuwe medium gebruikt kon worden om echt alles te verkopen, van tweedehands auto's tot snelle gimpen, van hondenbrokken tot onderbroeken.

Net als andere media kende ook internet de nodige kinderziektes. Het vroege internet was nauwelijks vormgegeven (en daardoor niet aanlokkelijk voor consumenten) totdat David Siegel het standaard boekwerk publiceerde met daarin enkele briljante 'workarounds' voor de beperking van toen aanwezige browsers en W3C specificaties (we hebben het dan over Netscape 2 en 3!).

Deze 'workarounds' waren zo handig dat ze zelfs vandaag nog de meestgebruikte manier zijn om webpagina's vorm te geven.

Mad scientist hatches his evil plot

Problemen bij het gebruik van tabellen:

Preacher testifying to the mortal danger of using tables for layout

De redding is nabij

Moderne browsers zijn veel beter in het toepassen van webstandaarden en we hebben de genoemde Middeleeuwse methoden niet meer nodig.

In plaats van het gebruik van tabellen in tabellen en toepassen van dummy GIFs, kunnen we veel eenvoudiger opmaken en CSS gebruiken om prachtige websites te lay-outen die sneller laden, makkelijker te onderhouden zijn en voor iedereen toegankelijk zijn.

Boxer exhausted between rounds of a fight

De oplossing: CSS en gestructureerde opmaak

Door gestuctureerde opmaak te gebruiken in onze HTML-documenten en Cascading Style Sheets voor de lay-out, kunnen we opmaak en structuur van elkaar scheiden.

Dit heeft verschillende voordelen ten opzichte van tabelgebruik.

Film director shouting at his crew

Ontwerpen aanpassen is gemakkelijker en goedkoper

Door het scheiden van de informatie over de opmaak en de inhoud zelf, wordt het aanpassen van bestaande pagina's veel minder arbeidsintensief (en veel goedkoper). Om de lay-out van een website aan te passen, volstaat het om de stylesheets onder handen te nemen. De pagina's zelf kan je ongemoeid laten.

Kijk bijvoorbeeld maar eens naar CSS Zen Garden, of de te veranderen stijlen op Eric Meyer's site. Meer informatie vind je ook op Alternative Style van Paul Sowden.

Reporter grilling a lawmaker about his website

Bandbreedte is niet gratis

Het gebruik van webstandaarden verkleint de bestandsgrootte van uw pagina's, omdat niet keer op keer de informatie over de presentatie gedownload hoeft te worden. De stylesheets die de lay-out bepalen worden in het cache-geheugen van de browser bewaard.

Kleinere bestanden betekent sneller downloaden en besparing op de kosten van uw ISP.

Sweating orchestra conductor

Hé, deze pagina's lijken allemaal op elkaar!

Het gebruik van webstandaarden maakt het ook nog eens erg gemakkelijk om een consistent uiterlijk te handhaven doorheen de hele site. Omdat pagina's dezelfde stylesheets gebruiken voor hun lay-out, zien ze er hetzelfde uit.

Dit is goed voor uw handelsmerk en maakt uw website bruikbaarder.

Cowboy talking about the importance of accessibility

Eenmalig schrijven, overal gebruiken, door iedereen

Het gebruik van webstandaarden maakt de pagina's veel toegankelijker voor gehandicapten en zij die GSM's en PDA's gebruiken.

Bezoekers die schermlezers gebruiken (en mensen met trage verbindingen) hoeven niet door ontelbare (soms lege) cellen in tabellen en spacer GIFs te waden om bij de eigenlijke informatie op de pagina te komen.

Met andere woorden: het scheiden van de inhoud en de manier waarop die getoond wordt, maakt de inhoud apparaatonafhankelijk.

Woman freaking out because her markup is ruining her SEO

Google is blind

Over toegankelijkheid gesproken, het beperken van opmaak en het juiste gebruik van header tags helpt ook uw positie in de zoekresultaten.

Door de verhouding van de code tot de inhoud te verbeteren, het gebruik van trefwoorden in de header tags, en het vervangen van grafische kopjes met echte tekst, zal uw site ook beter geindexeerd worden.

Construction worker committed to using his old tools

Je mag wel tabellen gebruiken, maar met mate

Hierdoor krijgen bezoekers (en bazen) die tot hun dood vasthouden aan hun prehistorische versie 4-browsers, in ieder geval een idee van hoe de rest van de wereld de pagina's ziet.

Overconfident yuppie not worried about his code

Een fraai ogende tabel

Lorem ipsum dolor sit amet, consectetuer adipiscing elit.Sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper.
Suscipit lobortis nisl ut aliquip ex ea commodo consequat.Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis.
At vero eros et accumsan et iusto odio dignissim qui blandit
Praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi.
Qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi.Diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
Epsum factorial non deposit quid pro quo hic escorol.
Olypian quantels et gomilla congolium sic ad nauseum. Souvlaki ignitus carborundum e pluribus unum. Defacto lingo est igpay atinlay.
Eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim.Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed.
Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.
Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore.
Bellboy struggling

Neem eens een kijkje onder de motorkap

Dit kan echt veel eenvoudiger.Raad eens hoeveel opmaak er in deze kleine tabel zit? 13,7k. Er zitten 17 rijen en 9 kolommen in het ding. En dan heb ik het nog niet eens over de spacer GIFs.
Hier zitten echt wel te veel tabelcellen en spacer GIFs in.En alle gestreepte randen zijn gemaakt met het background attribuut op de tabelcellen wat dus niet toegestaan is.
Een geneste tabel? Waarom?
Om een opsommingsregel te maken? Je maakt een grapje, toch?
Hetzelfde kan met 8 tabelcellen en 4 CSS regels.Echt waar! 8 cellen en 4 CSS-regels, meer is niet nodig.
Oh nee, weer een verborgen tabel vermomd als lijst met opsommingen.
Waarom maak je de opsommingsregels niet gewoon op als opsommingsregels en laat je de rest over aan CSS?
Je hebt een regel nodig voor <table>, een voor <td>, een voor <ul> en een voor <li>.Da's alles. Als je die eenmaal hebt, zit je gebeiteld.
Da's veel beter dan 8 extra tabelcellen voor nep-opsommingen die ook nog eens minder toegankelijk zijn.
Fantastisch! De laastse nep-opsommingsregel...

De code die de structuur van de tabel toont:

table{ margin:3px; padding:2px; border:solid 2px blue }

td{ padding:2px; border-style: solid; border-width: 1px; border-color:gray gray silver silver }

Man telephoning his co-worker in a panic

Veel beter

veel beterRaad eens hoeveel opmaak er in deze kleine tabel zit? 2,1k. Er zitten 4 rijen en 2 kolommen in het ding en geen spacer GIFs.
precies goedAl deze gestreepte randen komen uit CSS en ze zijn gewoon toegestaan.
  • Dit is nu een opsommingsregel
  • Zoals ze eigenlijk bedoeld zijn
Dit alles met slechts 8 tabelcellen en 4 CSS-regeltjes.Zonder gekheid. 8 cellen en 4 CSS-regels, meer is er niet nodig.
  • Lang leve de opsommingen
  • Waarom maak je de opsommingsregels niet gewoon op als opsommingsregels en laat je de rest over aan CSS?
Je hebt een regel nodig voor <table>, een voor <td>, een voor <ul> en een voor <li>.Da's alles. Als je die eenmaal hebt, zit je gebeiteld.
  • Ik ben gek op opsommingen
  • Fantastisch! geen nep-opsommingsregels meer

En hier is de nodige CSS Code om van die overtollige opmaak af te komen:

table{ border-bottom:1px dotted fuchsia; border-left:1px dotted fuchsia }

td{ padding:11px 20px 20px 11px; border-top:1px dotted fuchsia; border-right:1px dotted fuchsia }

ul { margin-top:10px; margin-bottom:10px; margin-left:0; padding-left:1em }

li{ margin-bottom:10px }

Policeman signaling for us to stop and think

Overgangsontwerpen (transitional designs) samengevat

Gebruik margin en padding in plaats van extra cellen en spacer GIFs.

Gebruik link en @import styles. De eerste voor oude browsers, de tweede voor moderne browsers.

<link href=basic.css" rel="stylesheet" type="text/css">

<style type="text/css" media="screen"><!--
@import url(modern.css) screen;
--></style>

Voorbeelden:

Maar wacht, er is meer:

Voor meer informatie over overgangsontwerpen, zie hoofdstuk 1 van Eric Meyer on CSS en Jeffrey Zeldman's Designing with Web Standards.

Young coder realizing that he does not need to use tables for layout

CSS lay-outs: de toekomst is nu

De meeste mensen gebruiken inmiddels een browser met goede CSS ondersteuning. Deze browsers hebben allemaal hun eigenaardigheden, maar zo gauw je aan ze gewend raakt, kun je de problemen omzeilen.

CSS coderen is eenvoudig. Zelfs voor iemand voor wie Javascript eruitziet als Chinees.

if(links[x].length > 0);{
for (y=0; y<links[x].length; y++) {

Elke CSS-regel heeft een selector en een declaratie. De declaratie is opgebouwd uit een kenmerk (property) en een waarde (value). Kenmerken die klinken alsof ze uit twee woorden bestaan bevatten een verbindingsstreepje.

body {margin:0; padding:0}

.related {float:right; width: 15em; margin-left:1em; margin-bottom:1em; color:blue}

#footer {color:gray; font-size:0.6em; line-height: 1.2em; background-color:white; margin:0}

Superhero flying to our rescue

Structurele opmaak: codeer wat je bedoelt, bedoel wat je codeert.

Terwijl het schrijven van de eigenlijke CSS code eenvoudig is, vergt het gebruiken van CSS voor de lay-out van je webpagina's een ietwat afwijkende manier van denken dan de meesten van ons gewend zijn.

In plaats van te denken 'Dit moet hier, en dat moet daar' terwijl we werken aan een pagina of opmaak, moeten we nu denken over het soort informatie op de pagina en welke structuur deze informatie heeft.

We geven de belangrijkste kop een <h1> tag; subkoppen worden gemarkeerd met <h2> tags, enzovoort; en paragrafen zijn paragrafen.

Deze manier van opmaken staat bekend als "structurele" of "semantische" opmaak.

In plaats van de inhoud in tabellen en tabelcellen te plaatsen, verpakken we ze in div elementen. Geef je div elementen een id of een class die beschrijvend is voor de inhoud en/of functie, in plaats van voor hun uiterlijk.

Chef preparing tag soup

Vermijd <b>ed and <br>eakfast lay-out

Bedenk waarom je iets in een bepaalde opmaak wil zien; wat betekent dat? Je opmaak kan en zou betekenis moeten hebben, zelfs voor iemand die de pagina niet kan zien. Semantische opmaak maakt je pagina's toegankelijker voor iedereen, inclusief zoekmachines.

Als je iets cursief zet, is dat omdat je iets wil benadrukken (<em>) of omdat het de titel van een boek (<cite>) is.

Als iets vetgedrukt is, zou het waarschijnlijk opgemaakt moeten zijn als <strong>.

Als je een nieuwe regel na een tekstfragment wil, is de kans groot dat het als een kop opgemaakt moet worden. Als het geen kop is, is het dan een deel van een class die in de hele site voorkomt? Zo ja, dan gebruik CSS in plaats van <br>.

.foo {display:block}

Voor meer, zie Bed and BReakfast markup (B&BR) van Tantek Çelik.

Evil villain mocking us

Dingen die tabellen beter kunnen dan CSS

Er zijn bepaalde dingen die met CSS minder goed lukken dan met opmaaktabellen.

Bijvoorbeeld, stel dat je een zwarte navigatiebalk aan de zijkant hebt, die je wil uitrekken over de hele hoogte van je inhoud. Met een opmaaktabel, is dat een fluitje van een cent: Geef de <td> gewoon een zwarte achtergrond.

Het kan ook met CSS, maar dat vergt een andere manier van denken.

Als we onze navigatie div een zwarte achtergrond geven, zal het zwart zich alleen uitstrekken totdat de navigatie "op" is. Op de meeste pagina's is de inhoud langer dan de navigatie, dus dat is niet goed.

In plaats daarvan zouden we een zwarte GIF in onze inhoud div kunnen plaatsen en deze div genoeg left padding geven, maar als onze navigatie langer is dan de inhoud, dan werkt dit ook niet.

Een andere manier om dit probleem aan te pakken is om een zwarte GIF op te stapelen in de achtergrond van de <body>, dat werkt uitstekend totdat je een ander plaatje als achtergrond van je <body> wil gebruiken.

Of, we verpakken de inhoud van de pagina in een 'wrapper' <div>, en stapelen het plaatje in die <div>. Echter, dat is weer niet-semantische geklopte lucht aan de markup toevoegen.

En bovendien werkt het opstapelen van achtergrondplaatjes niet wanneer je de breedte van je navigatie vloeiend wil hebben.

Zoals we al zeiden: sommige dingen doe je beter met tabellen dan met CSS. Maar op het eind moet je je afvragen of alle extra bagage die het gebruik van tabellen voor opmaak met zich meebrengt het wel waard is.

Friendly mailman

Migreren van tabelopmaak naar webstandaarden: het hele plaatje

Allereerst moet je een migratiestategie bepalen. Ga je de hele site ineens omzetten of pak je het stap voor stap aan?

Bepaal welke delen en pagina's de meeste baat hebben bij de conversie. Home pagina's, aankondigingen van nieuwe producten en soortgelijke pagina's zijn voor de hand liggende plaatsen om te beginnen.

Bepaal het type inhoud/informatie dat op je hele site voorkomt

Surgeon in the operating room

Je pagina's splitsen

Zo gauw je een idee hebt over de typen inhoud van je site, is het tijd om de bestaande pagina's te analyseren om een logische indeling van de inhoud te maken.

Zoek in je tabelstructuur naar geneste tabellen en lege en randcellen (we willen deze vervangen door <div> elementen of door een eenvoudigere tabelstructuur).

Passive aggressive maid

Haal het stof van je markup

Nadat je de structuur van je pagina’s onder de loep genomen hebt, wordt het tijd om een kijkje onder de spreekwoordelijke motorkop te nemen. Pluis uit welke presentatietags je door structuurtags kan vervangen.

Fireman rescuing content

Vervang presentatietags door structuurtags

Je kan ‘Zoeken en vervangen’ (of reguliere expressies gebruiken), maar het is nog eenvoudiger om je bestaande pagina in een browser te openen, de tekst te kopiëren en vervolgens te plakken in je HTML-editor.

Verlies de structuur niet uit het oog! Het vervangen van <b> tags door <strong> tags is echt niet genoeg.

Wat is de belangrijkste titel? Markeer ‘m als een <h1> tag. Subitels markeer je als <h2> tags enzovoort. Voor paragrafen gebruik je <p> tags en van de navigatie maak je een ongeordende lijst met de <ol> tag.

Kies een DOCTYPE en gebruik het. Wij bevelen XHTML transitional aan. Tenzij je voor het zware werk wil gaan: dan is XHTML strict je ding.

Clown

Verdeel je pagina in logische div’s

Plaats je hoofdnavigatie in een div en gebruik ‘mainnav’ als id. De subnavigatie plaats je ook in een div en noem je ‘subnav’. Doe hetzelfde voor de footer en de content.

Misschien ontgaat het nut je, maar dat wordt snel duidelijk als je regels gaat toevoegen aan je style sheets.

Two superheroes

Tijd voor CSS

Eerst geef je iedere div een randje. Bijvoorbeeld: div {border:1px dotted gray; padding:.5em}. Zo kan je zien waar ze starten en ophouden en of er sprake is van nesting.

Schrijf eerst je CSS voor element selectors (<html>, <body>, <p>, <h1>, <h2>, <ul>, <li>, etc.).

Gebruik zoveel mogelijk contextuele of in hiëarchie dalende (descendant) selectors. Zo blijft je markup duidelijk. Bijvoorbeeld: #subnav li{border:1px solid black; padding:.5em; display: inline}heeft enkel invloed op een opsomming binnen de div ‘subnav’.

Controleer het resultaat in zoveel mogelijk browsers. Schakel er desnoods je vrienden voor in.

Paparazzi

Voorbeelden van websites die met CSS zijn vormgegeven

Newsboy selling newspapers

Verdiep je in de materie

Op een uurtje kunnen we natuurlijk niet alles aan bod laten komen wat je moet weten over ontwerpen met CSS. Maar deze boeken vertellen je in detail hoe je webpagina’s compacter, begrijpelijker en sneller kan maken door je te houden aan webstandaarden.

Painter at his easel

Papier? Nee bedankt! On-linebronnen

CSS-Discussie

zeldman.com The Daily Report: Verhelderende artikels en interessante links die je inspiratie prikkelen.

A List Apart ‘Voor mensen die websites maken’

The Web Standards project Deze mensen verdienen een standbeeld!

CSS: A guide for the unglued Een uitstekende pagina met links

CSS Layout Techniques: for Fun and Profit Lay-outs van Eric Costello die je voor je eigen projecten kan gebruiken. Daarnaast vind je er links en tutorials.

Real World Style CSS lay-outs, tips, trucs en technieken van Mark Newhouse.

DevEdge Netscape Sidebar Tabs Superhandige links naar de W3C-specificaties over CSS, HTML en de DOM.

The Business Benefits of Web Standards Leesvoer voor moderne zakenlui! Het evangelie van webstandaarden, in bewoordingen die ook een verkoper zal doen watertanden.

Worker asleep at his computer

Bedankt. Zijn er nog vragen?

; Scott Design Inc

; Adobe Systems Incorporated

Nederlandse vertaling:

Ria Marinussen ; Universiteit Twente

Roel Van Gils ; BlindSurfer

Jaap Soetendaal ; Internet Opleidingscentrum

Don't blame us!

Even though we did our best translating this thing, you still might want to read the original English version or one of the other translations.

Creative Commons LicenseThis work is licensed under a Creative Commons License.

>
Scott Design