Skip links en inhoudsopgave

Laatst aangepast: .

Sitemap met lijnen. Gebruikt geen plaatjes

Korte omschrijving

Sitemap in de vorm van een boomstructuur met lijnen. Er worden geen afbeeldingen gebruikt.

BELANGRIJK

Alles op deze site kan vrij worden gebruikt, met twee beperkingen:

* Je gebruikt het materiaal op deze site volledig op eigen risico. Het kan prima zijn dat er fouten in de hier verstrekte info zitten. Voor eventuele schade die door gebruik van materiaal van deze site ontstaat, in welke vorm dan ook, zijn www.css-voorbeelden.nl en medewerkers daarvan op geen enkele manier verantwoordelijk.

* Deze uitleg wordt regelmatig bijgewerkt. Het is daarom niet toegestaan deze uitleg op welke manier dan ook te verspreiden, zonder daarbij duidelijk te vermelden dat de uitleg afkomstig is van www.css-voorbeelden.nl en dat daar altijd de nieuwste versie is te vinden. Dit is om te voorkomen dat er verouderde versies worden verspreid.

Een link naar www.css-voorbeelden.nl wordt trouwens altijd op prijs gesteld.

Opmerkingen

Bij een echte sitemap zou je waarschijnlijk van elke ingang een link maken. Hier heb ik van een aantal ingangen geen link, maar een span gemaakt, zodat je ziet dat een gewone span ook werkt.

Het is vrijwel onmogelijk om deze sitemap boven een achtergrond-afbeelding te plaatsen, omdat delen van de achtergrond-afbeelding zullen wegvallen. Om bepaalde te lange lijntjes af te dekken, wordt gebruik gemaakt van spans in de kleur van de pagina. Deze zijn (vrijwel) onmogelijk precies goed neer te zetten. Zie verder bij Om die te lange ...

In tegenstelling tot de meeste andere voorbeelden zijn hier alle maten in px. Daardoor is de lettergrootte in Internet Explorer 6, 7 en 8 niet te veranderen, want die heeft daar de eenheid em voor nodig. Als je em neemt als eenheid, of 'n combinatie van px en em, dondert de hele structuur in elkaar bij 'n andere lettergrootte of zoomen.

De css voor deze sitemap bleek redelijk ingewikkeld te zijn, niet echt iets voor als je net met css begint. Het toevoegen of weghalen van ingangen uit de sitemap is vrij simpel. Alleen de css is ingewikkeld, de html niet echt.

Zonder css is deze sitemap gewoon 'n serie geneste <ul>'s. Voor spraakbrowsers en dergelijke levert deze constructie dus geen extra problemen op. Afhankelijk van programma en instellingen worden titels en/of schermtekst en/of diepte van de lijst voorgelezen.

Links in deze uitleg, vooral links naar andere sites, kunnen verouderd zijn. Op de pagina met links vind je steeds de meest recente links.

Alles op deze site is gemaakt op een systeem met Linux. Daarbij is vooral gebruik gemaakt van Quanta Plus, GIMP en Firefox met extensies. De pdf-bestanden zijn gemaakt met LibreOffice.

Vragen of opmerkingen? Fout gevonden? Ga naar het forum.

Iets gevonden waar je wat aan hebt? Mooi. Als je je waardering wilt uiten, maak dan een donatie over aan War Child Nederland, een organisatie die kinderen uit oorlogsgebieden helpt hun trauma's te verwerken. Of - nog beter - wordt donateur:
War Child Nederland

Achterliggend idee

Een sitemap met lijntjes wordt meestal met behulp van plaatjes gemaakt. Dat is vaak weinig flexibel, omdat je meestal aan het monteren moet slaan als er iets verandert in de sitemap. Als je alleen borders en dergelijke gebruikt, veranderen die in principe gewoon mee met de sitemap.

In een sitemap die alleen uit css en html bestaat kun je relatief makkelijk ingangen toevoegen of weghalen, omdat de html relatief eenvoudig is.

De css daarentegen bleek nog 'n behoorlijke puzzel te zijn, maar die hoef je in principe maar één keer te maken. Daarna zal die in de regel niet ingrijpend meer veranderen.

In tegenstelling tot de meeste andere voorbeelden zijn alle maten hier in px en niet in em. Het bleek onmogelijk om met een combinatie van px en em een goede lay-out te maken, die in alle browsers hetzelfde resultaat gaf.

Dat betekent dat in Internet Explorer 6, 7 en 8 de lettergrootte niet kan worden veranderd. In Firefox en Safari kan de lettergrootte wel gewoon worden veranderd.

Zoomen werkt wel gewoon in alle browsers die dat kunnen, ook in Internet Explorer 7 en 8. Kleine (en bij Internet Explorer 7 grotere) onvolkomenheden bij zoomen staan bij Bekende problemen.

De sitemap is niets meer dan een serie ongeordende lijsten (<ul>). Elk witte vlak is een gewone lijst-ingang <li> met een <a> of een span erin, die een witte achtergrondkleur en een randje heeft. Hoe dieper de lijst is genest, hoe kleiner de lijst-ingang en de inhoud daarvan zijn.

In de afbeelding hiernaast staan twee <ul>'s. Er zijn er meer, maar het principe is voor allemaal hetzelfde. De buitenste lijst heb ik even 'n blauwe achtergrond gegeven. Deze buitenste lijst zit zelf weer in de <li> 'Gecentreerd', en is dus zelf ook weer een sub-lijst. De lijst-ingangen in deze blauwe lijst zijn 'Geen header', Meescrollende header' en 'Vaste header'.

Deze drie <li>'s hebben elk weer een sub-lijst, die hier roze is gekleurd. De eerste sub-lijst heeft alleen '013' als ingang, de tweede '003' en '061' en de derde '002' en '005'.

In elke ingang staat een <a> of een span met witte achtergrond en border. Om dit te kunnen doen zijn ze in een blok-element veranderd. Links van <a> of span is een marge, wat ruimte geeft om daar later een horizontaal lijntje neer te zetten.

De <ul>'s hebben links een border. Deze vormen de lange verticale lijnen van de sitemap. Dat de lijnen te lang zijn, corrigeer ik later.

De lijsten springen steeds iets in, waardoor de borders aan de linkerkant van de <ul>'s dus ook iets inspringen.

De <ul>'s hebben aan de bovenkant een kleine padding, waardoor de eerste <li> van de lijst iets lager komt te staan. Dit zorgt voor een kleine afstand tussen de eerste <li> van een sub-lijst en de <li> waarbinnen de sub-lijst staat. Op de afbeelding is dat onder andere tussen 'Geen header' (die bij de blauwe <ul> hoort) en het erboven staande 'Gecentreerd', en tussen '013' (dat bij de roze <ul> hoort) en het erboven staande 'Geen header'.

Ik gebruik hier padding en geen margin, omdat dan de verticale border aan de linkerkant van de <ul> doorloopt. Naast een margin zou de border niet doorlopen.

