Image Maps, de nieuwe manier
Waarom Image Maps
Images maps zijn dan handig als je eens een andere manier van navigatie wenst te maken, en als je het op de nieuwe manier zal doen heb je het voordeel dat deze toegankelijker zal zijn en webstandaarden compatibeler is als de oude manier van Image Maps.
Op de normale manier zal je HTML moeten dwingen elementen op hun plaats te krijgen wat semantisch gezien niet echt goed klinkt, dan nog maar te zwijgen van toegankelijkheid omwille het feit dat er geen ondersteuning geboden wordt voor text-browsers.
De oude manier van Image Maps
<img src="images/doom.jpg" width="512" height="384" border="0"
usemap="#map" />
<map name="map" id="map">
<area shape="rect" coords="0,0,150,150" href="#"
alt="item01" />
<area shape="rect" coords="150,160,250,260" href="#"
alt="item02" />
<area shape="rect" coords="290,280,390,380" href="#"
alt="item03" />
</map>
Op deze manier zal, als CSS om een of andere reden is uitgeschakelt, je niets te zien krijgen.
De nieuwe manier van Image Maps
XHTML code
Daar een navigatie meestal samengesteld wordt uit een <ul> of een <ol>, zullen we daar ook nu niet van afwijken.
<ul id="navigatie">
<li id="blok1"><a href="#" title="Beschrijving link 1">Link 1</a></li>
<li id="blok2"><a href="#" title="Beschrijving link 2">Link 2</a></li>
<li id="blok3"><a href="#" title="Beschrijving link 3">Link 3</a></li>
</ul>
CSS code
Om een Image Map te hebben moet je ook een image hebben natuurlijk, deze plaasten we als achtergrond voor de #navigatie
#navigatie {
position: relative;
width: 512px;
height: 384px;
background: url("doom.jpg");
}
Nu gaan we iets speciaal doen, daar de #navigatie relative is gepositioneerd, gaan we de links absolute positioneren, wat inhoud dat we nu exact kunnen bepalen welke link waar komt te staan.
Meer daarover kan je bij StopDesign lezen.
Alsook gaan we ervoor zorgen dat de tekst van de links niet zichtbaar is door text-indent: -9999px;.
#navigatie a {
text-indent: -9999px;
text-decoration: none;
position: absolute;
border: 1px solid #FFF;
}
Blijft ons eigenlijk alleen nog maar te bepalen waar de links komen te staan spreek: positioneren, alsook te bepalen via :hover wat er moet gebeuren.
#blok1 a {
top: 0;
left: 0;
width: 150px;
height: 150px;
}
#blok2 a {
top: 149px;
left: 150px;
width: 150px;
height: 150px;
}
#blok3 a {
top: 0px;
left: 150px;
width: 150px;
height: 150px;
}
#blok1 a:hover {
background: transparent url("doom.jpg") 0 -390px no-repeat;
}
#blok2 a:hover {
background: transparent url("doom.jpg") -250px -610px no-repeat;
}
#blok3 a:hover {
background: transparent url("doom.jpg") -350px -380px no-repeat;
}
Voorbeeld
Hoe dit allemaal uitziet kan je bekijken op deze pagina.
Gelezen: 2053 | Design, XHTML, CSS







