Writing HTML | Riguardo A | FAQ | Riferimenti | Tag | Lezioni | indietro | avanti |

27d. JavaScript : Scambio di Immagini

Animazione Dinamica!

Muovi il Mouse sulla Bottiglia!

Tiralo Via!

Sei Pronto per Creare lo Stesso Effetto?

Obiettivi

Dopo questa lezione sarai in grado di:

Lezione

Nota: Se non possiedi il documento di lavoro dalla precedente lezione,
scaricane una copia ora.

In questa lezione ti mostreremo come creare un effetto che probabilmente hai visto in altri web site-- fare in modo che una immagine inlinea cambi al momento del passaggio del mouse sopra di essa o se viene premuta. Per l'esempio seguente, la freccia si deformera' al passaggio del mouse, e cambiera' in un aspetto "schiacciato", una volta premuto:

left arrow button
Una volta che il bottone sia stato "fissato", devi Aggiornare questa pagina per resettarla.

L'uso piu' comune di questa tecnica e' quello di animare un link ad immagine che funziona come bottone, in modo che il visitatore abbia un'ulteriore conferma che l'oggetto sotto il mouse sia qualcosa su cui e' bene fare click.

Mentre sei libero di usare quello che hai imparato in questa lezione per creare bottoni che appaio e saltano, la nostra opinione accademica e' che questo non aggiunge niente alle informazioni della pagina, e per questo il nostro esempio ti mostrera' un uso che ne valga un po' di piu' la pena.

Dovresti considerare un altro fattore; per ogni immagine che vorrai far cambiare al passaggio del mouse, dovrai in realta' scaricare 2 immagini diverse, e come vedrai tra poco, questo deve essere fatto prima del caricamento del codice HTML della pagina. Inoltre, tutto cio' potra' aumentare il prezioso tempo di attesa in cui il visitatore restera' di fronte ad uno schermo vuoto.

Il modo in cui funziona lo scambio d'immagini mouseOver e' simile a questo:

  1. Il Web browser comincia a leggere il codice per la pagina
  2. L'area <HEAD>...</HEAD> include comandi che prima scaricano i due file d'immagine e li conservano in una cartella temporanea nascosta.
  3. Il tag normale <img...> carica l'immagine che dovrebbe apparire per prima.
  4. Un "event handler" JavaScript in un link tag intorno all'immagine verifica se il mouse sta lasciando o se sta entrando nell'area di pagina coperta dall'immagine
  5. Se il mouse entra nell'immagine, chiamiamo una funzione JavaScript per scambiare il file sorgente per l'immagine nel file che rappresenta l'aspetto della figura al passaggio del mouse.
  6. Quando il mouse lascia l'area dell'immagine, chiamiamo una seconda funzione JavaScript per riportare l'immagine iniziale.
NOTA: Per funzionare correttamente, le immagini che sono scambiate tra loro devono essere della stessa altezza e larghezza.
Quello che segue e' un metodo generico per lo scambio di bottoni. Quello usato in questa pagina ha alcune caratteristiche aggiuntive che tu sei incoraggiato ad esplorare guardando il sorgente HTML di questa pagina di lezione.

Scambio Immagini JavaScript
codice HTMLspiegazione

<html> <head> <title>Mia Pagina</title> <head> <SCRIPT LANGUAGE="JavaScript"> <!--

