Dit is versie 3 van The Matrix mijn website. Na vier jaar
ontwikkeling is de site erg veranderd, en ik wil wat ideeën en technieken met je delen.
Ik heb geprobeerd om een aantrekkelijk design te combineren met valide code
en de nieuwste technieken.
XHTML
Elke pagina van deze site XHTML 1.1 valid, ten minste wanneer deze wordt opgevraagd door een browser die dit ondersteunt (dus niet Internet Explorer). Zo niet, laat het me alsjeblieft weten zodat ik het kan verbeteren. Ik respecteer de webstandaaren en probeer me er zo veel mogelijk aan te houden. Dit betekent dat mijn website niet alleen XHTML valid is, hij gebruikt ook geen tabellen voor de lay-out, scheidt inhoud van opmaak, gebruikt geen afbeeldingen voor tekst en bevat metadata zodat machines hem ook begrijpen.
Om de volledige controle te hebben over alle pagina's, heb ik elke regel code (behalve de jQuery library) zelf geschreven. Ik gebruik geen WYSIWYG editor, noch editor met split-view. Ik schrijf alleen code, en test direct in browsers. Dit waarborgt de optimale kwaliteit van mijn code. Het bevat geen rare onnodige code die tools zouden genereren, maar het is wel valide code. Zo kan ik er ook meteen voor zorgen dat alles werkt in elke browser. (IE maakte dit me erg moeilijk, maar ik heb het grootste deel aan de praat gekregen in IE 8.)
Volgens de XHTML 1.1 standaard, moeten pagina's verzonden worden met het application/xhtml+xml MIME-type. Wanneer je dit echter naar IE stuurt, denkt hij dat je de pagina probeert te downloaden in plaats van bekijken. Als Internet Explorer al geen standaard-waardige pagina kan loaden, hoe moet hij die dan ooit correct gaan renderen? Ondersteuning voor de standaarden ontbreekt overduidelijk. Daarom worden pagina's voor IE 8 als simpel HTML verzonden.
Deze site draait op PHP. Dit is een server-side taal die het meeste wat je hier ziet genereert. Ik maak veel gebruik van XML en XPath om pagina's te maken van de data. Elke pagina op deze website wordt dynamisch gegenereerd met PHP.
Design
Een van de lastigste dingen — als het niet het lastigste is — aan het maken van deze site was design. Ik had zo veel mooie ideeën die ik wilde implementeren, maar dat is simpelweg onmogelijk. Sommige dingen zien er stuk voor stuk geweldig uit, maar zijn oerlelijk wanneer je ze combineert. Ik moest kiezen. Uiteindelijk ben ik redelijk tevreden met het design zoals het geworden is, hoewel ik nog steeds denk dat alles er te veel als een ‘pagina’ uit ziet, en te weining als een moderne, interactieve, web 2.0 website. Ik heb interactieve technieken gebruikt; ik heb animaties toegevoegd, ik gebruik nieuwe technieken zoals weblettertypen, maar alles ziet er nog steeds uit als een statische webpagina met interactieve elementen. Maar zoals ik al zei, ik moest keuzes maken. Dit was er een van. Ik kon niet elk idee gebruiken dat ik had, dus heb ik er een paar gebruikt, en ik ben tevreden met het resultaat.
Hoewel ik alles zelf ontworpen heb, heb ik sommige geweldige sites als inspiratie gebruikt.
Ik vind de website van Blender erg mooi.
Vooral de oranje paginakoppen. Mijn koppen zijn gebaseerd op hetzelfde idee,
maar ik gebruik geen afbeeldigen voor tekst omdat dit in het algemeen een slechte gewoonte is.
Daarvoor in de plaats heb ik weblettertypen gebruikt
om paginakoppen weer te geven, een nieuwe functie in CSS3.
Er zijn maar een paar letterypen die je vrij op websites kunt gebruiken, maar
Carto Gothic
ziet er leuk uit. Het heeft wel iets weg van het prachtige lettertype Myriad Pro.
Om het er nog beter uit te laten zien en leesbaarder te maken, heb ik een lichte schaduw toegevoegd,
ook een nieuwe CSS3-funcie. Vanzelfsprekend ondersteunt Internet Explorer geen van deze technieken
dus in IE ziet alles er wat saaier en platter uit. Dit is ook een keuze die ik gemaakt heb.
Tekst vervangen door afbeeldigen is een nog slechtere oplossing en bovendien niet dynamisch.
Flash is niets beter dan plaatjes, want het is nog steeds niet leesbaar voor machines,
en niet selecteerbaar (ten minste, niet samen met de rest van de pagina).
De paginakopachtergronden zijn trouwen allemaal
vreemde aantrekkers gerenderd met
Chaoscope en nabewerkt met Photoshop.
Apple heeft een prachtige website, een van de beste als je het mij vraagt. (Ze zijn sowieso de meesters in design.) Ik vind vooral de pijl-achtige navigatiebalk mooi, hoewel Apple niet de enige is die dit heeft, en ik weet ook niet zeker of ze wel de eerste waren. Wat zo speciaal is aan mijn navigatiebalk is dat de kleur helemaal verandert als je er met de muis over gaat, niet alleen de link. Het was lastige dit aan de praat te krijgen met overlappende pijlen, maar ik heb het werkend gekregen!
Voor het ‘nieuws’-gedeelte op de voorpagina heb ik een soort blog-stijl kalender gebruikt om de datums aan te geven. Ik heb er verschillende gezien op verscheidene blogs, en er zijn waarschijnlijk duizende sjablonen voor verschillende soorten blogs die iets dergelijks bevatten. Ik heb de mijne zelf gemaakt, en het was vrij lastig dit mooi te krijgen. Vaak werkte het in Safari, Chrome, Firefox en Opera, maar verknoeide Internet Explorer het weer en moest ik een andere manier zoeken. Van dit probleem had ik trouwens niet alleen last bij de nieuwskoppen. Het kwam vaak voor. Ik heb zelfs besloten Internet Explorer 7 in zijn geheel niet te ondersteunen omdat het een pagina totaal verkeerd rendert.
Eén van de dingen die het ontwerpen van deze site zo lastig maakte is dat hij een vloeidende layout heeft. Dit betekent dat hij je hele scherm vult, onafhankelijk van de resolutie. Vloeiende layouts waren redelijk populair een aantal jaar geleden maar worden steeds vaker vervangen door layouts met vaste breedte. De meeste websites verspillen mijn 1920×1200 scherm gewoon. Het nadeel van een vloeiende layout is dat er een groot verschil is in hoe de pagina eruit ziet bij hoge en lage resoluties. Een alinea kan zes regels innemen bij een lage resolutie, maar slechts één bij een hoge resolutie. Lange regels tekst zijn bovendien slechter leesbaar. Ik heb geprobeerd dit probleem te verminderen door een marge links en rechts van de pagina.
Gebruiksvriendelijkheid
Deze website is meertalig. Als je een Nederlandse browser gebruikt zul je automatisch de Nederlandstalige versie van de site zien. Je kunt altijd van taal wisselen in de rechterbovenhoek van de pagina. De website heeft ook een versie geöptimaliseerd voor apparaten met kleine schermen, zoals de iPhone en iPod touch. Hoewel deze twee de volledige versie uitstekend weergeven (inclusief geavanceerde effecten zoals tekstschaduw), is de geöptimaliseerde versie beter leesbaar en makkelijker te navigeren met je vingers. Als je een mobiele browser gebruikt (zoals Mobile Safari of Opera Mobile), krijg je automatisch de versie voor kleine schermen te zien. Net zoals met talen, kun je van versie wisselen in de rechterbovenhoek van de pagina.
Als er meerdere versies van een download zijn zal de site automatisch de goede versie voor je selecteren gebaseerd op de informatie die je browser meestuurt met de request. Dit bevat informatie over je besturingssysteem en soms 32/64-bit informatie. Informatie over mobiele browsers wordt ook meegenomen. Stabiele versies krijgen alltijd voorkeur boven bètaversies. Natuurlijk kun je nog wel handmatig een versie selecteren als mijn geavanceerde algorithme een foutje maakt.
Om de site interessanter en dynamischer te maken wilde ik wat animatie toevoegen. Dit is vandaag de dag perfect mogelijk met Javascript, en ik gebruik jQuery om dit mogelijk te maken. Ik wilde van Flash af, omdat het niet overal wordt ondersteund (zoals op de iPhone), en omdat Flashinhoud gescheiden is van de rest van de pagina. Dit betekent dat je Flashinhoud en tekst op de pagina niet tegelijk kan selecteren. Bovendien is Flashinhoud niet zichtbaar voor machines.
Hoewel de pagina's voor mensen goed leesbaar zijn, hebben machines soms moeite met de betekenis van sommige inhoud. Daarom bevat mijn website ook uitgebreide metadata zoals Microformats. Dit helpt machines de inhoud te begrijpen en maakt het browsers en zoekmachines mogelijk extra dingen te doen met de inhoud.
Om de URL's minder cryptisch te maken, heb ik makkelijkere URL's gemaakt door middel van URL-rewriting. Een adres bestaat nu alleen uit kleine letters, cijfers, streepjes en slashes. Het was een keuze om de slash aan het eind van het adres weg te laten. Dit doe ik omdat het adres naar een bestand wijst; niet naar een map.