Door elke <li> aan de onderkant 'n kleine marge te geven, ontstaat een afstand tussen de <li>'s binnen dezelfde <ul>. Dat zijn op de afbeelding bijvoorbeeld '003' en '061'. Bovendien krijg ik nu ook 'n kleine afstand tussen bijvoorbeeld '013' uit de roze <ul> en het eronder staande 'Meescrollende header', dat bij de blauwe lijst hoort. Omdat 'Meescrollende header' niet de eerste <li> uit de blauwe <ul> is, had die nog geen ruimte aan de bovenkant gekregen en zou anders pal tegen '013' komen te staan.

De <li>'s zijn relatief gepositioneerd. Voor elke <a> of <span> met een tekst (zoals 'Geen header' of '013') staat nog een span. Deze span is helemaal leeg en wordt alleen gebruikt voor de horizontale lijntjes. Dit horizontale lijntje is een border aan de onderkant van deze span.

De span wordt in een blok-element veranderd en door een combinatie van hoogte, breedte, padding, marge en absoluut positioneren kan ik het lijntje precies goed krijgen: horizontaal halverwege de <li>, tegen de border van de <a> of <span> met de tekst aan, en aan de andere kant tegen de border aan de linkerkant van de <ul>.

In de afbeelding hiernaast zijn de spans die voor de horizontale lijntjes zorgen even rood gekleurd. (In het echt zijn ze doorzichtig en dekken dan ook niet de verticale lijnen af.)

Nu is het enige wat nog moet gebeuren het wegwerken van de te lange verticale lijnen. Dat zijn borders bij de <ul>, dus die lopen door tot de onderkant van de <ul>. Ze moeten echter ophouden bij het onderste horizontale lijntje halverwege de laatste <li> uit de <ul>. Vooral als die laatste <li> een sub-lijst bevat, zoals bij de blauwe <ul> uit de afbeelding hierboven, is duidelijk te zien dat de lijn veel te lang is.

Om die te lange verticale lijn weg te werken, komt er in elke onderste <li> van 'n lijst nog 'n extra lege span te staan. Deze span wordt drie px breed en krijgt dezelfde kleur als de achtergrond. In de afbeelding hiernaast heb ik hem rood gekleurd om hem zichtbaar te maken.

Deze span wordt absoluut gepositioneerd ten opzichte van de <li> waar hij in staat. De grote rode lijn linksonder hoort bij de <li> met de tekst 'Vaste header'. Hij wordt precies over het te lange deel van de verticale border van de <ul> gezet.

De span is 3 px breed, terwijl de border maar 1 px breed is. Het bleek namelijk dat bij zoomen de span anders af en toe precies naast de border wordt gezet, waardoor de te lange lijn zichtbaar wordt.

Hoewel je in het voorbeeld deze rode lijn niet ziet, is het deze lijn die het vrijwel onmogelijk maakt de sitemap boven 'n afbeelding te zetten. De in de afbeelding zichtbare rode lijnen zouden dan moeten bestaan uit een stukje van de afbeelding en exact op de juiste plaats moeten worden gezet. Dat is vrijwel onmogelijk voor elkaar te krijgen in alle browsers, en bij zoomen of 'n andere lettergrootte gaat 't hoe dan ook iets verschuiven en zou je dus 'n foeilelijke verschuiving binnen je afbeelding krijgen. Als de span gewoon de kleur van de pagina heeft, zie je zo'n verschuiving niet.

Het toevoegen van 'n nieuwe ingang gaat dus gewoon door het plaatsen van 'n gewone link in 'n gewone lijst-ingang. Voor die link komt dan 'n lege span te staan voor het horizontale lijntje:

<li><span class="hoek"></span><a href="links.html" title="Links">Links</a></li>

Bij elke laatste lijst-ingang van een <ul> komt nog 'n extra lege span te staan voor het afdekken van de te lange verticale lijn:

<li><span class="hoek"><span class="onderste"></span><a href="links.html" title="Links">Links</a></li>

Alleen :hover of :hover, :focus en :active?

Het eerste deel van deze tekst is voor alle voorbeelden met links en dergelijke hetzelfde, het laatste deel (onder het kopje Speciaal bij dit voorbeeld) is speciaal voor dit voorbeeld.

De meeste mensen openen 'n link door erop te klikken. Er is echter 'n tweede manier: met behulp van de Tab-toets (sommige browsers gebruiken andere toetsen, maar het principe is hetzelfde). Met behulp van de Tab-toets kun je van link naar link 'springen'. Op welke link je staat, wordt door alle browsers aangegeven met een of ander kadertje rondom de link.

De link met het kadertje eromheen heeft focus. Dat wil zeggen dat je die link volgt als je op de Enter-toets drukt. In principe werkt dit precies hetzelfde als gewoon klikken op de link.

Als iemand geen muis wil of kan gebruiken, bijvoorbeeld door 'n handicap, is deze manier om 'n link te openen erg handig. Als de volgorde van de links in de code niet logisch is, kun je eventueel met behulp van tabindex 'n afwijkende volgorde van de links opgeven. De Tab-toets volgt dan die afwijkende volgorde.

Tot zover is er nauwelijks verschil tussen het gebruik van de Tab-toets of van de muis.

Als je echter extra dingen onder de link hebt gestopt, die pas gaan werken als je over de link hovert, is er wel 'n verschil. Je geeft dat aan met :hover: als je over de link hovert. Met de Tab-toets alleen kun je niet over 'n link hoveren. Dus als er bijvoorbeeld 'n pop-up wordt geopend, zul je die niet zien als je de Tab-toets gebruik om naar 'n link te gaan.

Om dit op te lossen kun je op dezelfde manier als je :hover gebruikt :focus gebruiken: als de link focus heeft. Dat is dus als er 'n kadertje rondom de link staat en de link wordt gevolgd bij het indrukken van Enter.

Door dus a:hover, a:focus {...} te gebruiken, opent bijvoorbeeld 'n pop-up ook als je de Tab-toets gebruikt. Maar er zitten 'n paar adders onder het gras.

* Naast :hover en :focus is er nog :active. Deze laatste zou horen te werken als de muis wordt ingedrukt op de link. Dat werkt ook zo in alle browsers, behalve in Internet Explorer vóór versie 8. In haar onmetelijke wijsheid heeft Microsoft besloten af te wijken van de standaard: :active werkt in oudere versies zoals :focus hoort te werken, en :focus werkt gewoon helemaal niet vóór versie 8. In alle andere browsers werken :focus en :active dus wel volgens de standaard, en met ingang van versie 8 van Internet Explorer houdt Microsoft zich ook eindelijk aan de standaard.

Dit betekent dat je niet kunt volstaan met a:hover, a:focus {...}, maar dat je a:hover, a:focus, a:active {...} moet gebruiken, want anders werkt het niet in oudere versies van Internet Explorer. Het zal nog jaren duren voor deze oude versies niet meer worden gebruikt, maar omdat Microsoft zich nu eindelijk ook aan de standaard houdt op dit punt, wordt :active nu ook langzaamaan bruikbaar voor waar het voor is bedoeld.