Tipico inizio di file HTML standard che contiene funzioni JavaScript nel suo <HEAD>...</HEAD>.
if (document.images) {
Questo e' un test che determina se il web browser comprende le funzioni di conservazione delle immagini necessarie per lo scambio d'immagini. Se il e' "false", dovremo saltare il resto del codice e visualizzare solo un'immagine statica.
  var button1_up = new Image();
  button1_up.src = 'button_up.gif";
Creiamo una variabile che e' il tipo che rappresenta Images. La seconda linea assegna la proprieta' src con il path al file della prima immagine, la versione "up".
  var button1_over = new Image();
  button1_over.src = 'button_over.gif";
Creiamo una seconda variabile Image che assegna la proprieta' src al path al file della seconda immagine per la versione "up" dell'immagine.
function over_button() {
  if (document.images) {
    document["buttonOne"].src = button1_over.src
  }
}
Questa funzione, quando chiamata si assicura' ancora una volta che il browser possa fare lo scambio d'immagini. In questo caso, essa scorre la sua lista interna di immagini inlinea conservate nell'oggetto document, e le assegna la variabile che rappresenta l'immagine per il mouse over o l'immagine sottolineata.
function up_button() {
  if (document.images) {
    document["buttonOne'].src = button1_up.src
  }
}
Questa funzione lavora circa allo stesso modo, eccetto per il fatto che fa tornare l'immagine alla versione "up".
//-->
</SCRIPT>
<body>
   :
   :
   :
Fine del JavaScript e continuazione del codice HTML per la visualizzazione del contenuto della pagina.
<A HREF="file.html" onMouseOver="over_button()" onMouseOut="up_button()"><img src="button_up.gif" alt="click me" width="XX" height="YY" name="buttonOne" border=0></a>
Il tag usato per caricare la prima vista dell'immagine (la versione "up"). Nota che abbiamo assegnato all'immagine dentro il tag <img...> un nome univoco, "buttonOne", a cui ci possiamo riferire usando un codice tipo document["button name"]. Il tag di link contiene un event handler JavaScript, onMouseOver che causera' una chiamata alla nostra funzione per fare lo scambio nella versione "highlight" dell'immagine nel momento in cui il mouse si muove sopra l'immagine stessa. Similmente, l'evento onMouseOut chiamera' l'altra nostra funzione per cambiare l'immagine a quella di partenza nel momento in cui il mouse esce, o "moves out" dall'area dell'immagine.

Ora vedremo come funziona nel nostro esempio del vulcano. Piuttosto che una semplice animazione di bottoni, andremo a simulare un microscopio!

Come parte della nostra Introduzione, aggiungeremo una nuova sezione che descriva le rocce vulcaniche, e che includa una immagine di una di queste, chiamata "pumice" [lett. pomice]. Useremo un JavaScript per cambiare l'immagine ad una seconda che mostri un particolare di come la pomice sia guardata sotto un microscopio. Muovendo il mouse fuori e dentro l'immagine, possiamo confrontare i due diversi stati (Okay, ammettiamolo, non e' tanto piu' creativo dell'animazione dei bottoni e che uno puo' ottenere lo stesso risultato mettendo le immagini una accanto all'altra...)

  1. Vai al Centro Per Il Download delle Immagini Lezione 27d a prendere i due file grafici per questa lezione. Questi dovrebbero essere messi nella directory pictures con tutti gli altri tuoi file d'immagine.
  2. Apri il file intro.html nel tuo text editor.
  3. All'interno dei tag <HEAD>...</HEAD>, aggiungi il seguente codice JavaScript:
    <SCRIPT LANGUAGE="JavaScript">
    <!--
    if (document.images) {
       var pum1 = new Image();
       pum1.src = "../pictures/pumice.gif";
       var pum2 = new Image();
       pum2.src = "../pictures/pumice2.gif";
    }
    
    function show_rock() {
    	if (document.images) {
    		document["pum"].src = pum2.src;
    	}
    }
    
    function hide_rock() {
    	if (document.images) {
    		document["pum"].src = pum1.src;
    	}
    }	
    //-->
    </SCRIPT>
    
    NOTA: Abbiamo creato due variabili JavaScript "holder" che rappresentano le due immagini. Chiameremo la funzione show_rock() per lo scambio nella immagine con la visione microscopica (pumice2.gif) e la funzione hide_rock() per riportare l'immagine allo stato originale. Questi eventi accadono ad un'immagine dal nome "pum" che indentificheremo in seguito nel codice HTML
  4. Dopo la conclusione dalla nostra tabella sulle ben note eruzioni vulcaniche, in seguito alla frase che finisce con:
      eruzioni osservate da umani.
    
    Aggiungeremo una nuova sezione sulle Rocce Vulcaniche. Conterra' l'immagine per la pietra pomice ed il codice per lo scambio d'immagini JavaScript:

    <A NAME="vr"><h3 align=center>Rocce Vulcaniche</h2></A>
    Gli scienziati studiano le rocce in molti modi.
    <p>
    <La b>Pomice</b> e' un tipo di roccia formata dalla eruzioni vulcaniche

    <A HREF="#vr" onMouseOver="show_rock(); window.status='descrizione scala potere esplosivo'; return true" onMouseOut="hide_rock()"><IMG SRC="../pictures/pumice.gif" align=right ALT="picture of pumice" WIDTH="220" HEIGHT="170" hspace=12 vspace=12 name="pum" border=0></A>

    molto esplosive. Il <b>magma</b> caldo, schiumoso, cola velocemente, lasciando una struttura con dentro contorte cavita' piene di aria. La Pomice e' per questo veramente leggera.
    <p>
    Se muovi il mouse sopra l'immagine, puoi vedere come appare la Pomice al microscopio.
    <p>
    Una <b>sezione sottile</b> e' uno strato di roccia tagliato cosi' finemente da permettere alla luce del microscopio di passarci attraverso e permettere a noi di vedere la struttura della roccia.
    <p>
    Le intricate camere qui rappresentano le bolle d'aria rimaste nella roccia quando questa e' stata espulsa dal vulcano.
    <br clear=right>

    NOTA: Presta un'attenzione particolare al codice per il tag <img...>; e' piuttosto complesso ora! Ora si occupa delle mouseOver action, visualizza un messaggio (come abbiamo fatto nella lezione 27a), e saltera' ad un link vicino nel caso il visitatore faccia click sull'immagine (tenendoli sulla stessa pagina). L'immagine e' anche allineata a destra ed ha anche un spazio extra attorno ad essa (hspace e vspace)
  5. Salva ed Aggiorna

Controlla il Tuo Lavoro

Confronta la tua pagina web con un esempio di come il documento dovrebbe apparire. Se la tua pagina web fosse diversa dall'esempio, o se i link non dovessero funzionare correttamente, controlla il testo che hai digitato nell'editor di testo. Nota che JavaScript e' veramente sensibile agli errori topografici-- un apice o un punto e virgola mancanti possono rovinare un'intera pagina! Assicurati di aver controllato di non aver inserito caratteri di RETURN extra all'interno dei tuoi JavaScript statement.

Verifica

Argomenti di verifica per questa lezione:
  1. Quali aree del tuo documento HTML devono esserre inserite per creare un "JavaScript image swapping"?
  2. Quale differenza tra onMouseOver e onMouseOut.
  3. Cosa vede il navigatore se il suo browser ritorna un valore FALSE per l'espressione document.images?
  4. Quali gli ingredienti essenziali per scrivere un codice JavaScript per lo scambio d'immagini (suggerimento: considera i file grafici, il codice per caricare le immagini, il codice per scambiarle ed il codice per inizializzare gli eventi)?

Pratica Indipendente

Trova alcune immagini che si possano utilizzare per lo swapping; ricorda che devono avere esattamento lo stesso "peso"! Usa il nostro codice per creare lo stesso effetto sulle tue pagine personali. Cosa occorrre per rendere in grado due immagini di scambiarsi in questo modo? Perche' questo metodo sarebbe meno desiderabile in caso di 10 immagini attive interscambiabili tra loro?

Nota che puoi scrivere anche una funzione JavaScript che porti a termine un altro compito generato da un mouse click:

<A HREF="file.html" onMouseOver="over_button()" onMouseOut="up_button()"><img src="button_up.gif" alt="click me" onClick="doButtonClick()" width="XX" height="YY" name="buttonOne" border=0></a>

ammesso che tu abbia scritto una funzione JavaScript nel tuo <HEAD>...</HEAD> che possa reagire a questo evento.


Prossimamente....

E' tempo di perfezionare le cose con alcuni FORM interattivi...
VAI A.... | Indice Delle Lezioni | indietro: "JavaScript: Apertura di Finestre" | avanti: "FORM" |

Writing HTML: Lezione 27d: Una Leggera Dose di JavaScript : Scambio di Immagini
©1994-1999 Maricopa Center for Learning and Instruction (MCLI)
Maricopa Community Colleges

The Internet Connection at MCLI is Alan Levine --}
Comments to mailto:alan.levine@domail.maricopa.edu?subject=Writing HTML