Op Saturday 31 December 2005
Handig. schept mogelijkheden.
Op Saturday 31 December 2005
de codes zijn wel ingewikkeld. Persoonlijk vind ik de oude manier gemakkelijker. Deze manier heeft echter wel meer mogelijkheden
Op Tuesday 20 June 2006
Ik snap eerlijk gezegd die nieuwe code niet echt waar moet je nu alle links naar plaatejs enzo neer zetten??
Op Thursday 22 June 2006
En wat als je vormpje niet rechthoekig is?… Bv: een kaartje met geografische regio’s…
Op Friday 23 June 2006
Alle grafische afbeeldingen worden rechthoekig weergegeven, dat is algemeen geweten. ik bedoel daarmee de plaats die de afbeelding inneemt kan als rechthoekig worden beschouwd, ook al is de afbeelding rond of driehoekig.
Op Tuesday 27 June 2006
Ik los zulke zaken dan ook op met een image-map… zie http://www.kringwinkel.be/adressen.htm
Op Monday 17 July 2006
Slim gedaan, precies wat ik zocht. Onhandig dat 100% image-buttons in CSS nog steeds niet mogelijk zijn z o n d e r tekstuele link… Wellicht in CSS4..?
Bedankt,
Freek
Op Friday 01 September 2006
Hoi, vind het een handige tutorial. Ik had hem al een tijdje gelezen maar het nog niet geprobeerd(tijd tekort)
Maar nu ik het probeer valt op dat ik niks begrijp van de posities voor die hover. Dit bijvoorbeeld:
transparent url(”doom.jpg”) -250px -610px
Ik snap niet wat die -250 nou zegt bijvoorbeeld :S
Kan iemand mij hierbij helpen?
Alvast bedankt
mvg Protestboarder
Op Friday 01 September 2006
Ooow.. oeps *schaam*
Ik zie nu wat de achtergrondafbeelding is. Daar is een ingezoomde variant eronderaan vastgeplakt.
Dat had ik niet door. Wilde nog vragen hoe het kan dat hij bij jou(Mark) er wel ingezoomd uitziet en bij mij niet.
Mvg Protestboarder
Op Friday 01 September 2006
= zeer simpel: de horizontale en verticale positie van je beeldje binnen het kadertje waar je ze als background definieerde. Een beetje zoals in Indesign of X-press. Je defineert een vensterje en schuift je afbeelding erachter, zo toon je enkel wat je wenst te tonen… Als je je ‘gewone status’ naast je hover-status plaatst in je beeldje en je venster half zo groot maakt, schuif je bij HOVER de helft naar links -de helft aantalpx…
(Hopelijk maakt deze uitleg het niet nog complexer…)
Op Friday 01 September 2006
Nee maakt het niet complexer, dankje.
Had het uiteindelijk wel begrepen.(zie mijn 2e post *schaam*)
Ik kon er met mijn hoofd gewoon niet bij waarom die inzoomde. en ik dacht dus dat ik iets verkeerd deed met die -aantal pixels
Thx
ga er zeker wat mee doen(wat precies moet ik nog bedenken, maar komt prima in orde :D)
mvg
Op Tuesday 27 February 2007
Hmm, kan soms handig zijn, maar ook dit werkt verrot! Kijk zelf maar naar het voorbeeld het plaatje is al breder dan het hoort te zijn :/.
Verder werkt het bij mij ook niet echt super. Krijg nog steeds de LI puntjes te zien en ook niet op de goeie coördinaten!
Op Monday 02 April 2007
Ideaal!!
Alleen zie ik nog steeds een bulletpoint
Hoe krijg ik die nog weg?
Op Monday 02 April 2007
O wacht…ik zie het al uitgelegd worden in een ander voorbeeld dat je gaf…met daarin een CSS-list-style-type [none] !!
Wel begrijp ik nog 1 dingetje niet…die PXwaardes achter de hover-aanduiding!
Op Saturday 15 September 2007
Beste lezers,
Graag wilde ik nog terug komen op dit topic.
Deze oplossing heeft nog 1 probleem, u zult het niet kunnen raden, in Internet Explorer 6.
Dit probleem treed op als de Image Map wat kleiner is. U kunt hem zichtbaar maken door dit toe te voegen aan de CSS:
#navigatie li
{
border:2px solid red;
}
U ziet nu dat de list elementen van de imagemap niet ingeklapt zijn! Met ingeklapt bedoel ik dat ze een hoogte van 0px zouden moet krijgen. Dit gebeurt dus niet.
En dan nu de kritieke situate: laten wij deze naabootsen.
Doe het volgende: de zojuist zichtbaar gemaakte LI elementen hebben totaal een hoogte van +/- 70px.
Wat we gaan doen is de Imagemap kleiner laten maken:
#navigatie {
...
height: 50px;
...
}
Probleem 1:
Omdat er geen “overflow:hidden; ” is opgegeven, zal de map gewoon 70px hoog worden. Dit verstoort het bedoelde resultaat uiteraard verschikkelijk
Probleem 2:
Veel ingewikkelder is:
De link werkt niet meer.
Ik heb hier een paar uur mijn hoofd op gebroken maar moet concluderen dat als:
ALS
- Men een ‘nieuwe-manier’ Image Map heeft
- Deze een specifieke hoogte geeft
- De lijstitems (omdat deze niet worden ingeklapt in IE) een totale hoogte hebben die hoger is dan de gegeven hoogte
DAN
- Werkt niet meer heel het oppervlakte van het A attribuut, enkel de text (indien deze zichtbaar is, en niet met een text-indent uit beeld geschoven is).
- Werkt de link soms als men van het ene A attribuut op het andere schuift, maar niet altijd…
Kortom, gaat men een groot menu in een kleine ‘nieuwe-manier’ Image Map proberen te plaatsen, loopt men tegen allerlei problemen aan.
Omdat niet te controleren valt hoe groot de LI elementen zijn kan er altijd een overflow onstaan, en het menu niet werken.
Daarom gebruik ik voorlopig nog een soortgelijke truck, alleen gebruik ik dan geen list, maar gewoon ‘vliegende’ A elementen, wat nergens een probleem oplevert.
Mocht er dan óóit iemand met een CSS loze browser langs komen, zal deze mijn menu dus niet met mooie puntjes aantreffen, maar als een lijst.
(N.B. Voor screen readers maakt het niets uit. )
En ach, als ze zich dáár aan storen, moeten ze maar een behoorlijke browser regelen.
Mocht iemand een oplossing hebben voor dit probleem, hoor ik het graag!
Groeten,
Leon
Op Friday 19 October 2007
Ik zou graag willen weten wat je bedoelt met ‘vliegende ‘ A elementen? Ik heb dat probleem ook met die mapimage die eigenlijk te klein is voor de list.
Ik ben (nog) geen guru in css en html , dus als je nog eens een voorbeeld kunt geven van die ‘vliegende’ A elementen, dan graag!
groetjes
hellen