Mappe cliccabili: soluzione accessibile e alternativa
Un esempio classico di "mappa cliccabile" potrebbeessere un immagine dell'Italia in cui, cliccando sullevarie regioni, richiamare le pagine ad esse relative.
Nessun problema per una cartina d'Italia ma se dobbiamorendere palesi queste aree cliccabili su d'una cartinastradale (ad esempio per indicare i punti di ristoro, iparcheggi, etc.) la prima idea che ci viene in mente èquella di sovrapporre alla mappa delle immagini gif animateche, magari "lampeggiando" , attragganomaggiormente l'attenzione.
Una bella idea ma irrealizzabile con le normali "mappecliccabili" (n.d.a. o quantomeno io non ci sono mairiuscito!) ed è a questo punto che entrano in gioco iCSS: possiamo infatti utilizzare l'immagine della cartinastradale come immagine di sfondo di un<div>...</div> e, al suo "interno" ,posizionare le gif dei nostri "segnalini".
Vediamo quindi i CSS necessari:
1.
<style type=
"text/css"
>
/* div della mappa */
#cssmap{width: 500px;height: 500px;background: url(
'cartina.jpg'
);border: 1px solid #
000
;position: relative;}
innanzitutto viene impostata la dimensione del <div>eguale alla dimensione dell'immagine da utilizzare comemappa che, a sua volta, verrà utilizzata come sfondodel <div> stesso. La tipologia di posizionamento deveessere "relativa" altrimenti sarà bendifficile riuscire poi a posizionare i nostri segnalini. Unpiccolo bordo poi, non guasta mai anche se non èindispensabile.
1.
/* Elenco puntato: ul */
#cssmap ul{background: transparent;padding:
0
;margin:
0
;width: 500px;height: 500px;list-style: none;}
Volendo utilizzare gli elenchi puntati debbono esserenecessariamente impostate alcune proprietà per il tag<ul> interno al <div> della mappa: per prima cosalo sfondo trasparente in modo da consentire la visionedell'immagine di sfondo, quindi margini e spaziatura dalbordo azzerate, dimensioni eguali a quelle del <div> enessuno stile per le voci dell'elenco.
1.
/* Link inseriti nelle voci dell'elenco puntato */
#cssmap ul li a {position: absolute;display: block;cursor: pointer;z-index:
100
;}
I vari anchor inseriti nelle voci dell'elenco puntatodovranno avere una posizione assoluta, mostrare come cursorela classica "manina" ed avere uno z-indexabbastanza alto o, comunque, superiore a quello eventualmenteassegnato al <div> contenente la mappa.
1.
/* Posizionamento punti */
#cssmap ul li.p1 a { left: 200px; top: 200px; }
/* Primo segnalino */
#cssmap ul li.p2 a { left: 270px; top: 400px; }
/* Secondo segnalino */
#cssmap ul li.p3 a { left: 143px; top: 392px; }
/* Terzo segnalino */
</style>
Ogni voce <li>...</li> è identificataunivocamente da un suo id che, in questo caso, è lalettera "p" seguita da un numero progressivo apartire da uno. Il valore assegnato ai vari id non èrestrittivo: potete benissimo utilizzarne altri a vostropiacimento.
Come visibile dal codice, per ogni punto vengono dichiarati ivalori al posizionamento left e top sapendo che le coordinateleft 0 e top 0 corrispondono all'angolo in alto asinistra della nostra mappa. Se visualizzando la mappanotaste che uno o più punti sono esterni ad essa (adestra o in basso) significa che avete inserito un valore dileft e/o top che eccedono la dimensione della mappa stessa.
Terminata la definizione dei CSS, vediamo il codice HTMLdella "mappa" che non credo abbia bisogno dispiegazione alcuna data la relativa semplicità:
1.
<p style=
"font-weight: bold; font-size: 24px;"
>Mappa cliccabile simulata con CSS</p><div id=
"cssmap"
><ul><li
class
=
"p1"
><a href=
"#"
><img src=
"punto_1.gif"
border=
"0"
></a></li><li
class
=
"p2"
><a href=
"#"
><img src=
"punto_2.gif"
border=
"0"
></a></li><li
class
=
"p3"
><a href=
"#"
><img src=
"punto_3.gif"
border=
"0"
></a></li></ul></div>
Gli anchor potranno poi essere personalizzati in base alleproprie esigenze: inserendo gli indirizzi URLnell'attributo href, intercettati gli eventi onmouseovered onmouseout, etc. in poche parole ... come qualsiasi altrolink.
- Articolo precedente Proprietà delle tabelle. Table-layout, border-collapse, border-spacing, empty-cells, caption-side
- Articolo successivo Velocizzare caricamento pagine web? 10 semplici regole