De eeuwige discussie
Semantische of praktische HTML....?
Er wordt al jaren gediscussieerd over "tables vs CSS" om je site te layouten. Ik zag toevallig vanavond weer zo'n topic, en wilde eigenlijk reageren. Het is een blogpost geworden...
Het blijft een grappige discussie, want het is altijd heel snel duidelijk dat er twee kampen zijn. De "puristen", die vinden dat HTML een taal is waarmee je je document en de inhoud daarvan classificeert, of "semantische waarde" geeft, en dat CSS er is om die gegevens kleur, vorm en decoratie te geven. Het andere kamp noem ik maar even de "pragmatici", de mensen die -meestal vanuit de praktische overwegingen, soms vanuit onkunde- de gebreken van het puur semantisch markuppen van documenten zien, en daarom kiezen voor het gebruiken (of misbruiken) van semantische markup voor vormgevings-doeleinden. Ikzelf schuif een beetje heen en weer tussen deze kampen. Ik ben eigenlijk altijd een purist geweest, maar heb geleerd dat je in de dagelijkse praktijk moet kunnen besluiten iets praktisch aan te pakken in plaats van de theoretische voordelen te laten heersen over de praktische uitwerking ervan. Met andere woorden: als iets de helft minder aan tijd kost als de druk al hoog is, dan is de keuze gauw gemaakt.
Wat in de discussie vaak te wensen overlaat is een beetje zelfreflectie van beide kampen.
Iedereen weet, en zal in een andersoortige discussie erkennen, dat HTML4 ongelooflijk gebrekkig is als het gaat om markup. Er bestaat bijvoorbeeld onderscheid tussen acronym en afkorting (veel mensen weten het verschil niet eens), maar een tag om bijvoorbeeld een persoonsnaam of productnaam te markeren, of iets in de tekst te classificeren als een onderwerp waar de pagina over gaat, bestaat niet. Hierarchische verdelingen zijn om zeep geholpen door nummering in headings, enzovoorts. Vergelijk voor de grap eens met docbook 5.0 om erachter te komen wat ik ongeveer bedoel.
CSS is niet veel beter. Tabulaire layouts zijn, tot op de dag van vandaag (laten we zeggen ca 10 jaar na dato), niet zonder uitzonderlijk goede kennis van CSS te realiseren. Het feit dat we in CSS geen variabelen kunnen definiëren is een doorn in het oog van iedere front-ender die tijdens opleverbesprekingen toch even "dat paars iets lichter" moest gaan maken. Dat je nog steeds niet fatsoenlijk een tabel kunt stijlen met geschaduwde bordertjes en verloopjes in de achtergrond, terwijl dat nota bene eenvoudiger te renderen is dan tekst, drijft de ontwerper tot waanzin, want "hoe moeilijk kan dat nou zijn...."
Iedere lezer uit het eerste groepje, de puristen, zit tijdens het lezen al te denken, hoe ga ik die gast eens op zijn flikker geven, want in CSS2.1 en CSS3 zijn er allerlei dingen mogelijk die gewoon door die stomme browsers niet ondersteund worden. Nou, dat schakelt mooi naar mijn volgende punt, en dat is dat de ondersteuning van de technieken slecht is. Ik moet toegeven, Webkit doet een leuke duit in het zakje, en Mozilla heeft dat al jaren gedaan met de Gecko engine, maar de -nog steeds- grootste speler Internet Explorer weet het ruim te vervuilen met versie 6, 7 en 8, waarvan de laatste nog steeds niet in de buurt komt van de Firefox van 4 jaar geleden. Dit hele spectrum heeft o.a. geleid tot zogenaamde "CSS hacks", die stuk voor stuk in het leven zijn geroepen om die verheerlijking van HTML-semantiek in stand te houden. Dat, terwijl het gebruiken of toepassen van de hacks eigenlijk een stiekem toegeven aan de pragmaticus in je is. "Conditional comments mogen best, want het zijn namelijk comments". Hoewel het semantisch gezien misschien wel het stomste is wat je kunt doen -comments een bijzondere betekenis te geven- blijven we in dat heilzame gevoel geloven, terugdenkend aan de tijd dat het nog cool was om een knopje op je website te hebben waar "HTML 4.01 valid" op stond.
De echte purist heeft dus te weinig ervaring, of is stiekem toch pragmatisch aangelegd. Ik denk dat dat heel goed is. Je kunt heel goed erkennen dat bepaalde dingen niet mooi opgelost kúnnen worden. Iedere door de wol geverfde web developer zal je meewarig aankijken en zeggen: "Ja, ik ken dat...". Laten we dan gewoon met zijn allen bij elkaar aan tafel zitten en een biertje drinken en heel hard roepen dat het allemaal aan Microsoft ligt, dan kun je veel harder lachen. En blijf de discussie dan vooral met elkaar voeren, maar niet op grond van de vraag of je je bij het ene of bij het andere kamp schaart, maar over de vraag "mag ik in dit specifieke geval purist zijn (want dat vind ik zo leuk), of moet ik praktisch zijn (want ik heb eigenlijk maar weinig tijd)".