* Belangrijke informatie moet je niet geven via :focus of :active, omdat dit niet werkt als css uit staat.

* Ten slotte kan 'n pop-up of zoiets gruwelijk in de weg komen te staan, bijvoorbeeld door de rest van de pagina af te dekken. Iemand die gewoon de muis kan gebruiken, verplaatst deze even en de pagina is weer zichtbaar. Iemand die moeite heeft met het gebruik van de muis, heeft deze mogelijkheid niet of minder. Als je buiten de link en de daarbij horende pop-up en dergelijke klikt, sluit deze weliswaar, maar dat is nu juist het probleem: mensen die de muis niet goed kunnen gebruiken, hebben nou net daar problemen mee.

Als je via de terug-toets teruggaat naar de vorige pagina, heeft de link waar je vandaan kwam nog steeds focus, en dus staan pop-up en dergelijke ook nog open. Wat ook heel storend kan zijn als andere delen van de pagina daardoor niet te zien zijn. Op het moment dat ik dit schreef, werkte de terug-toets bij alle browsers zo, met uitzondering van Google Chrome. Maar 't kan best zijn dat Google Chrome het inmiddels ook doet, of 'n andere juist weer niet, want dit schijnt nogal te veranderen.

Om al deze redenen is het goed je even af te vragen of de voordelen van 'n pop-up en dergelijke wel opwegen tegen de nadelen. Ik zet zelf mijn eigen overwegingen bij elk voorbeeld steeds even erbij. Wat natuurlijk niet wil zeggen dat je daar geen andere mening over zou kunnen hebben.

Speciaal bij dit voorbeeld

In dit voorbeeld verandert alleen de kleur van de ingang in de lijst. Dat levert dus geen enkel probleem op voor de rest van de pagina. Daarom gebruik ik hier :hover, :focus en :active alle drie.

Beschrijving van code en css

De code die te maken heeft met de basis van dit voorbeeld is rood gekleurd. Alle voor dit voorbeeld niet-essentiële code is bruin.

Deze uitleg hoort bij het voorbeeld dat in de download zit. Het voorbeeld uit de download verschilt iets van het voorbeeld hier op de site. In de download ontbreken bijvoorbeeld de witte vlakken met de links. Ook in de kopregels zit vaak wat verschil. Daarnaast kunnen er nog andere (meestal kleine) verschillen zijn.

Als je deze uitleg leest naast de broncode van het voorbeeld op de site, kan het dus bijvoorbeeld zijn dat 'n h1 uit de css bij 'n <h2> uit de html hoort. Maar het gaat niet om hele grote, fundamentele afwijkingen.

Als je dit lastig vindt, downloadt dan de hele handel (ga terug naar het voorbeeld en kies daar voor downloaden). In de download zit 'n voorbeeld dat wel naadloos aansluit op de uitleg in de download.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="nl" lang="nl">

Een document moet met een doctype beginnen om weergaveverschillen tussen browsers te voorkomen. Zonder doctype is de kans op verschillende (en soms volkomen verkeerde) weergave tussen verschillende browsers heel erg groot.

Geldige doctypes vind je op www.w3.org/QA/2002/04/valid-dtd-list.

Gebruik het volledige doctype, inclusief de url, anders werkt het niet goed.

De toevoeging achter <html hierboven hoort bij het gekozen doctype.

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Zorgt dat de browser letters met accenten en dergelijke goed kan weergeven. Als je als doctype html hebt gekozen, moet je niet eindigen op />, maar op > (dit geldt voor alles in de head wat eindigt op />).

utf-8 is de beste charset (tekenset), omdat deze alle talen van de wereld (en nog heel veel andere extra tekens) bestrijkt, maar toch niet meer ruimte inneemt voor de code dan nodig is. Als je utf-8 gebruikt, hoef je veel minder entiteiten (&auml; en dergelijke) te gebruiken, maar kun je bijvoorbeeld gewoon ä gebruiken.

Deze regel moet zo hoog mogelijk komen te staan, als eerste regel binnen de head, omdat hij anders door sommige browsers niet wordt gelezen.

<link rel="stylesheet" type="text/css" href="../../css/naam-van-stylesheet.css" /> <!--Instellingen voor Internet Explorer --> <!--[if IE]> <link rel="stylesheet" type="text/css" href="../../css/naam-van-ie-stylesheet.css"> <![endif]-->

Dit stukje code heeft in dit voorbeeldbestand geen enkel nut. Normaal genomen is het een verwijzing naar een extern stylesheet, waarin de style staat. In dit voorbeeld verwijst de href naar een niet bestaand bestand.

De bedoeling is dat je bovenstaande regels aanpast voor je eigen bestand. De hele style, die onder deze regels in de <head> staat, wordt dan in het externe bestand geplaatst waar de href naar verwijst. In dat bestand komt de style precies zo te staan zoals die nu in de <head> staat. Het bestand moet eindigen op .css.

Voordeel van een externe stylesheet is onder andere, dat deze geldig is voor alle pagina's waaraan deze is gelinkt. 'n Verandering in de lay-out hoef je dan maar op één enkele centrale plek te aan te brengen.

In die externe stylesheet zet je alles wat in dit voorbeeld tussen <style type="text/css"> en </style> staat (zonder deze begin- en eindregel).

De bovenste regel is voor de algemene stylesheet, geldig voor alle browsers. Dit is gewoon 'n link die naar 'n bestand elders verwijst, waar de css in staat. Op de plaats van "../../css/naam-van-stylesheet.css" moet je pad naar en naam van jouw stylesheet invullen.

Het eigenaardige stukje code daaronder heet een 'conditional comment' en wordt door alle browsers gezien als commentaar, omdat het tussen <!-- en --> staat. Maar Internet Explorer herkent het, door de extra toevoegingen, als speciaal voor Internet Explorer bedoeld en zal het dus uitvoeren. Het is veiliger dan een zogenaamde 'hack', waarbij vaak gebruik wordt gemaakt van 'n fout (bug) in de browser. Dit is opzettelijk aangebracht door Microsoft en zal dus blijven bestaan, terwijl 'n bug gerepareerd kan worden. Op deze manier kun je 'n stylesheet alleen voor Internet Explorer opnemen.

Dit stukje geldt voor alle versies van Internet Explorer, maar je kunt het ook per versie aangeven.

De link verwijst naar een aparte stylesheet voor Internet Explorer, waarin je css speciaal voor die browser zet. Op de plaats van "../../css-naam-van-ie-stylesheet.css" moet je pad naar en naam van je stylesheet voor Internet Explorer invullen.

De link naar het aparte stylesheet voor Internet Explorer moet ná de link naar het algemene stylesheet komen, omdat de opdrachten voor Internet Explorer dan over die uit het algemene stylesheet heen gaan.

