FancyBox

Oggi voglio parlarvi delle fancy box, i nuovi lightbox per quelli del mestiere, infatti adesso abbiamo la possibilità di visualizzare immagini con effetti nuovi di transizione, ma non solo anche contenuti testuali, html, flash e gestire all’interno dei campi iframe e chiamate ajax.

In queste pagina vi mostrerò le sintassi di codice da usare per avere gli effetti che vi mostrerò nella pagine degli esempi, in più vi illustrerò altre variabili che possiamo utilizzare per i nostri scopi.

Prima di tutto dobbiamo inserire nella nostra pagina gli “script” jquery, jquery.fancybox e jquery.easign. Mi raccomando non fate come me che vi dimenticate di inserire jquery e non capite il perchè non funziona :p
Potete scaricarvi il pacchetto completo con le immagini e gli script da Google Code

<script type="text/javascript" src="tuo_percorso/jquery-1.3.2.min.js"></script>
<script type="text/javascript" src="jtuo_percorso/jquery.fancybox-1.2.1.js"></script> 
<script type="text/javascript" src="tuo_percorso/jquery.easing.1.3.js"></script>

Adesso abbiamo bisogno di associare anche il foglio di stile delle nostre fancy box

<link href="tuo_percorso/jquery.fancybox.css" rel="stylesheet" type="text/css" />

E adesso siamo quasi pronti per iniziare… Vi mostro la pagina degli esempi che spiegherò parte per parte. Esempio

Partiamo dall’esempio 1, lightbox semplice:
Dobbiamo settare al $(document).ready della nostra pagina le seguenti variabili, che sono associate al fancy box dell’immagine con classe img1

<script type="text/javascript">
	$(document).ready(function() { 
	$(".img1").fancybox({
		'zoomSpeedIn': 500,
		'zoomSpeedOut': 500,
		'overlayShow': true,
		'zoomOpacity':false,
		'overlayOpacity':0.8
	}); 
	}); 
</script>

Il link della nostra immagine sarà così composto:

<a class="img1" href="img/zoom1.jpg" title="image">
	<img src="img/min1.jpg" />
</a>

Esempio 2, lightbox semplice senza però la mascherà di overlay:

<script type="text/javascript">
	$(document).ready(function() { 
	$(".img2").fancybox({
		'zoomSpeedIn': 500,
		'zoomSpeedOut': 500,
		'overlayShow': false,
		'zoomOpacity':true
	});
	}); 
</script>

Il link della nostra immagine:

<a class="img2" href="img/zoom2.jpg" title="image">
	<img src="img/min2.jpg" />
</a>

Esempio 3, qui iniziamo a vedere qualcosa in più rispetto ai semplici lightbox, l’utilizzo dell’easing per fare la transizioni di entrata e uscita, senza la maschera di overlay:

<script type="text/javascript">
	$(document).ready(function() { 
	$(".img3").fancybox({
		'zoomSpeedIn': 1000,
		'zoomSpeedOut':1000,
		'overlayShow': false,
		'easingIn':'easeOutBack',
		'easingOut':'easeInBack',
		'zoomOpacity':true
	});
	}); 
</script>

Il link della nostra immagine:

<a class="img3" href="img/zoom3.jpg" title="image">
	<img src="img/min3.jpg" />
</a>

Oltre alle animazioni sulle singole immagini possiamo ovviamente anche avere una gallery di immagini e quindi devono essere concatenate tra di loro.

<script type="text/javascript">
	$(document).ready(function() { 
	$(".group").fancybox({
		'overlayShow': true,
		'overlayOpacity':0.8
	}); 
	}); 
</script>

Script semplice, basta associare alle nostre immagini di la classe ‘.group’ e l’attributo ‘rel’ univoco. Nel mio caso ho uscato lo stesso nome, ma possiamo benissimo avere più gallery nella stessa pagina e quindi dobbiamo usare ‘rel’ diversi.

<a class="group" href="img/zoom1.jpg" title="image" rel="group">
	<img src="img/min1.jpg" />
</a>

Ed ora vediamo la parte che forse è più interessante, ovvero poter far caricare all’interno del nostro box qualcosa che non sia un immagine, vediamo come si fa:
teniamo presente che il $(document).ready per la visualizzazione va benissimo qualsiasi di quelli visti in precedenza.
Visualizzazione di un codice inline, tipo la presentazione di un video preso da youtube:

<a class="group" href="#youtube" title="video da youtube" rel="group"><img src="img/default.jpg" /></a>
<div id="youtube" style="display:none;">
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/LbDjX3kM1kc&hl=it&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/LbDjX3kM1kc&hl=it&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object>
</div>

All’ href del link associamo l’id del div che contiene il nostro codice.

Visualizzazione di iframe, visualizzazione di una pagina all’interno del box:

<a class="group" href="http://www.google.com/webhp?ie=UTF-8&iframe"  rel="group"><img src="img/google.jpg" style="border:0px;" /></a>

Possibilità di effettuare chiamate ajax:

