Esistono molti modi di realizzare una galleria di immagini accattivante e funzionale. Sul web sono disponibili soluzioni gratuite e pronte all'uso, ottime se non vogliamo reinventare la ruota. Quel che manca, a volte, è il supporto necessario per integrare (e adattare) le soluzioni “per-confenzionate” nel nostro sito. Trattandosi di una questione pratica, discutiamo un esempio concreto, considerando la galleria di immagini disponibile a questo indirizzo.
Dopo aver scaricato i files del pacchetto in locale, la galleria dovrebbe già funzionare con delle immagini d'esempio. La struttura del pacchetto è la seguente
index.html (file)
style.css (file)
images (directory)
js (directory)
Se pensiamo di usare la galleria più volte nel sito, mantenendo invariato aspetto e funzionamento, vorremmo probabilmente cambiare questa struttura, per evitare di replicare la cartella js e il file style.css ogni volta che usiamo la galleria per un set di immagini diverse. Il vantaggio è centralizzare le risorse comuni per snellire la manutenzione del codice.
Modifichiamo il pacchetto come segue
- Rinominiamo la pagina
index.htmldella galleria comeslider.html, per evitare confusione ed ambiguità con la nostra index - All'interno della sezione
headdellaslider.htmlcambiamo il riferimento astyle.css, indicando il percorso dove vogliamo centralizzare i CSS, ad esempio/css/slider.css. Ovviamente dobbiamo anche spostare (e probabilmente rinominare) il filestyle.css - Sempre nella
headdellaslider.htmlcambiamo i valorisrcdegli elementiscript, in modo da spostare le librerie Javascript in un unico punto del sito. Dobbiamo ovviamente anche spostare i filesscripts.jsejquery.js, che potrebbero essere rinomati in modo più appropriato, diventando (ad esempio)slider.jsejquery-1.5.1.min.js. L'obbiettivo è quello di centralizzare gli scripts mettendoli dove teniamo tutte le risorse condivise (ad esempio nella cartella/scriptsdel nostro sito) - Spostiamo in un posto più adatto, ad esempio
/images/sliderle quattro immagini condivise dalle varie istanze della galleria, che sono:header-bg.png,nav-bg.png,slide-bg.pngeslide-nav.png. Dopodiché aggiustiamo gliurl()nel file CSS delle proprietàbackgroundebackground-imageche puntano a queste quattro immagini - Cambiamo i valori
srcdelle immagini argomento della galleria, per puntare alle nostre immagini (vedere elementiimgdel fileindex.htmlaventi IDslide-img-1,slide-img-2ecc.)
A questo punto, se ignoriamo la patch (tra l'altro inutile) per IE6, la struttura della nostra galleria di immagini è stata così ridotta
- Una pagina
slider.htmldove sono specificati i riferimenti alle nostre immagini (all'interno deldivaventeID=slide-runner) - La nostra serie di immagini, salvata da qualche parte nella directory
/img,/images(o quello che è) - Una serie di risorse integrate e centralizzate nel nostro sito, nella fattispecie gli scripts
scripts.jsejquery.js(eventualmente rinominati), il filestyle.css(eventualmente rinominato) e le immagini di sfondoheader-bg.png,nav-bg.png,slide-bg.pngeslide-nav.png
La nuova configurazione ci permette di copiare la pagina slider.html tutte le volte che vogliamo, producendone una copia per ogni galleria che inseriamo sul sito: ogni copia sarà una sorta di istanza della galleria. Poi andremo a specificare i riferimenti alle immagini della specifica galleria. Infine potremo puntare direttamente alla pagina della galleria, o includerla come iframe
<iframe type="text/html" width="600px" height="330px"
scrolling="no" src="slider.html" frameborder="0"></iframe>
Avendo snellito l'architettura possiamo sfruttare meglio il software, ottenendo una nuova galleria ogni volta che personalizziamo una copia della slider.html.
Se dobbiamo adattare la galleria a gruppi di immagini con dimensioni diverse, dovremo usare una versione ad hoc del file style.css per ogni istanza della galleria. Le proprietà CSS da cambiare sono le seguenti
- Sostituire tutti i riferimenti alla
width:993px;con la larghezza della nostra galleria - Sostituire tutti i riferimenti alla
height:299px;con l'altezza della nostra galleria (meno 1 pixel) - Aggiustare il selettore
div#header div#slide-holder div#slide-runnerper inserire larghezza e altezza nostra galleria, entrambe ridotte di una ventina di pixels - Aggiustare il selettore
div#header div#slide-holder div#slide-controlsper inserire larghezza della nostra galleria, ridotta di una ventina di pixels, e aggiustare il parametrobottomper sistemare i controlli di navigazione all'altezza che più ci piace
Ci vorrà forse un po' di pazienza e almeno mezz'ora di tempo per sistemare la galleria come vogliamo noi, ma il risultato è di gran lunga superiore a qualsiasi soluzione che potremmo scrivere “a manina” nello stesso tempo (mezz'ora).