<style type="text/css">

Voor de duidelijkheid staat de style hier in het bestand zelf, maar het is beter deze in een apart stylesheet te zetten, zoals hierboven beschreven. In die stylesheet komt alles wat tussen bovenstaande regel en </style> staat.

Technisch gezien is er geen enkel bezwaar om het in die stylesheet te zetten met dezelfde vreselijke lay-out als die ik in dit voorbeeld gebruik. Maar als je dat doet, garandeer ik je hele grote problemen omdat het volstrekt onoverzichtelijk is. Ik gebruik alleen deze lay-out omdat het anders veel te veel regels worden.

Voorbeeld van 'n goede lay-out in je css:


	div#header-buiten
	{
	    position: absolute;
	    right: 16px;
	    width: 100%;
	    height: 120px;
	    background: yellow;
	}

	div#header-binnen
	{
	    margin-left: 16px;
	    height: 120px;
	    text-align: center;
	}
body margin: 0; padding: 0;

Slim om te doen, is soms wat afwijkend in verschillende browsers.

font-family: Arial, Helvetica, sans-serif;

Lettersoort. Als er geen Arial is, wordt gezocht naar Helvetica. Als dat er ook niet is in ieder geval 'n lettersoort zonder schreef (dwarsstreepjes).

font-size: 110%;

Iets groter dan standaard. 't Zal de leeftijd zijn, maar ik vind de standaardgrootte wat te klein.

Ik gebruik hier % als eenheid, en voor alle andere lettergroottes gebruik ik em. Dat komt door Internet Explorer. Als ik als maateenheid iets als px neem, kunnen gebruikers van Internet Explorer de lettergrootte niet veranderen.

Maar als ik overal em neem als maateenheid, wat dan voor de hand zou liggen, kom ik in de problemen met versies van Internet Explorer ouder dan versie 8. De stappen van de verkleining of vergroting zijn in die browsers zo groot, dat 't gelijk onleesbaar klein of absurd groot is.

Als je nou echter bij body geen em gebruikt (font-size: 1.1em; zou hetzelfde moeten zijn als font-size: 110%;), dan is de lettergrootte in Internet Explorer te veranderen, en in oudere versies dan versie 8 zijn de tussenstappen teruggebracht tot normale grootte.

Dit werkt ook als je als lettergrootte 100% invult. Dat heeft geen enkele invloed op de lettergrootte, behalve dus dat de tussenstappen in oudere versies nu normaal werken.

In Internet Explorer 8 is deze bug eindelijk gerepareerd. Aangezien we waarschijnlijk nog vele jaren met oudere versies dan Internet Explorer 8 zitten opgescheept, zal deze truc ook nog jaren moeten worden toegepast.

Hoewel in dit voorbeeld verder geen em als eenheid wordt gebruikt, heb ik dit toch laten staan. Het is 'n weinig bekende truc om deze bug in Internet Explorer 6 en 7 te omzeilen, en mogelijk wordt buiten de sitemap wel de eenheid em gebruikt.

color: black;

Zwarte letter.

background: #ff9;

Achtergrondkleurtje.

div#content

De div met id="content". De div waar alles in staat.

Omdat deze div geen breedte heeft gekregen, vult hij automatisch de volle breedte van zijn ouder. Dat is hier het venster van de browser. Wil je de breedte van de sitemap beperken, dan kun je dat het best hier doen, want dan neem je alle kinderen gelijk mee.

margin: 20px 0 20px 20px;

Boven 20 px marge, rechts geen, onder en links 20 px marge. De marge aan de onderkant is omdat de sitemap anders pal tegen de onderkant van het venster van de browser komt te staan.

padding: 0 0 50px;

Omdat voor links geen waarde is ingevuld, krijgt links automatisch dezelfde waarde als rechts. Hier staat dus eigenlijk 0 0 50px 0; in de volgorde boven - rechts - onder - links. Alleen aan de onderkant 50 px padding. Dat is omdat Internet Explorer 6 en 7 de marge, zoals die hier gelijk boven is opgegeven, negeren. En omdat 't verder niet van belang is voor dit voorbeeld, los ik 't op deze manier (lekker slordig) op.

ul

Alle ongeordende lijsten.

Omdat een <ul> een blok-element is, vult het automatisch de volle breedte van zijn ouder. Dat is in dit voorbeeld div#content.

margin: 0; padding: 10px 0 0;

Verschillende browsers hebben nogal verschillende ideeën over marges en padding bij lijsten. Door ze hier zelf op te geven, zorg ik dat ze in alle browsers hetzelfde zijn.

De marge haal ik helemaal weg.

Omdat bij padding geen waarde voor links is opgegeven, krijgt dit automatisch dezelfde waarde als rechts. Hier staat dus eigenlijk 10px 0 0 0; in de volgorde boven - rechts - onder - links.

Door elke <ul> een padding aan de bovenkant te geven, komen de lijst-ingangen iets lager te liggen.

De <ul>'s krijgen aan de linkerkant een border, dat is de verticale zwarte lijn. Deze border loopt gewoon door naast de padding en steekt dus boven de bovenste lijst-ingang uit. Als ik een margin had genomen in plaats van een padding, zou de border niet doorlopen naast de margin.

In de afbeelding hierboven heeft 'Home' een eigen sub-lijst. De eerste ingang in die sub-lijst is 'Links'. Omdat de sub-lijst aan de bovenkant 10 px padding heeft, staat 'Links' dus 10 px onder de bovenkant van de sub-lijst, en dus ook 10 px onder 'Home'.

list-style: none;

De gebruikelijke bolletjes of zo van 'n <ul> zijn hier niet welkom.

li

Alle lijst-ingangen.

Omdat een <li> een blok-element is, wordt hij automatisch even hoog als nodig is om de inhoud ervan weer te kunnen geven. Hij wordt even breed als zijn ouder, dus de <ul> waar hij in zit. En omdat die ook geen breedte heeft, vult die ook weer de volle breedte van zijn ouder: div#content.

position: relative;

Door ze een relatieve positie te geven, kan ik kinderen van de <li>'s positioneren ten opzichte van de <li>'s. Dat kan alleen maar als de <li> zelf een positie heeft, ook al vul ik daar verder niets bij in.

margin-bottom: 8px;

Met de padding aan de bovenkant bij ul heb ik gezorgd voor afstand tussen de bovenste <li> en de eerste <li> van een eventueel daarin zittende sub-lijst. Tussen de <li>'s binnen dezelfde <ul> heb ik echter nog geen afstand. Daarom geef ik elke <li> 8 px marge aan de onderkant, zodat ze iets van elkaar af komen te staan.

ul a, ul span.kopje

Alle links en alle spans met class="kopje" binnen een <ul>. Hier geef ik de eigenschappen op die voor alle <a>'s en spans met class="kopje" hetzelfde zijn. De instellingen die voor de diverse <ul>'s verschillen geef ik later apart op.