<a class="group" href="ajax.txt" rel="group"><img src="img/min3.jpg" style="border:0px;" /></a>

E con questo ho illustrato tutti gli esempi, ora vediamo le variabili che possiamo usare.

padding Padding intorno al contenuto
imageScale Se true, l’immagine viene scalata, all’interno dell’area visibile
zoomOpacity Se true, cambia la trasparenza dell’immagine durante l’animazione di entrata e uscita
zoomSpeedIn Velocità in millisecondi di entrata dell’animazione, se 0 niente animazione
zoomSpeedOut Velocità in millisecondi di uscita dell’animazione, se 0 niente animazione
zoomSpeedChange Velocità in millisecondi dell’animazione al cambio delle immagini di una gallery, se 0 niente animazione
easingIn, easingOut, easingChange usata per gli effetti di animazione, da usare insieme alle velocità di zoom
frameWidth larghezza di default per i nostri box con iframe e contenuti inline
frameHeight altezza di default per i nostri box con iframe e contenuti inline
overlayShow Se true mostra la maschera di overlay
Overlay color è definita nel file di css del fancybox
overlayOpacity Opacità della maschera (da 0 a 1)
hideOnContentClick Se true, permette chiudere il FancyBox al click sul contenuto aperto
centerOnScroll Se true, il contenuto sarà sempre al centro della pagina anche se la scrolliamo
itemArray Opzionale, possibilità di settare i contenuti dentro un array
callbackOnStart Opzionale, possibilità di fare una chiamata all’inizio dell’animazione
callbackOnShow Opzionale, possibilità di fare una chiamata una volta aperto il contenuto
callbackOnClose Opzionale, possibilità di fare una chiamata alla chiusura dell’animazione

Vi lascio alcuni effetti di entrata e uscita che potrete usare, non fate caso se sono usate per flash, funzionano ugualmente :)
TransitionCheatSheets.zip.

