Uitleg css-imagemap: landkaart met pop-ups van uitsnedes en extra informatie
Laatst aangepast: .

Dit voorbeeld is verouderd
Normaal genomen wordt een voorbeeld vroeger of later geüpdatet. In dit geval kan dat niet, omdat dit voorbeeld stomweg ongeschikt is voor welk touchscreen dan ook. De kern van het voorbeeld is een afbeelding, waarop je heel precies met de muis een land kunt aanraken. Het is onmogelijk om datzelfde met een vinger te doen, omdat de aan te raken plekjes meestal veel te klein zijn. Probeer maar 'ns Monaco of Vaticaanstad te raken met 'n vinger...
In de uitleg wordt nog over code voor oudere versies van Internet Explorer gesproken, maar die code zelf is op de site verwijderd. Het is echter wat zonde van de tijd om elke verwijzing naar die mensenhatende browser uit de tekst te verwijderen, dus her en der zijn die blijven staan.
Omdat het, toen het werd gemaakt, best wel leuk werkte, blijft het gewoon op de site staan. Maar de gebruikte techniek is dus echt volstrekt ongeschikt voor touchscreens, waarop het voorbeeld dan ook niet (goed) zal werken.
Los van de verouderde code kunnen ook de overige teksten in deze uitleg, zoals die over toegankelijkheid, (sterk) verouderd zijn.
Korte omschrijving
De kaart van Europa is (onzichtbaar) in stukjes opgedeeld, die zo goed mogelijk de diverse landen bedekken. Achter elk stukje zit een link naar een aparte pagina over dat land, vandaar de naam 'css-imagemap'.
Zodra je met de cursor boven de kaart komt, opent rechts een grotere kaart van het land waar je boven hangt. Onder de kaart opent een venstertje met de vlag en nog wat andere informatie over het land.
Als je met de Tab-toets van link naar link gaat, geeft een blauwe ster aan in welk land je staat.
BELANGRIJK
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 ontbreekt bijvoorbeeld de navigatie voor de site. 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, kun je bovenaan de pagina de hele handel downloaden. In de download zit 'n voorbeeld dat wel naadloos aansluit op de uitleg in de download.
Als je deze handleiding graag uitprint (zonde van het bos), gebruik dan de pdf in de download. Deze pagina is niet geoptimaliseerd voor printen, de pdf kan wel makkelijk worden geprint.
Alles op deze site kan vrij worden gebruikt, met drie 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.
* Het kan zijn dat materiaal is gebruikt dat van anderen afkomstig is. Dat materiaal kan onder een bepaalde licentie vallen, waardoor het mogelijk niet onbeperkt gebruikt mag worden. Als dat zo is, wordt dat vermeld onder Inhoud van de download en licenties.
Een link naar www.css-voorbeelden.nl wordt trouwens altijd op prijs gesteld.
Alle code is geschreven in een afwijkende
lettersoort en -kleur. De code die te maken heeft met de basis van dit voorbeeld (essentiële code), is in de hele uitleg onderstippeld blauw
. Alle niet-essentiële code is bruin
. (In de inhoudsopgave staat alles vanwege de leesbaarheid in een gewone letter.)
Opmerkingen
-
De vlaggen zijn afkomstig van www.cia.gov/the-world-factbook/references/flags-of-the-world.
De landkaarten zijn afkomstig van maps.lib.utexas.edu.
De extra informatie is afkomstig van nl.wikipedia.org/wiki/Hoofdpagina.
-
De bij de landen horende vlaggen worden gelijk bij het openen van de pagina geladen. Omdat dit kleine afbeeldingen zijn, is dat geen probleem. De landkaarten (bij elkaar ruim 1,6 MB) worden pas geladen als ze worden getoond, dus pas als over het bijbehorende land wordt gehoverd.
-
Anders dan bij de meeste voorbeelden is de code van het gedownloade voorbeeld nogal afwijkend van het voorbeeld op de site. De twee grote witte navigatieknoppen hadden nogal 'n forse ruzie met de rest van de pagina en moesten hardhandig op hun plaats worden gezet. Omdat die navigatieknoppen niet in de download zitten, zijn de aanpassingen ervoor dus ook niet nodig.
In het voorbeeld op de site worden de hotspots zichtbaar als je de cursor links van de kaart van Europa plaatst. Ook dat is weggelaten uit de download, dus ook de code daarvoor ontbreekt.
Overigens werkt dat tonen van de hotspots niet in Internet Explorer 6.
-
Zonder css wordt de kaart van Europa getoond. Daaronder staan in een lange rij alle links, waarbij binnen elke link de vlag en de tekst van het land staan.
Schermlezers zoals Jaws lezen, afhankelijk van de instellingen, de titel van de link of de schermtekst zoals die bij hoveren over het land verschijnt. Als de titel wordt gelezen, hoor je alleen de naam van het land. Als de schermtekst wordt gelezen, hoor je bij elke link een lang verhaal waarin de informatie over het land staat.
In het ene geval mis je informatie, in het andere geval is elke link een ellenlange opsomming van getallen en zo. Voor schermlezers en dergelijke is deze imagemap dus minder geschikt en zou je een alternatief moeten maken.
-
Opera blijkt 'n goed verstopte hele leuke mogelijkheid om te navigeren te hebben. Met behulp van Shift + een van de pijltjestoetsen kun je in alle richtingen van link naar link springen. Dat werkt ook boven de kaart van Europa.
-
Voor het geval iemand dit voorbeeld door Page Speed haalt en zich 'n lachstuip schrikt: anders dan andere constructies op deze site haalt deze pagina een hele lage score in Page Speed. De kleine vlaggen die verschijnen als je over 'n land hovert, zouden volgens Page Speed in één grote afbeelding kunnen worden gestopt, een zogenaamde 'sprite'. Je geeft ze dan als achtergrond weer en zet ze met behulp van background-position op de juiste plaats.
Daar is iets voor te zeggen, hoewel het alles wel 'n stuk ingewikkelder maakt. Sprites worden normaal genomen gebruikt om het aantal aanroepen naar de server te verminderen. Hier echter vinden deze aanroepen niet plaats bij opening van de pagina, maar pas als je over 'n land hovert. Dus niet gelijktijdig, maar over verloop van 'n langere tijd. Maar ik geef toe: er is iets voor te zeggen.
Tegelijkertijd meldt Page Speed echter dat ik bij die afbeeldingen de maat moet aangeven, omdat het <img>'s zijn. Tja. Het is van tweeën een: óf het worden sprites en dus achtergrond-afbeeldingen zonder maat, óf het blijven <img>'s met maat, maar dan moet Page Speed niet zeuren over sprites. Nu krijg ik twee keer straf voor hetzelfde vergrijp.
Die maat bij vlaggen is trouwens opzettelijk weggelaten. Normaal genomen wordt de maat bij afbeeldingen weergegeven, zodat de browser ruimte kan reserveren. De tekst wordt al op de pagina gezet, de afbeeldingen volgen later. Hier echter speelt dat helemaal niet: de afbeeldingen worden pas getoond als je over 'n land hovert.
Kortom: ik ben tot in het diepst van mijn ziel geschokt door deze gedeeltelijk volstrekt onterechte beschuldigingen van Google. Voor straf zal ik Google nooit meer gebruiken. Dat zal ze leren!
Links in deze uitleg, vooral links naar andere sites, kunnen verouderd zijn. Op de pagina met links vind je steeds de meest recente links.
Dit voorbeeld is gemaakt op een systeem met Linux (Kubuntu). Daarbij is vooral gebruik gemaakt van Visual Studio Code, GIMP en Firefox met extensies. De pdf-bestanden zijn gemaakt met LibreOffice.
Vragen of opmerkingen? Fout gevonden? Ga naar het forum.
Achterliggend idee
Bij een 'gewone' imagemap zitten de links onder een daarvoor gevoelig stukje van een afbeelding. Dat stukje kan ook onregelmatig van vorm zijn. Je kunt er dus heel precies bijvoorbeeld 'n land mee afperken. Maar het is niet mogelijk om pop-ups weer te geven bij hoveren en dergelijke, in ieder geval niet zonder JavaScript.
Door gebruik van css kun je wel pop-ups gebruiken, maar je kunt er geen onregelmatige vormen mee afgrenzen. Of eigenlijk: in theorie is dat wel mogelijk, in de praktijk zou dat 'n waanzinnige hoeveelheid code opleveren. In theorie kun je per pixel aangeven wat er moet gebeuren. Maar 'n thumbnail van 200 x 200 px levert al 40.000 pixel op. Zelfs als 'n groot deel daarvan te combineren is, levert dat nog duizenden aparte stukjes op, die elk hun eigen code moeten hebben.
Bij deze landkaart heb ik voor 'n soort tussenoplossing gekozen. Met behulp van css worden (kleine) rechthoekjes afgegrensd. Veel landen blijken dan met één rechthoek al redelijk afgedekt te zijn. Sommige landen (Italië is 'n ramp) hebben meer rechthoekjes nodig.
De grenzen van de landen worden niet precies gevolgd, maar het lijkt alsof dat wel zo is. Ik vermoed dat hier, zoals zo vaak, meespeelt dat het menselijk oog makkelijk te foppen is.
Als je op de site zelf aan de linkerkant van de kaart van Europa gaat hangen met je cursor, zie je de voor hoveren gevoelige plekken verschijnen (in het gedownloade voorbeeld heb ik dat weggelaten, de code is al ingewikkeld genoeg voor veel mensen, denk ik). Je kunt dan zien dat Italië door in totaal zes stukken wordt afgedekt. Als je over een van die stukken hovert, openen twee pop-ups: eentje met de landkaart van Italië, en eentje met wat informatie zoals de vlag en de hoofdstad.
Om de rechthoekjes te krijgen verander ik het inline-element <a> in een blok-element en positioneer het op de juiste plaats met de juiste hoogte en breedte. In de <a> zit een span. Bij hoveren krijgt die als achtergrond-afbeelding de landkaart van het betreffende land. Omdat het een achtergrond-afbeelding is wordt die pas geladen als hij wordt getoond. Dat is wel handig, want alle landkaarten bij elkaar zijn ruim 2,5 MB, en daar maak je je niet populair mee bij mensen met 'n beperkte bandbreedte of 'n trage verbinding.
Binnen deze span zitten nog twee 'sub-'spans: eentje met de naam van het land, en eentje met de extra info als vlag en hoofdstad. De naam van het land is gewoon tekst. De extra info is een gewone afbeelding met de vlag van het land en verder gewone tekst. Die vlaggen worden gelijk geladen als de pagina wordt geladen, omdat het gewone afbeeldingen zijn, maar dat is geen probleem omdat ze heel klein zijn.
De spans met de extra info gebruiken 'n gewone <br> om alle onderdelen op 'n nieuwe regel te zetten. Aan het eind van de laatste regel staat ook 'n <br>. Dat is omdat tekstbrowsers anders de laatste regel samenvoegen met de eerste regel van het volgende venster, en dat ziet er tamelijk onleesbaar uit.
Tijdens het maken van dit voorbeeld bleek zich 'n aantal aparte problemen voor te doen.
-
Als ik van links naar rechts en van boven naar beneden - de meest logische volgorde volgens mij - alle landen probeer af te dekken, heb ik heel veel rechthoeken nodig. Als ik bijvoorbeeld rechtsboven Litouwen (bruin) zo wil afdekken, dat Rusland (geel) niet ook wordt bedekt, heb ik voor Litouwen drie rechthoeken nodig.
Maar als ik nu voor Litouwen gewoon 'n grote rechthoek neem, kan ik Rusland daar gewoon later overheen zetten: wat het laatst in de html staat, 'wint' bij hoveren van wat eerder in de html staat. Door Rusland in de html dus onder Litouwen te zetten, kan ik twee rechthoeken bij Litouwen uitsparen. Voor de hele landkaart scheelt dat meer dan de helft van de rechthoeken, en dus meer dan de helft van de html en css.
-
Italië bijvoorbeeld wordt afgedekt door zes rechthoeken. Dat betekent dat in de html zes keer dezelfde code moet staan. (Alleen de css verschilt, want daarin staat op welke plaats de voor hoveren gevoelige rechthoek precies moet staan, maar de pop-ups enzovoort zijn hetzelfde, dus de html is ook hetzelfde.)
Als je niet via hoveren, maar op 'n andere manier - bijvoorbeeld met 'n schermlezer - de kaart bekijkt, zou je dus zes keer dezelfde code horen of zien. Daarom heb ik bij Italië (en andere soortgelijke landen) alleen de eerste keer de code op de juiste plaats gezet, en de andere vijf keer helemaal onderaan. Ook tekstbrowsers en dergelijke zien nu maar één keer de code voor Italië, en pas helemaal onderaan, na alle andere links, de andere vijf keer. Voordat je bij deze dubbele landen bent aangekomen heb je dus alle landen al één keer gehad.
Zie voor een aanvulling op deze alinea Wijzigingen 10 december 2009.
-
De combinatie van beide bovenstaande methodes leverde 'n ander probleem op. Bijvoorbeeld in Italië komen het kleine Vaticaanstad en San Marino voor. Dat zijn heel kleine vierkantjes, die geheel binnen Italië vallen. Als ik die in de html dus na Italië zet, komen ze keurig boven Italië te staan, want latere code in de html 'wint' bij hoveren van eerdere code.
Maar vijf van de zes rechthoeken die bij Italië horen staan helemaal onderaan. En juist daarbinnen vallen Vaticaanstad en San Marino. Zou ik die dus onder Italië zetten, dan zou je dus toch eerst door in totaal zes keer Italië (en andere 'dubbele' landen) heen moeten om eindelijk bij Vaticaanstad uit te komen.
Dit heb ik opgelost door Vaticaanstad, San Marino en soortgelijke gevallen gewoon op de normale plaats in de html te zetten, en ze 'n hogere z-index te geven waardoor ze toch 'winnen' van de latere code die bij Italië hoort. Zou ik ze geen z-index geven, dan zouden ze helemaal worden afgedekt door de grotere rechthoeken die bij Italië horen.
-
Dan is er ook nog 'n groep mensen die niet de muis gebruikt, maar met behulp van de Tab-toets (of op 'n soortgelijke manier) van link naar link gaat.
Het zorgen voor 'n logische volgorde is niet zo moeilijk, daar gebruik ik tabindex voor. Maar je kunt niet goed zien bij welke link je bent, omdat elke browser dat op 'n andere manier aan blijkt te geven. Het normale kadertje dat de meeste browsers laten zien rondom 'n actieve link of 'n link met focus valt totaal verschillend uit, alleen Safari laat het op 'n bruikbare manier zien: duidelijk en op de goede plaats. Internet Explorer 6, 7 en 8 en Google Chrome tonen het kader wel op de goede plaats, maar het is nauwelijks zichtbaar tegen de veelkleurige achtergrond. Dit hoeven geen fouten van de browsers te zijn, je kunt in dit geval 'n behoorlijke discussie openen over wat eigenlijk de buitenkant van de link is, en wat dus omkaderd moet worden. En aan 'n veelkleurige achtergrond kan 'n browser natuurlijk ook niets doen.
Je kunt
:focus
en:active
(de laatste voor Internet Explorer 6 en 7, die ten onrechte actief met focus verwarren) toevoegen aan de css, dan openen land en extra informatie ook bij gebruik van de Tab-toets. En daar is ook niks op tegen, maar in dit geval vond ik het leuker het op 'n andere manier te doen.Bij gebruik van de Tab-toets geeft een blauw sterretje aan van welk land de link focus heeft (bij Internet Explorer 6 en 7: actief is). Dat sterretje is gewoon 'n kleine afbeelding, die als achtergrond-afbeelding in het midden van de link wordt neergezet. Alleen bij Servië-Montenegro komt dat verkeerd uit en is 'n kleine correctie van de plaats van de ster nodig. (Da's trouwens aardig symbolisch. Precies de twee landen die ten onrechte als één land staan aangegeven in dit voorbeeld...)
In combinatie met de statusbalk, waarin de naam van de pagina staat waar de link naartoe linkt, maakt dit sterretje duidelijk in welk land je staat, en naar welke pagina je dus toegaat bij 'n Enter of 'n klik. Hiervoor zijn natuurlijk wel duidelijke namen van de pagina's nodig, 'n naam als A175G.html is toch 'n ietsepietsie minder duidelijk dan frankrijk.html. (In Safari staat die naam niet in de statusbalk.)
Door met al deze dingen rekening te houden is de volgorde van de links ogenschijnlijk nogal onlogisch geworden. Dat is dus niet zo: de volgorde wordt bepaald door wat hierboven staat.
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
Dit deel van de uitleg is pas later toegevoegd. Deze toevoeging dwingt gelijk ook om nog 'ns kritisch te kijken naar hoe ik dit tot nu toe heb gedaan.
Als ik dit voorbeeld nu zou maken, zou ik ook :focus
en :active
gebruiken. Mede omdat ik inmiddels heb gezien dat Safari de naam van de pagina onder de link niet laat zien in de statusbalk. Dat heb ik dus in eerste instantie gemist, waardoor ik nu levenslang gebukt ga onder diepe schuldgevoelens.
Ik laat het zoals het is, omdat het relatief makkelijk is om zelf :focus
en :active
toe te voegen en eventueel het sterretje te verwijderen. Bovendien vind ik het sterretje wel grappig, en het gaat uiteindelijk om 'n voorbeeld, niet om iets wat je zonder enige wijziging daadwerkelijk moet gaan gebruiken.
Bij Dan is er ook nog 'n groep mensen... staat nog wat meer over sterretje, :hover
, :focus
en :active
.
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. Anders dan bij de meeste voorbeelden is de code van het gedownloade voorbeeld nogal afwijkend van het voorbeeld op de site. De twee grote witte navigatieknoppen hadden nogal 'n forse ruzie met de rest van de pagina en moesten hardhandig op hun plaats worden gezet. Omdat die navigatieknoppen niet in de download zitten, zijn de aanpassingen ervoor dus ook niet nodig.
In het voorbeeld op de site worden de hotspots zichtbaar als je de cursor links van de kaart van Europa plaatst. Ook dat is weggelaten uit de download, dus ook de code daarvoor ontbreekt.
Als je dit lastig vindt, kun je bovenaan de pagina de hele handel downloaden. In de download zit 'n voorbeeld dat wel naadloos aansluit op de uitleg in de download.
<!DOCTYPE html>
<html 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.html.
Gebruik het volledige doctype, inclusief de eventuele url, anders werkt het niet goed.
Het hier gebruikte doctype is dat van html 5. Dit kan al veilig worden gebruikt.
<charset="utf-8">
Zorgt dat de browser letters met accenten en dergelijke goed kan weergeven.
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 (ä
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" />
Deze regel 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).
Deze regel 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.
<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 dat 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 p {
margin-left: 16px;
height: 120px;
text-align: center;
}
body
margin: 0; border: 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.
color: black;
Hoewel dit de standaardkleur is, geef ik de kleur toch op. Hieronder geef ik een achtergrondkleur op. Sommige mensen hebben zelf de kleur en/of achtergrondkleur veranderd, bijvoorbeeld omdat ze slecht kleuren kunnen onderscheiden. Als ik nu de achtergrondkleur verander, maar niet de tekstkleur, loop ik het risico dat tekstkleur en achtergrondkleur te veel op elkaar gaan lijken.
Door beide op te geven, weet ik redelijk zeker dat achtergrond- en tekstkleur genoeg van elkaar blijven verschillen. Als de gebruiker !important
heeft gebruikt, is er nog niets aan de hand, want dan veranderen achtergrond- en tekstkleur geen van beide.
background: #ff9;
Kleurtje aan de achtergrond geven.
div#wrapper
De div met id="wrapper": de div waarbinnen de hele handel staat, behalve de losse tekst rechts van de landkaart van Europa.
position: relative;
Om te kunnen positioneren ten opzichte van deze div, moet deze div zelf 'n positie hebben, zelfs als ik daar verder niets invul. Nu kan ik de pop-ups positioneren ten opzichte van deze div. Ook kan ik nu z-index gebruiken, dat kan alleen bij 'n element dat 'n positie heeft.
z-index: 5;
In de html komt de tekst die naast de kaart van Europa staat helemaal onderaan. Omdat die tekst als laatste in de html staat, zou die altijd zichtbaar blijven, ook door 'n pop-up heen. Door deze div 'n hogere z-index te geven dan die tekst voorkom ik dat.
margin: 10px;
Kleine afstand tussen inhoud van de div en venster van de browser.
a
Alle links.
position: absolute;
Elke link moet 'n stukje van de kaart beslaan. Daarvoor moet ik ze op de juiste plaats kunnen positioneren. Het eerste ouder-element met 'n positie is div#wrapper
, dus er wordt gepositioneerd ten opzichte van die div.
Van zichzelf is 'n <a> 'n inline-element. Door het absoluut te positioneren verandert het in 'n blok-element en kan ik attributen als hoogte en breedte gebruiken.
top: 0;
De bovenste rij links, die de bovenste landen moeten bestrijken, staan helemaal bovenaan. Door dit hier op te geven, hoef ik bij de afzonderlijke links geen top
op te geven. Bij links die lager komen te staan moet ik later gewoon alsnog 'n andere top
opgeven, maar dit spaart toch 'n aantal keren dit attribuut uit.
text-decoration: none; color: black;
De spans met de naam van het land en de extra informatie staan binnen deze link. Die zouden dus onderstreept worden, zoals gebruikelijk is bij 'n link. Maar dat wil ik hier niet. En ik wil ook niet de afwijkende kleur die bij 'n link hoort.
background: url(046-pics/space-1x1.gif);
Dit is een heel kleine doorzichtige afbeelding. Zonder deze achtergrond-afbeelding werkt hoveren niet in Opera en Internet Explorer 6, 7 en 8.
(Opmerking 12 december 2010: inmiddels heeft Opera dit niet meer nodig.)
a span.img
De spans met class="img" die binnen 'n link liggen. Dit zijn de spans die de achtergrond-afbeelding met de landkaart van het betreffende land bevatten. Tevens zitten hier nog twee 'sub-'spans binnen: eentje met de naam van het land, en eentje met extra informatie zoals de vlag en de naam van de hoofdstad.
position: absolute;
Om de span op de juiste plaats neer te kunnen zetten.
top: -1400px;
De spans ver boven het scherm parkeren.
De sub-spans met de naam van het land en met de extra-informatie bevatten gewone normale tekst en 'n afbeelding. Die zouden gewoon zichtbaar zijn. Daarom parkeer ik de hele handel ver boven het scherm: onzichtbaar. Bij hoveren zet ik het deel wat zichtbaar moet worden dan gewoon terug op het scherm.
Er is nog 'n andere reden om buiten het scherm te parkeren. In sommige browsers krijg je vreemde problemen als 'n ogenschijnlijk overbodige scrollbar. Die kan verschijnen als je over de - onzichtbare - span hovert. Maar als hij buiten 't scherm staat, kun je er gewoon niet over hoveren: opgelost.
border: black solid 1px;
Randje rondom de kaart van het land.
a span.img-header
De spans met class="img-header" die binnen 'n link liggen. Dit zijn de spans waarbinnen de naam van het land staat, die boven de landkaart wordt getoond.
display: block;
Van zichzelf is 'n span een inline-element. Door er 'n blok-element van te maken kan ik attributen als hoogte gebruiken.
height: 34px;
Hoogte. In dit geval neem ik een vaste hoogte, omdat ik niet wil dat bij 'n andere lettergrootte de witte achtergrond van de kop over de landkaart komt te staan.
color: black;
Tekstkleur zwart.
Hoewel dit de standaardkleur is, geef ik de kleur toch op. Hieronder geef ik een achtergrondkleur op. Sommige mensen hebben zelf de kleur en/of achtergrondkleur veranderd, bijvoorbeeld omdat ze slecht kleuren kunnen onderscheiden. Als ik nu de achtergrondkleur verander, maar niet de tekstkleur, loop ik het risico dat tekstkleur en achtergrondkleur te veel op elkaar gaan lijken.
Door beide op te geven, weet ik redelijk zeker dat achtergrond- en tekstkleur genoeg van elkaar blijven verschillen. Als de gebruiker !important
heeft gebruikt, is er nog niets aan de hand, want dan veranderen achtergrond- en tekstkleur geen van beide.
Ik heb dit ook al bij de body opgegeven, maar sommige mensen hebben bij álle elementen de kleuren veranderd. Het heeft immers weinig zin als ze dat alleen bij de body doen, terwijl de sitebouwer de kleuren ook bij bijvoorbeeld de paragrafen heeft aangepast.
background: white;
Witte achtergrond.
text-align: center;
Naam van het land centreren.
font-size: 20pt;
Ik gebruik hier geen em, zoals meestal, omdat in ieder geval in Internet Explorer nu de lettergrootte niet kan worden veranderd, en deze lettergrootte is groot zat. In andere browsers kan de lettergrootte nog steeds worden veranderd. Bij 'n zeer grote lettergrootte komt daardoor de naam van het land over de landkaart te staan. Een van de zeer weinige keren dat de beperkingen van Internet Explorer 'n voordeel blijken te hebben.
span.venster
De spans met class="venster". Dit zijn de spans waar de pop-up met de extra informatie, zoals vlag en hoofdstad, in staat.
position: absolute;
Om de pop-up op de goede plaats te kunnen zetten. Het eerste ouder-element met 'n positie is span.img
, dus er wordt gepositioneerd ten opzichte van deze span.
Door het gebruik van 'n absolute positie verandert de span, die van zichzelf 'n inline-element is, in 'n blok-element, waardoor ik ook attributen als breedte kan gebruiken.
Deze span staat binnen span.img
. Ik had hem waarschijnlijk ook helemaal zelfstandig kunnen neerzetten, rechtstreeks als kind van div#wrapper
. Maar dit is afkomstig uit een eerdere constructie en het werkt goed, dus laat ik het lekker zo.
left: -308px; top: 350px;
Omdat span.img
steeds op precies dezelfde plaats naast de kaart van Europa wordt neergezet, kan ik span.venster
steeds dezelfde afstand naar links worden verplaatst. Hij komt dan op precies dezelfde breedte als de kaart van Europa te staan.
Voor de verticale positie geldt hetzelfde: met 350 px komt de extra informatie onder de kaart van Europa te staan.
width: 292px;
Breedte van de span en dus van de pop-up met informatie.
padding: 3px;
Kleine afstand tussen rand van de pop-up en inhoud.
border: black solid 1px;
Randje om de pop-up.
color: black;
Tekstkleur zwart.
Hoewel dit de standaardkleur is, geef ik de kleur toch op. Hieronder geef ik een achtergrondkleur op. Sommige mensen hebben zelf de kleur en/of achtergrondkleur veranderd, bijvoorbeeld omdat ze slecht kleuren kunnen onderscheiden. Als ik nu de achtergrondkleur verander, maar niet de tekstkleur, loop ik het risico dat tekstkleur en achtergrondkleur te veel op elkaar gaan lijken.
Door beide op te geven, weet ik redelijk zeker dat achtergrond- en tekstkleur genoeg van elkaar blijven verschillen. Als de gebruiker !important
heeft gebruikt, is er nog niets aan de hand, want dan veranderen achtergrond- en tekstkleur geen van beide.
Ik heb dit ook al bij de body opgegeven, maar sommige mensen hebben bij álle elementen de kleuren veranderd. Het heeft immers weinig zin als ze dat alleen bij de body doen, terwijl de sitebouwer de kleuren ook bij bijvoorbeeld de paragrafen heeft aangepast.
background: #bbb;
Achtergrondkleur van de span en dus van de pop-up met informatie.
.links
De elementen met class="links".
Omdat ik geen aparte kaarten van Servië en Montenegro kon vinden, hebben die een gemeenschappelijke kaart. Maar de info over beide landen is wel verschillend. Om dat op te lossen zet ik de info van Servië links en die van Montenegro rechts. Daarvoor dienen de elementen met deze class.
float: left;
Zo hoog mogelijk neerzetten en dan zoveel mogelijk naar links. Aan de linkerkant staat de info over Servië. De elementen met de info over Montenegro worden hieronder naar rechts gefloat.
clear: both;
De info over Servië (die links staat) bestaat uit meerdere regels. Als ik ze niet zou clearen, zou er net zoveel op dezelfde regel komen te staan als daarop past. Nu wordt elk element dat ik float op een nieuwe regel neergezet.
.rechts
Het zusje van .links
hierboven: de elementen met class="rechts".
float: right;
In de elementen met deze class staat de info over Montenegro. Hierboven worden de elementen met de info over Servië naar links gefloat. Nu staat Servië dus links en Montenegro rechts.
Clearen zoals hierboven bij .links
mag niet, want deze info over Montenegro moet juist op dezelfde regel komen te staan als de gelijksoortige info over Servië.
.onderschrift
Elementen met class="onderschrift". In dit voorbeeld alleen de kleine uitleg onder de info over Servië en Montenegro.
clear: both;
Op 'n nieuwe regel zetten. Zonder deze opdracht zou de inhoud hiervan zoveel mogelijk tussen de gefloate elementen .links
en .rechts
van hierboven komen te staan.
display: block;
Van zichzelf is 'n span (.onderschrift
is 'n span) 'n inline-element. Door het te veranderen in een blok-element kan ik attributen zoals clear
gebruiken.
border-top: black dashed 1px;
Stippellijntje aan de bovenkant.
font-size: 0.7em;
Kleinere letter dan de rest. Ik gebruik em als eenheid, zodat ook gebruikers van Internet Explorer de lettergrootte kunnen veranderen.
a:hover
Als ik over 'n link hover. In dit voorbeeld bestrijkt elke link 'n stukje van de kaart van Europa.
cursor: pointer;
Zonder deze opdracht werkt het hoveren niet in Internet Explorer 6, en het zit de andere browsers niet dwars, dus...
a:active, a:focus
Als de link actief is of focus heeft. Actief is als je de muis ingedrukt houdt boven de link, focus als..., tja, als de link focus heeft: als je op Enter drukt, wordt de link gevolgd. Meestal aangegeven door 'n kadertje rondom de link. Ik moet beide gebruiken omdat Internet Explorer 6 en 7foutief active
gebruiken alsof het focus
is.
Dit is 'n extra voorziening voor mensen die met de Tab-toets (of op 'n soortgelijke manier via het toetsenbord) van link naar link gaan. Het normale kadertje rondom de link dat aangeeft waar je bent, werkt hier niet. Het wordt door alle browsers op 'n andere manier weergegeven, alleen Safari geeft het op 'n bruikbare manier weer. Kennelijk is door de gebruikte code onduidelijk voor de browser waar de grens van de link nou precies is. Maar daardoor komt het kadertje dus meestal volkomen foutief te staan. Dus moet ik zelf iets maken om aan te geven welke link focus heeft/actief is.
background: url(046-pics/ster.gif) no-repeat 50% 50%;
Kleine blauwe ster als achtergrondplaatje weergeven. Deze niet herhalen en in het midden van de link neerzetten. Dat kan omdat de links zijn veranderd in blok-elementen en hoogte en breedte hebben. Niet herhalen omdat 'n grote link anders verandert in 'n prachtige hemel vol sterren.
Toevallig komt het vrijwel overal goed uit als de ster in het midden staat. Bij de heel kleine links, zoals Vaticaanstad, is niet de hele ster zichtbaar, maar volgens mij kan het zo wel. In één geval staat de ster niet goed, dat corrigeer ik hieronder.
Los van de ster staat in de statusbalk naar welke pagina je gaat. Als je daar duidelijke namen voor gebruikt, zoals frankrijk.html en niet abracadabra als xg78eee.html, zouden ster en statusbalk 'n redelijke indicatie moeten zijn wat er gaat gebeuren als je de link volgt.
Je kunt ook :focus
en :active
toevoegen aan de :hover
bij alle links, dan worden gewoon de landkaart en de extra info zichtbaar. Maar ik vond dit voor de afwisseling leuker.
Ook zou je, met iets meer moeite, bij elke link de naam van het land tevoorschijn kunnen laten komen als 'n soort tooltip.
a#ser-mon:active, a#ser-mon:focus
Als de link met id="ser-mon" actief is of focus heeft.
Het verhaal hier is precies hetzelfde als bij a:active, a:focus, maar dit geldt alleen voor de link bij Servië-Montenegro.
background: url(046-pics/ster.gif) no-repeat 50% 0;
De ster staat bij deze link niet op de goede plaats, dus verander ik de tweede 50% van hierboven in 0.
a#denemarken
De link met id="denemarken". Je zult 't niet geloven, maar dit is de link die hoort bij Denemarken! Weer 'n prachtig voorbeeld van mijn geniale gave om creatieve namen te bedenken!
De algemene instellingen voor alle links, waaronder deze, zijn hierboven al opgegeven bij a. Deze gelden dus ook voor deze link.
left: 67px;
Dit is ongeveer waar Denemarken begint. Ik hoef geen top
op te geven, want die heb ik voor de bovenste rij al bij de algemene instellingen opgegeven: 0.
width: 45px; height: 45px;
Dit bestrijkt ruwweg Denemarken op de kaart van Europa. Ik heb nu dus 'n blok boven Denemarken waarbij ik bij hoveren iets kan laten gebeuren. (Oeps, als dit wordt gelezen door 'n AIVD'er die niets van css en html weet, heb ik 'n probleem...)
a#denemarken:hover span.img
Als ik hover boven de link met id="denemarken", doe dan het volgende met de span met id="img". Dat is de span waarbinnen de kaart van Denemarken, de naam die boven de kaart staat en de extra info zoals vlag en hoofdstad staan.
De naam boven de kaart staat in 'n eigen span binnen span.img
, die wordt verder afgehandeld bij a span.img-header. Hetzelfde geldt voor de extra info, zie daarvoor bij span.venster. Hier wordt alleen de kaart van Denemarken afgehandeld.
left: 240px;
De span, en dus de achtergrond-afbeelding met de kaart van Denemarken, naast de kaart van Europa zetten. Het eerste ouder-element met 'n positie is div#wrapper
, dus er wordt gepositioneerd ten opzichte van die div.
top: 0;
Deze hele span was bij de algemene instellingen 1400 px boven het scherm geparkeerd om problemen te voorkomen. Nu moet hij op het scherm worden gezet, anders is hij niet zichtbaar.
width: 715px; height: 575px;
Breedte en hoogte zijn afhankelijk van de maat van de betreffende kaart.
background: url(046-pics/denemarken.jpg);
De kaart van Denemarken als achtergrond-afbeelding weergeven. Omdat het 'n achtergrond-afbeelding is, wordt deze pas geladen als hij wordt weergegeven. Met in totaal meer dan 2,5 MB aan kaarten is dat niet onbelangrijk, anders zou alles worden geladen als de pagina wordt geopend, ongeacht of je het bekijkt of niet.
a#zweden
{left: 112px; width: 50px; height: 40px;}
a#zweden:hover span.img
{left: 195px; top: 0; width: 448px; height: 600px; background: url(046-pics/zweden.jpg) 0 40px;}
a#wit-rusland
{left: 238px; width: 65px; height: 82px;}
a#wit-rusland:hover span.img
{left: 69px; top: 0; width: 468px; height: 590px; background: url(046-pics/wit-rusland.jpg) 0 35px;}
a#litouwen
{left: 205px; width: 60px; height: 38px;}
a#litouwen:hover span.img
{left: 102px; top: 0; width: 508px; height: 597px; background: url(046-pics/litouwen.jpg) 0 35px;}
Allemaal precies hetzelfde als a#denemarken en a#denemarken:hover span.img met alleen andere maten bij left
, breedte en hoogte, en 'n andere achtergrond-afbeelding. Ook moet bij de achtergrond-afbeelding de positie wat worden aangepast af en toe, omdat niet alle kaarten dezelfde rand rondom hebben.
a#rusland
{top: 31px; left: 200px; width: 30px; height: 13px; z-index: 40;}
Grotendeels hetzelfde als a#denemarken. Ik behandel hier alleen de verschillen. Dit hoort bij het kleine gele land rechtsboven op de kaart van Europa. (En voor je denkt dat jij of ik gek bent: Rusland heeft daar gewoon echt 'n klein stuk land in bezit. Dat was in ieder geval voor mij nieuw, ik had 't eerst per ongeluk Estland genoemd...)
top: 31px;
Omdat dit land lager ligt, moet de link ook lager op de kaart komen te staan. Alleen bij de bovenste rij landen is geen top
nodig, omdat bij de algemene instellingen voor de links 0 is opgegeven. Maar 0 is hier niet meer de juiste afstand tot de bovenkant.
z-index: 40;
Omdat de code voor Rusland na de code voor Litouwen komt in de html, 'wint' Rusland van Litouwen bij hoveren. Maar nog later in de html komt de code voor Polen. (Waarom die volgorde zo is staat bij Tijdens het maken van dit voorbeeld..., hier volsta ik met te zeggen dat er redenen zijn voor die volgorde.)
Dat betekent dat de link van Polen bij hoveren 'wint' van Rusland ('t lijkt verdorie wel of ik hier de Derde Wereldoorlog aan 't verslaan ben...). Daardoor wordt de link van Rusland veel te klein. Door er 'n hogere z-index aan te geven, 'wint' deze link toch weer van Polen en blijft hij groot genoeg om (vrijwel) het hele stuk van Rusland te bedekken.
a#rusland:hover span.img
{left: 107px; top: -31px; width: 634px; height: 357px; background: url(046-pics/rusland.gif) 0 35px;}
Uitleg zie bij a#denemarken:hover span.img.
a#belgie
{top: 110px; left: 0; width: 40px; height: 17px;}
a#belgie:hover span.img
{left: 307px; top: -110px; width: 512px; height: 600px; background: url(046-pics/belgie.jpg) 0 35px;}
tot en met
a#macedonie
{top: 272px; left: 242px; width: 37px; height: 25px;}
a#macedonie:hover span.img
{left: 65px; top: -272px; width: 495px; height: 599px; background: url(046-pics/macedonie.jpg) 0 35px;}
Uitleg zie bij a#denemarken en a#denemarken:hover span.img, met twee aanvullingen:
de uitleg van top
en - voor zover dat voorkomt - z-index
in de eerste regel van de twee bij elkaar horende regels staat bij a#rusland.
a#belgie-2
{top: 125px; left: 20px; width: 24px; height: 15px;}
a#belgie-2:hover span.img
{left: 287px; top: -125px; width: 512px; height: 600px; background: url(046-pics/belgie.jpg) 0 35px;}
tot en met
a#ser-mon-2
{top: 223px; left: 231px; width: 36px; height: 48px;}
a#ser-mon-2:hover span.img
{left: 76px; top: -223px; width: 444px; height: 607px; background: url(046-pics/ser-mon.jpg) 0 35px;}
Dit zijn de links voor de landen die aan één link niet genoeg hebben, omdat ze zo onregelmatig zijn gevormd. Met css kun je alleen maar rechthoeken en vierkanten maken, dus nogal wat landen die onregelmatig gevormd zijn hebben meerdere links nodig.
Waarom ik deze allemaal onderaan in de html heb gezet kun je lezen bij Tijdens het maken van dit voorbeeld..., hier volsta ik met te zeggen dat daar redenen voor zijn.
Afgezien van dat het hier om 'n tweede link gaat, is verder alles precies hetzelfde als bij a#belgie.
div#tekst
De div met id="tekst". De div waar de tekst in staat die rechts van de kaart van Europa staat.
position: absolute;
Om de tekst neer te kunnen zetten en z-index te kunnen gebruiken. Omdat er geen ouder-element met 'n positie is, wordt gepositioneerd ten opzichte van het venster van de browser.
top: 10px;
Bovenaan het venster van de browser zetten. Zonder deze opdracht wordt deze div gewoon onder div#wrapper
neergezet. Omdat de inhoud van deze div met 'n <p> begint, die van zichzelf ook 'n marge aan boven- en onderkant heeft, geeft dit genoeg ruimte tussen de bovenkant van het venster van de browser en de tekst binnen deze div.
left: 330px;
Rechts van de kaart van Europa neerzetten.
width: 300px;
Door de div met de tekst wat smal te maken valt hij weg onder de pop-up met de landkaart, wat ik wat netter vind.
z-index: 1;
div#wrapper
, de div met de kaarten en de extra info, heeft 'n z-index van 5. Daardoor komen de kaarten bij hoveren boven deze div met tekst te staan. Zonder dit attribuut zou de tekst gewoon door de kaart heen zichtbaar zijn, omdat deze div in de html na div#wrapper
staat en dus zou 'winnen' bij hoveren.
De code aanpassen aan je eigen ontwerp
- Als je dit voorbeeld gaat aanpassen voor je eigen site, houdt het dan in eerste instantie zo eenvoudig mogelijk. Ga vooral geen details invullen.
Gebruik vooral geen FrontPage, Publisher of Word (alle drie van Microsoft). Deze programma's maken niet-standaard code die alleen goed te bekijken is in Internet Explorer. In alle andere browsers zie je grotendeels bagger, áls je al iets ziet.
Publisher en Word zijn niet bedoeld om websites mee te maken. FrontPage is zwaar verouderd en wordt niet meer onderhouden door Microsoft. Als je beslist iets van Microsoft wilt gebruiken, schaf dan (voor honderden euro's) een nieuwer programma aan, dat zich wel aan de standaarden houdt.
Het allerbeste is om gewoon zelf html, css, enzovoort te leren, omdat zelfs het allerbeste programma het nog steeds zwaar verliest van 'n op de juiste manier met de hand gemaakte pagina.
- Het beste kun je 'n site maken in Firefox. Als je 'n site maakt in Firefox, Opera, Safari of Google Chrome, is er 'n hele grote kans dat hij in alle browsers werkt. Als je in Internet Explorer begint, is dat niet zo. Dat heeft te maken met historische oorzaken (als je geïnteresseerd bent: zoek maar naar 'boxmodel' en 'probleem' of zo op internet, of naar 'quirks mode'). Ik geef de voorkeur aan Firefox, omdat er zoveel extensies (uitbreidingen) voor bestaan.
Het allereerste dat je moet invoeren, is het doctype, vóór welke andere code dan ook. Een lay-out met een missend of onvolledig doctype ziet er totaal anders uit dan een lay-out met een geldig doctype. Wát er anders is, verschilt ook nog 'ns tussen de diverse browsers. Als je klaar bent en dan nog 'ns 'n doctype gaat invoeren, weet je vrijwel zeker dat je van voren af aan kunt beginnen met de lay-out.
Geldige doctypes vind je op www.w3.org/QA/2002/04/valid-dtd-list.html.
Gebruik het volledige doctype, inclusief de url, anders werkt het niet goed.
Gebruik een 'strict' doctype of het doctype voor html 5. Deze zijn bedoeld voor nieuwe sites. Het transitional doctype is bedoeld voor al bestaande sites, niet voor nieuwe. Het transitional doctype staat talloze tags toe, die in html 5 zijn verboden. Deze tags worden al zo'n tien jaar afgeraden. Het transitional doctype is echt alleen bedoeld om de puinhoop van vroeger, toen niet volgens standaarden werd gewerkt, enigszins te herstellen.
Het strict doctype staat verouderde tags niet toe. Daardoor kan met 'n strict doctype, of het nu html of xhtml is, probleemloos worden overgestapt naar html 5. Met een transitional doctype en het gebruik van afgekeurde tags kun je niet overstappen naar html 5. Je moet dan eerst alle verouderde tags verwijderen, wat echt ontzettend veel werk kan zijn.
- Als tweede voer je de charset in. Het beste kun je utf-8 nemen. Als je later van charset verandert, loop je 'n grote kans dat je alle aparte tekens als letters met accenten weer opnieuw moet gaan invoeren.
- Test vanaf het allereerste begin in zoveel mogelijk verschillende browsers in 'n aantal resoluties (schermgroottes). Onder het kopje Getest in kun je in deze uitleg vinden waar ikzelf op test. Ook van Internet Explorer kun je meerdere versies naast elkaar draaien. Je kunt daarvoor zoeken op internet en op de pagina met links staan onder de kopjes Gereedschap →; Meerdere versies van Internet Explorer draaien en Gereedschap → Weergave testen 'n aantal links die daar ook bij kunnen helpen.
- Voor alle voorbeelden geldt: breng veranderingen stapsgewijs aan. Als je bijvoorbeeld foto's wilt laten weergeven, begin dan alleen met het veranderen van de namen van de foto's, zodat je eigen foto's worden weergegeven. Maakt niet uit als de maten niet kloppen en de teksten fout zijn. Als dat werkt, ga dan bijvoorbeeld de maten aanpassen. Dan de teksten. En controleer steeds of alles nog goed werkt.
Als het om een lay-out of iets dergelijks gaat: zorg eerst dat header, kolommen, footer, menu, en dergelijke staan en bewegen zoals je wilt, en ga dan pas details binnen die blokken invullen. In eerste instantie gebruik je dus bijvoorbeeld 'n leeg blok voor waar uiteindelijk het menu komt te staan.
Als je begint met allerlei details, is er 'n heel grote kans dat die de werking van de blokken gaan verstoren. Bouw eerst het huis, en ga dan pas de kamers inrichten. Als de blokken eenmaal werken zoals je wilt, zul je het gelijk merken als 'n toegevoegd detail als tekst of 'n afbeelding iets gaat storen. Daarvoor moet je natuurlijk wel regelmatig controleren in verschillende browsers of alles nog wel goed werkt.
Je kunt de blokken tijdens het aanpassen opvullen met bijvoorbeeld <br>1<br>2<br>3 enzovoort, tot ze de juiste hoogte hebben. Het is handig om aan het einde even iets toe te voegen als 'laatste', zodat je zeker weet dat er niet drie regels onderaan naar 't virtuele walhalla zijn verhuisd.
Om de breedte te vullen kun je het best 'n kort woord als 'huis' duizend keer of zo herhalen. Ook hier is het handig om aan 't einde (en hier ook aan 't begin) 'n herkenningsteken te maken, zodat je zeker weet dat je de hele tekst ziet.
- Zolang je in grotere dingen zoals 'n lay-out aan 't wijzigen bent, zou ik je aanraden de verschillende delen een achtergrondkleur te geven. Je ziet dan goed waar 'n deel precies staat.
- Als je instellingen verandert in de style, doe er dan maar 1, hooguit 2 tegelijk. Als je er 17 tegelijk verandert moet je niet verbaasd zijn als je niet weet wat er is gebeurd. En als je 't niet meer terug kunt draaien.
- Marges, padding en border worden bij de hoogte en breedte van de inhoud opgeteld. Hier worden vaak fouten mee gemaakt. Als je bijvoorbeeld in een lay-out 'n border toevoegt aan een van de 'hoofdvakken' (header, footer, kolommen), dan wordt deze er dus bij opgeteld. Bij 'n border van 2 px rondom de linkerkolom wordt deze dus plotseling 4 px breder (2 aan beide kanten), en 4 px hoger. Zoiets kan je hele lay-out verstoren, omdat iets net te breed of te hoog wordt. Je moet dan elders iets 4 px kleiner maken. Dat zal vaak zo zijn: als je één maat verandert, zul je vaak ook 'n andere moeten aanpassen.
- In plaats van px kun je ook andere maten gebruiken, met name em. Voordeel van em is dat het door de gebruiker kan worden vergroot en verkleind, ook in Internet Explorer (andere browsers hebben meer mogelijkheden op dit gebied). Nadeel is dat het de lay-out sneller kan verstoren dan bijvoorbeeld px. Dit moet je gewoon van geval tot geval bekijken.
Valideren, valideren, valideren en dan voor 't slapen gaan nog 'ns valideren.
Valiwie???
Valideren is het controleren van je (x)html en css op 'n hele serie fouten. Computers zijn daar vaak veel beter in dan mensen. Als je 300 keer <h2> hebt gebruikt en 299 keer </h2> vindt 'n computer die ene missende </h2> zonder enig probleem. Jij ook wel, maar daarna ben je misschien wel aan vakantie toe.
Je kunt je css en (x)html zowel valideren als 't online staat, als wanneer 't nog in je computer staat.
(x)html kun je valideren op: validator.w3.org
css kun je valideren op: jigsaw.w3.org/css-validator
Valideren kan helpen om gekmakende fouten te vinden. Valid code garandeert ook dat de weergave in verschillende browsers (vrijwel) hetzelfde is. En valid code is over twintig jaar ook nog te bekijken.
Toegankelijkheid en zoekmachines
Eventuele opmerkingen specifiek voor dit voorbeeld staan bij Opmerkingen.
Toegankelijkheid (accessibility in het Engels) is belangrijk voor bijvoorbeeld blinden die een schermlezer 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:
- Gebruik altijd een alt-beschrijving bij een afbeelding. De alt-tekst is wat wordt gebruikt als afbeeldingen niet kunnen worden gezien (dat geldt dus ook voor zoekmachines). Als je iets wilt laten zien als je over de afbeelding hovert, gebruik daar dan het title-attribuut voor, niet de alt-beschrijving.
- Gebruik bij een link een title, waarin je omschrijft waar de link naar toe leidt.
Accesskeys (sneltoetsen) kun je beter niet gebruiken, deze gaven te veel problemen omdat ze vaak dubbelop zijn met sneltoetsen voor de browser of andere al gebruikte sneltoetsen. Bovendien is voor de gebruiker meestal niet duidelijk welke toetsen het zijn.
In de komende html 5 waren ze eerst niet toegestaan, maar inmiddels lijkt het erop dat ze toch worden toegestaan, maar op 'n andere manier dan in html 4.01. Ik ga ze zelf pas weer gebruiken als duidelijk is hoe ze gaan werken, en als ze beter zijn uitgedacht dan in html 4.01 het geval was, want bij een goede toepassing is het op zich een heel goed idee.
- Met behulp van de Tab-toets (of op 'n soortgelijke manier) kun je in de meeste browsers door de links lopen. Elke tab brengt je één link verder, Shift+Tab één link terug. Met behulp van tabindex kun je de volgorde aangeven waarin de Tab-toets werkt. Zonder tabindex wordt de volgorde van de code aangehouden, maar soms is een andere volgorde logischer.
In het verleden werd vaak aangeraden de volgorde van de code aan te passen. Een menu bijvoorbeeld kon in de html onderaan worden gezet, terwijl het op het scherm met behulp van css bovenaan werd gezet. Inmiddels zijn schermlezers en dergelijke zo verbeterd, dat dit niet meer wordt aangeraden. De volgorde in de html kan tegenwoordig beter hetzelfde zijn als op het scherm, omdat het anders juist verwarrend kan werken.
Een andere mogelijkheid is een zogenaamde skip-link: een link die je buiten het scherm parkeert met behulp van css, zodat hij normaal genomen niet te zien is. Zo'n link is wel zichtbaar te maken in speciale programma's zoals schermlezers. Die link staat boven het menu en linkt naar de inhoud van de pagina, zodat mensen met één klik het hele menu kunnen passeren.
Van oorsprong was html een taal om wetenschappelijke documenten weer te geven, pas later is hij gebruikt voor lay-out. Maar daar is hij dus eigenlijk nooit voor bedoeld geweest. Het gebruiken van html voor lay-out leidt tot enorme problemen voor gehandicapten en tot een lage plaats in zoekmachines.
De html hoort alleen inhoud te bevatten, lay-out doe je met behulp van css. Die css moet in een extern stylesheet staan of, als hij alleen voor één bepaalde pagina van toepassing is, in de head van die pagina. Zoekmachines zijn ook niet dol op een oerwoud van inline-stijlen (dat zijn stijlen in de tag zelf:
<div style="...">
.)Breng een logische structuur aan in je document. Gebruik een <h1> voor de belangrijkste kop, een <h2> voor een subkop, enzovoort. Schermlezers en dergelijke kunnen van kopregel naar kopregel springen. En een zoekmachine gaat ervan uit dat <h1> belangrijke tekst bevat.
Dit geldt voor al dit soort structuurbepalende tags.
Als een <h1> te grote letters geeft, maak daar dan met behulp van je css 'n kleinere letter van, maar blijf die <h1> gewoon gebruiken. Op dezelfde manier kun je al dit soort dingen oplossen.
- Een table is fantastisch, maar alleen als die wordt gebruikt om een echte tabel weer te geven, niet als hij voor opmaak wordt misbruikt. In het verleden is dat op grote schaal gebeurd bij gebrek aan andere mogelijkheden. Een tabel is, als je niet heel erg goed oplet, volstrekt ontoegankelijk voor gehandicapten en zoekmachines. Het lezen van een tabel is ongeveer te vergelijken met het lezen van een krant van links naar rechts: niet per kolom, maar per regel. Dat gaat dus alleen maar goed bij een echte tabel zoals een spreadsheet. In alle andere gevallen garandeert 'n tabel 'n lagere plaats in een zoekmachine.
Frames zijn een volstrekt verouderde techniek, die heel veel nadelen met zich meebrengt. iframes hebben voor een deel dezelfde nadelen.
Als je 'n stuk code vaak wilt gebruiken, zoals 'n menu dat op elke pagina hetzelfde is, include dat dan met PHP of SSI. Dan ziet iedereen (ook 'n zoekmachines dus!) alles als één pagina in plaats van als los zand aan elkaar hangende teksten.
- Geef de taal van het document aan, en bij woorden en dergelijke die afwijken van die taal de afwijkende taal met behulp van
lang=".."
. Ik doe dat op mijn eigen site maar af en toe, omdat de tekst (en vooral de code) een mengsel is van Engels, Nederlands en eigengemaakte namen. Dit soort teksten is gewoon niet goed in te delen in een taal. - Gebruik de tag
<abbr>
bij afkortingen. Doe dat de eerste keer op een pagina samen met de title-eigenschap:<abbr title="en dergelijke">e.d.</abbr>
. Daarna kun je op dezelfde pagina volstaan met<abbr>e.d.</abbr>
. Doe je dit niet, dan is er 'n grote kans dat 'n schermlezer en dergelijke uit gaat spreken als Ed, en 'n zoekmachine kan er ook geen chocola van maken. -
De spider van 'n zoekmachine, schermlezers, en dergelijke kunnen geen plaatjes 'lezen'. Het is soms verbazingwekkend om te zien hoe veel, of eigenlijk: hoe weinig tekst er overblijft op een pagina als de plaatjes worden weggehaald. Hetzelfde geldt voor die fantastisch mooie flash-pagina's, als daarbij geen voorzieningen voor dit soort programma's zijn aangebracht.
Op Linux kun je met Lynx kijken, hoe je pagina eruitziet zonder plaatjes en dergelijke, als echt alleen de tekst overblijft. Een installatie-programma voor Lynx op Windows is te vinden op invisible-island.net/lynx.
In Windows kun je ook het gratis programma WebbIE installeren. WebbIE laat de pagina zien, zoals een schermlezer en dergelijke hem zien. WebbIE is te downloaden vanaf www.webbie.org.uk.
Ten slotte kun je je pagina nog online laten controleren op 'n behoorlijk aantal sites. Ik noem er hier enkele. Helaas zijn ze bijna allemaal Engelstalig.
lowvision.support Laat zien hoe een kleurenblinde de site ziet. Engelstalig.
wave.webaim.org Deze laat grafisch zien hoe de toegankelijkheid is. Heel erg duidelijk, maar bij grotere pagina's wordt 't al snel erg chaotisch.
Getest in
Laatst gecontroleerd op 14 november 2011.
(Internet Explorer 6 is voor het laatst gecontroleerd op 10 december 2009. Op deze browser test ik niet meer. Maar omdat de code nauwelijks 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.
Naast deze 'gewone' browsers is ook getest in Lynx, WebbIE, Jaws 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. Jaws is een schermlezer, zoals die door blinden wordt gebruikt. Fangs Screen Reader Emulator is een extensie bij Firefox die de pagina laat zien zoals een schermlezer 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.
Dit voorbeeld is niet getest op geschiktheid voor mobiele apparaten (hier worden geen laptop/notebook/netbook en dergelijke mee bedoeld, want die gedragen zich als een gewone desktopcomputer). Er wordt in veel voorbeelden css en/of html gebruikt, waar niet elk mobiel apparaat mee uit de voeten zal kunnen. En lang niet alles is geschikt voor schermen met een breedte van minder dan 800 px.
Dingen die problemen zouden kunnen opleveren, zijn onder andere een te grote breedte, het gebruik van (te veel) afbeeldingen en/of css en html die niet (volledig) wordt ondersteund, zoals :hover
, float
en position
.
Onder Opmerkingen staat mogelijk nog wat meer over de geschiktheid van dit voorbeeld voor mobiele apparaten.
(Terzijde: de site zelf is zeker niet geschikt voor kleine mobieltjes. Dat gaat ook niet veranderen. Ik kan me namelijk niet voorstellen dat iemand zo masochistisch is 'n uitleg van tientallen schermen op 'n klein mobieltje te gaan lezen. Voor de site zelf is een minimale breedte van 800 px vereist.)
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, enzovoort in wel geteste browsers: graag!)
Wijzigingen
Alleen grotere wijzigingen worden hier vermeld, geen dingen als een link die is geüpdatet.
:
Nieuw opgenomen.
19 februari 2009:
Aantal kleine correcties aangebracht in de uitleg, zoals dat Safari de naam van de pagina onder de link met focus niet weergeeft in de statusbalk.
23 maart 2009:
-
Tekst aangepast aan de nieuw verschenen Internet Explorer 8. De code hoefde niet te worden veranderd.
-
Bij a
span.img
was voor Opera op Linuxwidth: 100%;
nodig, omdat anders maar 'n heel smalle strook van de landkaart werd weergegeven. Dit is inmiddels niet meer nodig.
10 december 2009:
-
Om niet de hele tekst te hoeven herschrijven, zet ik dit stukje van de uitleg maar hier neer. Html 5, de komende versie van html, is inmiddels zover ontwikkeld, dat ik het voor sommige dingen durf te gebruiken. Dat geeft de mogelijkheid om
tabindex="-1"
te gebruiken, wat ervoor zorgt dat een link helemaal niet meer wordt bezocht bij gebruik van de Tab-toets.Sommige landen hebben meer dan één link, omdat ze anders niet goed worden afgedekt. De tweede en eventuele nog hogere link staan helemaal onderaan. Deze hebben nu
tabindex="-1"
gekregen, zodat ze helemaal niet meer worden bezocht bij gebruik van de Tab-toets. Elk land wordt nu dus nog maar één keer bezocht, waarna weer opnieuw wordt begonnen bij het eerste land, dat mettabindex="1"
.Door het gebruik van
tabindex="-1"
is het eigenlijk niet meer nodig om de volgorde van de links in de html aan te passen. (Tweede en latere links die bij hetzelfde land horen staan helemaal onderaan.) Ik kan ze nu immers ook gewoon negeren met behulp vantabindex="-1"
. Maar omdat de code werkt en herschrijven behoorlijk veel werk is, laat ik de volgorde gewoon zoals het is. -
Doctype veranderd naar dat van html 5 vanwege de hierboven genoemde reden. Tags zonder sluittag zoals <br /> veranderd in <br>.
12 december 2010:
- Veel gif-afbeeldingen omgezet naar png, omdat die kleiner zijn.
- Bij a
span.img-header
witte achtergrondkleur gepromoveerd tot essentiële code, omdat je zonder die kleur de zich herhalende achtergrond-afbeeldingen ziet. - Op diverse plaatsen waar een achtergrondkleur wordt gegeven
color: black;
toegevoegd aan de css vanwege toegankelijkheid. De reden hiervan staat op de betreffende plaatsen bij de beschrijving van de code. - Subpagina's van de download unieke titel gegeven, omdat Google begint te mopperen als meer dan één pagina dezelfde paginatitel heeft.
charset
veranderd naar html5.- Waarschuwing over gebruik van doctype voor html5 weggehaald: dit kan inmiddels zonder meer worden gebruikt.
- Google Chrome laat inmiddels de naam van de link in de statusbalk zien. Aangepast in de tekst.
- Hele reeks kleinere wijzigingen in de tekst en zo.
14 november 2011:
Bij Opmerkingen stukje over Page Speed toegevoegd.
13 november 2020:
- Code voor oudere versies van Internet Explorer verwijderd. (Her en der in de tekst zijn wel verwijzingen blijven staan.)
- Waarschuwing toegevoegd dat dit voorbeeld is verouderd.
Bekende problemen
Alle browsers
- Dit voorbeeld wordt niet meer bijgewerkt. Het werkt niet (goed) op touchscreens. Meer details zijn te vinden bij Dit voorbeeld is verouderd.
-
Eigenlijk geen probleem, maar 'n logisch gevolg van de constructie. Als de afbeelding niet in het venster van de browser past, is het heel moeilijk om te scrollen. Zodra je gaat scrollen, zal de cursor over 'n andere plaats hoveren, en zal dus 'n andere afbeelding openen. Het kán trouwens wel, maar dat heeft meer weg van 'n behendigheidstest dan van normaal scrollen. Wel leuk voor de lange winteravond: wie houdt het langst Italië op het scherm...
Omdat het om 'n voorvertoning gaat en je via klikken naar de pagina met de echte informatie kunt gaan, is dit geen echt probleem, want die achterliggende pagina kun je zolang maken als je wilt.
Internet Explorer 6
Op de site worden de hotspots getoond als de cursor links van de landkaart hangt. Dit werkt niet in Internet Explorer 6. In de download zit dit niet, dus dit speelt alleen maar in het voorbeeld op de site zelf.
Inhoud van de download en licenties
De inhoud van deze download kan vrij worden gebruikt, met drie beperkingen:
* Sommige onderdelen die van 'n andere site of zo afkomstig zijn, vallen mogelijk onder een of andere licentie. Dat is hieronder bij het betreffende onderdeel te vinden.
* Je gebruikt het materiaal uit deze download volledig op eigen risico. Het kan prima zijn dat er fouten in de hier verstrekte code en dergelijke zitten. Voor eventuele schade die door gebruik van materiaal uit deze download ontstaat, in welke vorm dan ook, zijn www.css-voorbeelden.nl en medewerkers daarvan op geen enkele manier verantwoordelijk.
* Dit voorbeeld (en de bijbehorende uitleg en dergelijke) wordt regelmatig bijgewerkt. Het is daarom niet toegestaan dit voorbeeld (en de bijbehorende uitleg en dergelijke) op welke manier dan ook te verspreiden, zonder daarbij duidelijk te vermelden dat voorbeeld, uitleg, en dergelijke afkomstig zijn 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.
afbeelding-046-dl.html: de pagina met het voorbeeld.
afbeelding-046.pdf: deze uitleg (aangepast aan de inhoud van de download).
afbeelding-046-inhoud-download-en-licenties.txt: een kopie van de tekst onder dit kopje (Inhoud van de download en licenties).
046-files-dl:
31 hulppagina's, voor elke link één.
046-pics:
europa.jpg: de grote landkaart.
31 kleine landkaarten met 32 bijbehorende vlaggen.
1 ster.
De vlaggen zijn afkomstig van www.cia.gov/the-world-factbook/references/flagsoftheworld en zijn publiek domein.
De landkaarten zijn afkomstig van maps.lib.utexas.edu en zijn publiek domein.
De herkomst van de ster is onduidelijk, maar het lijkt niet erg waarschijnlijk dat iemand die gaat claimen.