Binnen de <a>'s staan de teksten die werken als een link. Enkele teksten zijn geen link, maar die moet ik wel kunnen opmaken, dus die zet ik binnen een span.kopje. <a> en span zien er hetzelfde uit, het enige verschil is dat de een als 'n link werkt en de ander niet.

display: block;

Een <a> en een span zijn van zichzelf een inline-element. Door er een blok-element van te maken kan ik eigenschappen als breedte gebruiken.

width: 360px;

Breedte 360 px. Omdat het nu blok-elementen zijn, zouden ze anders de volle breedte van hun ouder (de <li> waar ze in staan) vullen.

border: #999 solid 1px;

Donkergrijs randje rondom de link. Ik geef dat hier op en niet bij de <li> waar de link in staat, omdat die <li> geen breedte heeft en dus de volle breedte van zijn ouder vult. Bovendien moet de <li> even hoog zijn als de er eventueel in staande <ul>, dus die wordt veel te hoog. Bij de <a> speelt dat allemaal niet.

Het is ook overzichtelijker om breedte, border, enz. allemaal hier op te geven, want dan staat het op één plaats bij elkaar.

padding-left: 5px;

Kleine afstand tussen het begin van de tekst en de voorkant van de link. Omdat de link binnen een <li> staat, heb ik nu gelijk wat afstand tussen het begin van de tekst en de voorkant van de <li>.

text-decoration: none;

De gebruikelijke onderstreping van 'n link wil ik hier niet hebben. Hoewel dit alleen voor de <a> nodig is en niet voor de span, kan het verder geen enkel kwaad voor de span. En door <a> en span te combineren spaar ik css uit.

color: black;

En ook de normale kleur van 'n link wil ik niet. Gewoon zwarte tekst.

background: white;

Witte achtergrond.

font-size: 25px;

In tegenstelling tot vrijwel alle andere voorbeelden geef ik de lettergrootte niet in em op. 'n Combinatie van px en em blijkt niet goed te werken, er ontstaan te lange lijnen en gaten.

Dit betekent wel dat je in Internet Explorer de lettergrootte niet kunt veranderen. Zoomen werkt wel gewoon.

line-height: 34px;

Ik geef geen hoogte op, alleen een regelhoogte. Omdat de <a> in een blok-element is veranderd, wordt het automatisch even hoog als de regelhoogte. Door een regelhoogte te gebruiken en geen gewone hoogte komt de tekst automatisch verticaal in het midden te staan.

ul.een a:hover, ul.een a:focus, ul.een a:active

Als ik over een link binnen een <ul> met class="een". hover, of als deze actief is of focus heeft.

Omdat álle <a>'s, ook die binnen de dieper geneste <ul>'s, ook binnen ul.een staan, geldt dit voor álle <a>'s, ook die binnen de dieper geneste <ul>'s.

Wat dit precies betekent en waarom :focus én :active worden gebruikt staat bij Alleen :hover of :hover, :focus en :active?.

border: black solid 1px;

De links hebben een donkergrijze border. Verander deze in een zwarte.

background: #ccc;

En verander de witte achtergrond in donkergrijs.

ul span.onderste

De spans met class="onderste" binnen de <ul>'s. Dit zijn de spans waar de 'streepjes' in staan die de te lange verticale lijnen afdekken. Alleen elke laatste <li> van elke <ul> krijgt deze extra span, omdat alleen het laatste stuk van de verticale lijn moet worden afgedekt.

Hier staan de instellingen die voor al deze spans gelden. Voor de spans die in dieper geneste lijsten staan volgen verderop kleine aanpassingen.

position: absolute;

Absoluut positioneren zodat ik ze kan neerzetten waar ik wil. Er wordt gepositioneerd ten opzichte van de eerste ouder met een positie, dat is hier de <li> waar ze in staan. (Op de afbeelding hieronder is de ouder van de rode span de <li> met 'Plat'.)

Een span is van zichzelf een inline-element. Door haar absoluut te positioneren, verandert ze in een blok-element, waardoor ik eigenschappen als breedte kan gebruiken.

top: 14px;

Door uit te proberen blijkt dit de hoogte te zijn, waarbij de span precies op de juiste plaats komt te staan: tegen het horizontale lijntje aan.

left: -2px;

De span is 3 px breed. Hij moet precies over het te lange deel van de verticale lijn (de border aan de linkerkant van de <ul>) komen te staan om die af te dekken. Deze border is 1 px breed. De span steekt dus links en rechts 1 px uit.

Als ik de span maar 1 px breed maak, wordt hij in sommige browsers bij bepaalde zoom-standen net links of rechts van de te lange border neergezet, waardoor hij deze dus niet afdekt.

bottom: 0;

Binnen de <li> met 'Plat' staat weer een <ul> met hier op de afbeelding vijf ingangen. De <li> 'Plat' wordt automatisch precies zo hoog als nodig is om die <ul> erin te kunnen zetten.

Daardoor loopt de <ul> waar de <li> met 'Plat' een ingang van is automatisch ook even ver naar beneden door als de <li> met 'Plat', want anders zou deze niet in de <ul> passen.

En daardoor loopt de border aan de linkerkant van de <ul>, de verticale lijn, ook weer even ver naar beneden door als de <li> met 'Plat'. Dus moet de afdekkende span ook tot de onderkant van de <li> met 'Plat' lopen.

width: 3px;

3 px breed. Voor het waarom van deze breedte zie De span is 3 px breed...

background: #ff9;

Zelfde kleur als de achtergrond van de pagina, zodat de span onzichtbaar is.

Omdat de span niet doorzichtig is, kun je deze constructie vrijwel onmogelijk boven 'n achtergrond-afbeelding zetten. Daarvoor zou je 'n stukje van de afbeelding in de span moeten zetten en die span dan precies op de juiste plaats moeten positioneren. Dat is vrijwel onmogelijk in alle browsers goed te krijgen. En als 't al zou lukken, gaat 't gelijk mis bij 'n andere lettergrootte en/of zoomen. Waardoor je dus 'n stukje afbeelding krijgt dat iets is verplaatst ten opzichte van de rest van de afbeelding, wat natuurlijk foeilelijk is.

ul.twee

De <ul>'s met class="twee". Dit is de eerste geneste <ul>, de <ul> van het tweede niveau.

margin-left: 20px;

Deze geneste <ul> staat binnen een <li> van de hogere <ul>: op de afbeelding hiernaast staat de roze ul.twee binnen de <li> met 'Home', die bij de blauwe ul.een hoort.

De marge van 20 px schuift de hele roze <ul> naar rechts, waardoor ook de border aan de linkerkant van de <ul> mee naar rechts schuift en er wat ruimte ontstaat.

border-left: black solid 1px;

Zwarte lijn aan de linkerkant. Deze borders links zorgen voor de langere verticale zwarte lijnen. Op de afbeelding hierboven is het de verticale zwarte lijn aan de linkerkant van de roze ul.twee.