Questi guida lo sviluppata grazie alla pagina ufficiale dell’autore delle FancyBox

  • #1 scritto da Luca
    circa 2 anni fa

    Ciao, c’è un problema sull’inline, con safari il fancybox si chiude quando si clicca il tasto play per riprodurre il video di youtube.. con firefox non lo fa, ma non capisco perchè anche ad altri da questo problema (meno all’autore stesso sul suo sito), che funziona con tutti i browser

  • #2 scritto da Alex
    circa 2 anni fa

    Ciao, grazie per avermi fatto notare il bug, mi informerò e vedrò se c’è un modo per risolvere il problema…

  • #3 scritto da Marco
    circa 1 anno fa

    Ma funziona con Internet Explorer 6? Con questo browser gli esempi della pagina http://www.alexdesign.biz/tutorial_fancy_box/esempi_fancy_box.html non funzionano.
    grazie, Marco

  • #4 scritto da Alex
    circa 1 anno fa

    Ciao, si funziona… Avevo solo fatto un errore nello script del primo funzione di fancy!
    Avevo messo alla fine una virgola:
    $(“.img1″).fancybox({
    ‘zoomSpeedIn’: 500,
    ‘zoomSpeedOut’: 500,
    ‘overlayShow’: true,
    ‘zoomOpacity’:false,
    ‘overlayOpacity’:0.8, < —
    });

    mentre il codice corretto è senza:
    $(“.img1″).fancybox({
    ‘zoomSpeedIn’: 500,
    ‘zoomSpeedOut’: 500,
    ‘overlayShow’: true,
    ‘zoomOpacity’:false,
    ‘overlayOpacity’:0.8
    });

    Un errore banale, ma avevo già risolto su uno dei siti, che avevo sviluppato, dimenticandomi di aggiornare l’esempio… Grazie per avermi fatto notare la cosa :)

  • #5 scritto da Neo
    circa 1 anno fa

    Non è che avresti i files per avere gli angoli arrotondati con fancybox? Mi riferisco ai files fb_roundedCorners.zip e fb_roundedCorners_white_and_dark.zip perchè sul gruppo di google di fancybox ci sono i links ma i files non sono più disponibili… grazie e complimenti per il sito

    • #6 scritto da Alex
      circa 1 anno fa

      ciao, no mi dispiace non ho i file che ti servono… ho fatto una ricerca veloce ma niente, farò una ricerca un pò più approfondita, se trovo qualcosa te lo farò sapere :)

  • #7 scritto da Angelo
    circa 1 anno fa

    Grazie Alex, questo tutorial è perfetto. Non ero riuscito ad inserire fancybox seguendo il tutorial ufficiale in inglese. L’unica cosa che mi piacerebbe sapere è se c’è la possibilità di impostare ler dimensioni in pixel della finestra in cui si apre l’iframe… forse è una cosa banale, in quel caso scusa l’ignoranza…! Ciao Angelo

  • #8 scritto da Alex
    circa 1 anno fa

    ciao, per rispondere alla tua domanda, ci sono le proprietà frameWidth e frameHeight che ti permettono di dare una dimensione al iframe…
    un esempio:

    $(“.group”).fancybox({
    ‘overlayShow’: true,
    ‘frameWidth’: 500,
    ‘frameHeight’: 300
    });

  • #9 scritto da Enrico
    circa 1 anno fa

    Ciao Alex! grazie per il tutorial che è perfetto.
    Sto creando per il mio portfolio più gallerie di immagini con fancybox in una sola pagina.
    sono riuscito a farle grazie al tuo aiuto, ma mi chiedevo come posso modificare la posizione del titolo di ogni immagine da esterna a quella interna “inside”.
    spero tu possa aiutarmi.
    Saluti!

  • #10 scritto da Alex
    circa 1 anno fa

    ciao, spero di aver capito quello che chiedi, allora per modificare la posizione del titolo puoi modificare lo stile del div #fancy_title, il quale dovrebbe essere posizionato con position:absolute…

    …se è quello che volevi sapere :)

    altrimenti mi puoi contattare così vediamo meglio il tuo problema

  • #11 scritto da Marco A.
    circa 1 anno fa

    Ciao Alex,
    ho riscontrato un problema con il caricamento di più Iframe all\’interno della stessa pagina.
    Ho diversi pusanti, ognuno dei quali apre una pagina html, ma funziona solamente il primo, gli altri aprono la pagina in modalita _blank invece che all\’interno del box.
    Sai dirmi se sbaglio qualcosa io o se è un limite di fancy box?

    Grazie

    Marco

  • #12 scritto da Alex
    circa 1 anno fa

    Ciao, ricordati di associare ad ogni link una classe fancy non un id :)

  • #13 scritto da trip
    circa 1 anno fa

    Ciao,
    io faccio la domanda più scema dell’universo… ma non ho mai usato jquery, è la prima volta per me…
    Qualcuno mi spiega per favore perché tutti gli che metto mi aprono il fancybox invece di andare al link richiesto?

    Grazie mille

  • #14 scritto da trip
    circa 1 anno fa

    Ciao,
    io faccio la domanda più scema dell’universo… ma non ho mai usato jquery, è la prima volta per me…
    Qualcuno mi spiega per favore perché tutti i link che metto mi aprono il fancybox invece di andare alla pagina richiesta?

    Grazie mille

    • #15 scritto da Alex
      circa 1 anno fa

      Ciao, come hai associato nel document.ready la funzione del fancybox? L’hai associata ad una singola classe? O direttamente all’oggetto link?

  • #16 scritto da dreamsequence#1
    circa 1 anno fa

    Ciao Alex,
    grazie per il tutorial è tutto molto chiaro! Ma purtroppo non riesco a far aprire un iframe (ad es. http://www.google.it) in un box, mi apre direttamente un’altra pagina!

    Dove sbaglio?! :(

  • #17 scritto da Adrart
    circa 8 mesi fa

    come faccio ad inserire più link id various1?

    • #18 scritto da Alex
      circa 8 mesi fa

      invece di usare l’id usa le classi, in modo che puoi associarla a più link

  • #19 scritto da Giampy
    circa 8 mesi fa

    ho un problema con internet explorer 9, la fancybox funziona con firefox, chrome, safari e opera, ma con explore non vuol saperne di aprirsi, sapresti dirmi da cosa dipende?
    Grazie

  • #20 scritto da Lorenzo
    circa 8 mesi fa

    Ciao, ho copiato ed incollato il testo per mostrare il video di youtube, ma quello che succede quando clicco sul link è l’apertura di un overlay praticamente vuoto (un quadratino bianco) con niente dentro…nel sorgente della pagina eppure il codice dell’embedding di youtube c’è, sai mica cosa potrebbe essere (se magari ti è capitato)?

  • #21 scritto da giulia
    circa 4 mesi fa

    Ciao,ti ringrazio per il tutorial è molto chiaro e semplice! Ho un problema che non riesco a risolvere però e premetto che sono una principiante dell’html:)sto creando un sito con Dreamweaver e all’interno del programma la gallery fancybox funziona,mentre su Chrome no,ovvero se clicco sull’immagine si apre un’altra pagina!
    Come posso risolvere il problema?

    Grazie mille!

  • #22 scritto da nancy
    circa 1 mese fa

    Ciao Alex, dopo tante ricerche ho trovato il tuo sito dove parlavi del fancybox. Premetto sono una principiante e ho costruito il sito indicato sopra con Dremweaver CS5.
    Non riesco però ad associare l’effetto della gallery.
    Riesci a dirmi per quale motivo.
    Spero di sentirti presto
    Ciao Nancy

  • #23 scritto da elisa
    circa 3 settimane fa

    salve ragazzi! questa galleria è fantastica,soltanto che non mi si apre per nessun motivo con IE… ho provato a fare qualche modifica ma non funzia per niente..
    avreste quealche suggerimento?
    grazie mille,
    elisa

*
To prove you're a person (not a spam script), type the security text shown in the picture. Click here to regenerate some new text.
Click to hear an audio file of the anti-spam word