ul.twee span.hoek

De spans met class="hoek" die binnen een <ul> met class="twee" liggen. Omdat spans met class="hoek" die binnen een dieper geneste <ul> liggen ook altijd binnen ul.twee liggen, gelden deze instellingen voor álle spans met class="hoek". Verderop breng ik kleine correcties aan voor de spans die in dieper geneste <ul>'s liggen.

Deze spans zorgen voor het horizontale lijntje tussen de witte vlakken met tekst en de verticale lijn. (Oorspronkelijk zorgde deze span voor een hoek, vandaar de class-naam 'hoek'...)

In de afbeelding hiernaast is de roze balk een <li> uit ul.drie, de bruingroene een <li> uit ul.vier en de groene uit ul.vijf. De spans zijn even rood gemaakt om ze zichtbaar te maken.

Ik beperk me hier even tot de bruingroene <li> met 'Geen header', maar het principe is overal hetzelfde, alleen de maten verschillen eventueel. Duidelijk is te zien dat de <li> veel groter is dan de erin liggende witte <a>.

position: absolute;

Om de span op de juiste plaats neer te kunnen zetten. Er wordt gepositioneerd ten opzichte van de eerste ouder die zelf een positie heeft. Dat is hier de <li> waarbinnen de span staat.

Een span is van zichzelf een inline-element. Door haar absoluut te positioneren, verandert ze in een blok-element, waardoor ik eigenschappen als breedte kan gebruiken.

top: -9px;

Door uitproberen blijkt dit de juiste hoogte te zijn, althans voor de spans binnen ul.twee. Voor andere <ul>'s wordt dit, als dat nodig is, later gecorrigeerd. De span staan nu halverwege de witte <a> met 'Geen header'. Daardoor staat de zwarte border aan de onderkant ook halverwege deze witte <a>, oftewel: het horizontale zwarte lijntje staat netjes in het midden van de ingang in de sitemap.

In de afbeelding hierboven hoort bij de bruingroene <li> de tweede rode span van boven.

left: 0;

Omdat de <li> verder naar links staat dan de witte <a>, zet ik de span helemaal links. Nu staat hij tegen de border aan de linkerkant van de <ul>, en dus staat de zwarte border aan de onderkant van de span ook tegen deze verticale border aan: een keurige gesloten hoek. (In de afbeelding dekken de roodgemaakte spans de verticale lijnen gedeeltelijk af. In het echte voorbeeld zijn ze doorzichtig en gebeurt dit niet.)

width: 24px;

Iets verderop, bij ul.twee a, ul.twee span.kopje, geef ik alle <a>'s een marge aan de linkerkant van 24 px. Sommige ingangen zijn geen link en staan dus niet in een <a>, maar in een span met class="kopje". Ook die krijgen zo'n marge.

Daardoor komt er dus een ruimte van 24 px tussen de border aan de linkerkant van de <ul>, de verticale lijn, en de witte achtergrond van de <a>'s en spans. Als ik nu deze span even breed maak als die ruimte, vult hij die precies. En dus ook de border aan de onderkant: het horizontale streepje vult nu precies de ruimte tussen de verticale lijn (de border aan de linkerkant van de <ul>) en het kadertje om de <a> of <span> met de tekst.

height: 22px;

De span is hierboven 9 px omhoog geplaatst. Door uitproberen blijkt dit de juiste hoogte te zijn om de border aan de onderkant halverwege het witte vlak van de <a> of span te krijgen.

border-bottom: black solid 1px;

En dan eindelijk waar deze hele exercitie om is begonnen: het kleine horizontale streepje tussen witte vlak en verticale lijn. Omdat dit 'n gewone border is, staat deze automatisch goed als positie en grootte van de span in orde zijn.

ul.twee a, ul.twee span.kopje

Alle <a>'s en de spans met class="kopje" binnen een <ul> met class="twee". Omdat de links en spans binnen dieper geneste <ul>'s ook altijd binnen ul.twee vallen, gelden de instellingen hier ook voor die links en spans binnen de dieper geneste <ul>'s.

De meeste instellingen voor de <a>'s en spans met class="kopje" zijn al opgegeven bij ul a, ul span.kopje. Hier geef ik alleen 'n marge links op en wat maten die anders moeten dan die bij ul a, ul span.kopje zijn opgegeven. Door het toevoegen van .twee voorkom ik dat deze eigenschappen ook invloed hebben op de buitenste ul.een.

width: 280px;

De <a>'s en spans van het tweede niveau worden iets smaller. Omdat de <a>'s en de spans een witte achtergrond hebben, wordt deze dus ook gelijk smaller.

margin-left: 24px;

24 px ruimte tussen de witte achtergrond van de <a>'s en de spans. In deze ruimte komt de span.hoek met het horizontale streepje tussen het witte vlak en de verticale lijn.

font-size: 20px;

Tekst van het tweede niveau wordt iets kleiner

In tegenstelling tot vrijwel alle andere voorbeelden geef ik de lettergrootte niet in em op. 'n Combinatie van px en em blijkt niet goed te werken, er ontstaan te lange lijnen en gaten.

Dit betekent wel dat je in Internet Explorer de lettergrootte niet kunt veranderen. Zoomen werkt wel gewoon.

line-height: 28px;

En dus ook 'n iets kleinere regelhoogte.

ul.drie, ul.vier, ul.vijf

De <ul>'s met class="drie", "vier" of "vijf". Dit zijn de <ul>'s van het derde, vierde en vijfde niveau. Drie is genest in twee, vier in drie, enz.

margin-left: 40px; border-left: black solid 1px;

Precies hetzelfde verhaal als bij ul.twee, alleen is de marge links iets groter.

ul.drie a

De links binnen een <ul> met class="drie".

width: 200px; font-size: 17px; line-height: 24px;

Alle instellingen zijn al opgegeven bij ul a, ul span.kopje en ul.twee a, ul.twee span.kopje. Alleen de hier staande eigenschappen worden aangepast, zodat deze ingangen van het derde niveau iets kleiner zijn.

ul.drie span.hoek

De spans met class="hoek" binnen een <ul> met class="drie". Alle instellingen zijn al opgegeven bij ul.twee span.hoek, alleen de hoogte moet worden aangepast.

height: 21px;

Door uitproberen blijkt dit de juiste hoogte te zijn om de border aan de onderkant halverwege het witte vlak van de ingang van het derde niveau te krijgen.

ul.drie span.onderste

De spans met class="onderste" binnen een <ul> met class="drie". Alle instellingen zijn al opgegeven bij ul span.onderste, alleen top moet worden aangepast.

top: 13px;

Door uit te proberen blijkt dit de hoogte voor het derde niveau te zijn, waarbij de span precies op de juiste plaats komt te staan, tegen het horizontale lijntje aan.

ul.vier a

De links binnen een <ul> met class="vier".

width: 120px; font-size: 14px; line-height: 20px;

Alle instellingen zijn al opgegeven bij ul a, ul span.kopje en ul.twee a, ul.twee span.kopje. Alleen de hier staande eigenschappen worden aangepast, zodat deze ingangen van het vierde niveau iets kleiner zijn.

ul.vier span.hoek

De spans met class="hoek" binnen een <ul> met class="vier". Alle instellingen zijn al opgegeven bij ul.twee span.hoek, alleen de hoogte moet worden aangepast.

height: 20px;

Door uitproberen blijkt dit de juiste hoogte te zijn om de border aan de onderkant halverwege het witte vlak van de ingang van het vierde niveau te krijgen.

ul.vier span.onderste

De spans met class="onderste" binnen een <ul> met class="vier". Alle instellingen zijn al opgegeven bij ul span.onderste, alleen top moet worden aangepast.

top: 12px;

Door uit te proberen blijkt dit de hoogte voor het vierde niveau te zijn, waarbij de span precies op de juiste plaats komt te staan, tegen het horizontale lijntje aan.

ul.vijf a

De links binnen een <ul> met class="vijf".

width: 40px; font-size: 12px; line-height: 14px;

Alle instellingen zijn al opgegeven bij ul a, ul span.kopje en ul.twee a, ul.twee span.kopje. Alleen de hier staande eigenschappen worden aangepast, zodat deze ingangen van het vijfde niveau iets kleiner zijn.

ul.vijf span.hoek

De spans met class="hoek" binnen een <ul> met class="vijf". Alle instellingen zijn al opgegeven bij ul.twee span.hoek, alleen de hoogte moet worden aangepast.

height: 17px;

Door uitproberen blijkt dit de juiste hoogte te zijn om de border aan de onderkant halverwege het witte vlak van de ingang van het vijfde niveau te krijgen.

ul.vijf span.onderste

De spans met class="onderste" binnen een <ul> met class="vijf". Alle instellingen zijn al opgegeven bij ul span.onderste, alleen top moet worden aangepast.

top: 9px;

Door uit te proberen blijkt dit de hoogte voor het vijfde niveau te zijn, waarbij de span precies op de juiste plaats komt te staan, tegen het horizontale lijntje aan.

Speciaal voor Internet Explorer 6

<!--[if IE 6]> <style type="text/css"> ul.twee span.hoek {left: -24px;} ul span.onderste {display: block; height: 500px; left: -26px; border: 0;} ul.vier span.onderste {top: 13px;} </style> <![endif]-->

Dit eigenaardige stukje code heet een 'conditional comment' en wordt door alle browsers gezien als commentaar, omdat het tussen <!-- en --> staat. Maar Internet Explorer herkent het, door de extra toevoegingen, als speciaal voor Internet Explorer bedoeld en zal het dus uitvoeren. Het is veiliger dan een zogenaamde 'hack', waarbij vaak gebruik wordt gemaakt van 'n fout (bug) in de browser. Dit is opzettelijk aangebracht door Microsoft en zal dus blijven bestaan, terwijl 'n bug gerepareerd kan worden.

De style voor Internet Explorer moet ná de normale komen, omdat de opdrachten voor Internet Explorer dan over de normale heen gaan.

Dit stukje geldt voor Internet Explorer 6, maar je kunt het ook voor andere versies aangeven.

In plaats van de style kun je ook 'n normale link naar 'n extern css-bestand aanbrengen:

<!--[if IE 6]> <link rel="stylesheet" type="text/css" href="../../css/naam-van-ie-stylesheet.css"> <![endif]-->

Op de plaats van "../../css/naam-van-ie-stylesheet.css" vul je pad naar en naam van jouw stylesheet voor Internet Explorer 6 in. De css voor Internet Explorer 6 komt dan apart in die stylesheet te staan, zodat het de andere browsers niet stoort.

Het is belangrijk dat de spaties in <!--[if IE 6]> en <![endif]--> precies zo worden overgenomen zoals ze hier staan.

ul.twee span.hoek

De spans met class="hoek" die binnen een <ul> met class="twee" liggen. Omdat spans met class="hoek" die binnen een dieper geneste <ul> liggen ook altijd binnen ul.twee liggen, gelden deze instellingen voor elke span met class="hoek".

Deze spans zorgen voor het horizontale lijntje tussen de witte vlakken met tekst en de verticale lijn.

left: -24px;

Aflevering 398 uit De Wondere Wereld van Internet Explorer 6. Deze spans worden gepositioneerd ten opzichte van de <li> waar ze in staan. Daarom is in de algemene css left: 0; opgegeven. Om een of andere duistere reden zet Internet Explorer 6 ze dan echter niet aan het begin van de <li>, maar aan het begin van de in de <li> zittende <a> of span met de tekst.

Op deze manier wordt het horizontale lijntje ook in deze als browser vermomde pestilentie op de goede plaats neergezet.

ul span.onderste

De spans met class="onderste" binnen een <ul>. Dit zijn de spans waar de 'streepjes' in staan die de te lange verticale lijnen afdekken.

display: block;

Aflevering 399 uit De Wondere Wereld van Internet Explorer 6. Een span is van zichzelf een inline-element. Maar omdat hij in de algemene css absoluut is gepositioneerd, verandert hij in een blok-element. Om een of andere reden gebeurt dat echter niet in Internet Explorer 6, dus geef ik het hier expliciet op.

height: 500px;

In de algemene css is deze span absoluut gepositioneerd tussen bovenkant en onderkant van de <li>. Maar Internet Explorer 6 negeert de bottom: 0; volledig.

Daarom geef ik de span 'n hoogte. Deze hoogte is groot genoeg om, bij deze sitemap, ook de langste overbodige delen van de verticale lijnen af te dekken.

left: -26px;

Deze spans worden gepositioneerd ten opzichte van de <li> waar ze in staan. Daarom is in de algemene css left: -2px; opgegeven. Om een of andere duistere reden zet Internet Explorer 6 ze dan echter 24 px te veel naar rechts.

Op deze manie wordt de afdekkende span ook in Internet Explorer 6 op de goede plaats neergezet.

ul.vier span.onderste

De spans met class="onderste" binnen een <ul> met class="vier".

top: 13px;

De instelling uit de algemene css waar alle andere browsers gelukkig mee zijn is voor dit verwende kreng niet goed genoeg. Het levert 'n kier op. Dus passen we de instelling voor Internet Explorer 6 aan.

Speciaal voor Internet Explorer 7

<!--[if IE 7]> <style type="text/css"> ul span.onderste {display: block;} </style> <![endif]-->

Deze code geldt alleen voor Internet Explorer 7. Uitleg zie bij Speciaal voor Internet Explorer 6.

ul span.onderste

De spans met class="onderste" binnen een <ul>. Dit zijn de spans waar de 'streepjes' in staan die de te lange verticale lijnen afdekken.

display: block;

Een span is van zichzelf een inline-element. Maar omdat hij in de algemene css absoluut is gepositioneerd, verandert hij in een blok-element. Om een of andere reden gebeurt dat echter niet in Internet Explorer 7, dus geef ik het hier expliciet op.

De code aanpassen aan je eigen ontwerp

Toegankelijkheid en zoekmachines

Eventuele opmerkingen specifiek voor dit voorbeeld staan bij Opmerkingen.

Toegankelijkheid (accessibility in het Engels) is belangrijk voor bijvoorbeeld blinden die een spraakbrowser gebruiken, of voor motorisch gehandicapte mensen die moeite hebben met het bedienen van een muis. Een spider van een zoekmachine (dat is het programmaatje wat de site indexeert voor de zoekmachine) is te vergelijken met een blinde. Als je je site goed toegankelijk maakt voor gehandicapten, is dat dus gelijk goed voor een hogere plaats in een zoekmachine. Dus als je 't niet uit sociale motieven wilt doen, kun je 't uit egoïstische motieven doen.

(Op die plaats in de zoekmachine heb je maar beperkt invloed. De toegankelijkheid van je site is maar één van de factoren, maar zeker niet onbelangrijk.)

Als je bij het maken van je site al rekening houdt met toegankelijkheid, is dat nauwelijks extra werk. 't Is ongeveer te vergelijken met inbraakbescherming: doe dat bij 'n nieuw huis en 't is nauwelijks extra werk, doe 't bij 'n bestaand huis en 't is al snel 'n enorme klus.

Enkele tips die helpen bij toegankelijkheid:

Getest in

Laatst gecontroleerd op 28 februari 2011.

(Internet Explorer 6 is voor het laatst gecontroleerd op 29 september 2009. Op deze browser test ik niet meer. Maar omdat de code niet is veranderd, neem ik aan dat dit voorbeeld ook nog werkt in Internet Explorer 6.)

Dit voorbeeld is getest in Firefox, Opera, Safari, Google Chrome, Internet Explorer 6, 7, 8 en 9 in de resoluties 800x600, 1024x768, 1280x1024 en 1440x900. Steeds met de laatste versie van die browsers, omdat ik geen zin heb om rekening te houden met mensen die met zwaar verouderde browsers surfen. Dat is trouwens vragen om ellende, want updates van browsers hebben heel vaak met beveiligingsproblemen te maken. In de resoluties 1024x768, 1280x1024 en 1440x900 is ook in- en uitzoomen en een kleinere en grotere letter getest. Er is ingezoomd en vergroot tot zover de browser kan, maar niet verder dan tot 200%.

Eventuele problemen met betrekking tot zoomen en lettergrootte staan bij Bekende problemen.

Er is getest met behulp van muis en toetsenbord.

Naast deze 'gewone' browsers is ook getest in Lynx, WebbIE, NVDA en Fangs Screen Reader Emulator. Lynx is een browser die alleen tekst laat zien en geen css gebruikt. WebbIE is een browser die gericht is op mensen met een handicap. NVDA is een screenreader, zoals die door blinden wordt gebruikt. Fangs Screen Reader Emulator is een extensie bij Firefox die de pagina laat zien zoals een screenreader hem ziet.

Als het voorbeeld in deze vier programma's toegankelijk is, zou het in principe toegankelijk moeten zijn in alle aangepaste browsers en dergelijke. En dus ook voor zoekmachines, want een zoekmachine is redelijk vergelijkbaar met een blinde. Eventuele opmerkingen over de toegankelijkheid van dit voorbeeld staan bij Opmerkingen.

Alleen op de hierboven genoemde systemen en browsers is getest. Er is dus niet getest op bijvoorbeeld mobiele systemen als iOS of Android, en ook niet op apparaten als smartphones, iPad, enz. De kans is heel erg groot dat dit voorbeeld niet (volledig) werkt op dat soort systemen en apparaten. Om het wel (volledig) werkend te krijgen, zul je vaak wijzigingen en/of aanvullingen moeten aanbrengen.

De html is gevalideerd met de validator van w3c, de css ook. Als om een of andere reden niet volledig gevalideerd kon worden, wordt dat bij Bekende problemen vermeld.

Nieuwe browsers test ik pas als ze uit het bèta-stadium zijn, omdat er anders 'n redelijke kans is dat ik 'n bug zit te omzeilen, die voor de uiteindelijke versie nog gerepareerd wordt. Dit voorbeeld is alleen getest in de hierboven met name genoemde browsers. Vragen over niet-geteste browsers kan ik niet beantwoorden, en het melden van fouten in niet-geteste browsers heeft ook geen enkel nut. (Melden van fouten, problemen, enz. in wel geteste browsers: graag!)

Wijzigingen

Alleen grotere wijzigingen worden hier vermeld, geen dingen als een link die is geüpdatet.

29 september 2009:

Nieuw opgenomen.

28 februari 2011:

In de vorige versie was bij elke lijst-ingang een nummer aangebracht, dat speciaal voor spraakbrowsers en dergelijke was bedoeld. Het programma dat ik toentertijd gebruikte om een spraakbrowser te imiteren, bleek echter niet echt geweldig te zijn.

Volgens dat programma werden alle lijst-ingangen achter elkaar voorgelezen, als één lange regel. Daarom leek het nodig om voor spraakbrowsers en dergelijke een aparte nummering aan te brengen. Inmiddels gebruik ik veel betere programma's om toegankelijkheid te testen. En die laten heel wat anders zien en horen.

Afhankelijk van programma en instellingen blijken spraakbrowsers en dergelijke de titel en/of de schermtekst en/of de diepte van de lijst voor te lezen. De speciale nummers waren alleen maar ongelooflijk irritant.

Die nummers zijn dus weggehaald en de tekst is daaraan aangepast.

13 februari 2012:

Bekende problemen

Opera, Firefox, Safari en Google Chrome

Bij in- en uitzoomen ontstaan er bij bepaalde standen minieme gaatjes in de hoeken en/of lopen de lijntjes in de hoeken 'n heel klein beetje te ver door. Dit is in de regel zo weinig dat je 't eigenlijk niet ziet als je 't niet weet. Als alleen de lettergrootte wordt veranderd, gebeurt dit niet.

Safari en Firefox

Als de letters 140% of meer worden vergroot, komt een enkel woord iets buiten de witte achtergrond te staan. Echte problemen levert dit niet op. Dit speelt alleen bij de lettergrootte, niet bij zoomen.

Opera

Bij inzoomen (vergroten) worden sommige lijnen bij bepaalde standen dubbel zo dik als hoort.

Internet Explorer 6

Bij een andere lettergrootte ontstaan kleine gaatjes in de hoeken of lopen de lijntjes in de hoeken iets te ver door.

Internet Explorer 7 en 9

Hè? Ben je Internet Explorer 8 niet vergeten? Nee, vreemd genoeg niet. In dit voorbeeld werkt 8 gewoon beter dan 9...