Realizzare un rollover sull’immagine con Jquery in meno di un minuto
Realizzare un effetto rollover per le immagini di un sito è un’operazione molto semplice ma diventa complessa quando dobbiamo applicare questo effetto ad un numero elevato (e soprattutto differente) di elementi.
Come prima cosa aggiungiamo un link nella pagina alla libreria di jquery.
<script type="text/javascript" src="javascript/jquery.js"></script>
Iniziamo il nostro codice con $(document).ready che attenderà il caricamento completo della pagina prima di eseguire il codice
$(document).ready(function() {
)};
Al suo interno iniziamo a definire la prima funzione
$("img").each(function() {
rollsrc = $(this).attr("src");
rollON = rollsrc.replace(/.jpg$/ig,"_over.jpg");
$("<img>").attr("src", rollON);
});
Questa funzione salva il valore dell’attributo src nella variabile rollsrc per ogni immagine presente nella pagina, nella variabile rollON utilizza l’url dell’immagine e aggiunge la stringa “_over”. Nell’immagine dell’esempio cliccami.jpg diventa cliccami_over.jpg. Questa funzione serve per precaricare le immagini prima che siano utilizzate nelle successive funzioni.
$("a").mouseover(function(){
imgsrc = $(this).children("img").attr("src");
matches = imgsrc.match(/_over/);
if (!matches) {
imgsrcON = imgsrc.replace(/.jpg$/ig,"_over.jpg");
$(this).children("img").attr("src", imgsrcON);
}
});
La seconda funzione inizia all’over del mouse sul link, verifica che l’elemento <img> sia figlio dell’elemento <a> e salva in una variabile l’url, verifica se all’interno della variabile esiste la parte “_over” in caso negativo sostiutisce il nome dell’immagine da nomeimmagine.jpg a nomeimmagine_over.jpg. Questo serve per evitare che javascript ripeta l’effetto rollover se il mouse è già sopra l’immagine.
Come ultima funzione definiamo il rispristino dell’url con l’evento mouseout
$("a").mouseout(function(){
$(this).children("img").attr("src", imgsrc);
});
Sarà sufficiente questa funzione per applicare un’effetto rollover su ogni immagine linkata di una pagina. Basterà fare attenzione a salvare le immagini per l’effetto rollover con con lo stesso nome ed in aggiunta “_over” prima del formato del file.
Per un vedere lo script in azione vedi l’esempio.
Tag: html, jquery, web design
Realizzare un contatore di battute con Jquery
Molto tempo fa realizzai un contatore di battute per un cms che limitava il testo inseribile dall’utente. Oggi questa soluzione è diventata obsoleta e anche poco accessibile, ma visto il successo di twitter che limita i caratteri inseribili a 140 e l’integrazione possibile sulle pagine html potrebbe tornare utile un esempio basato su Jquery.
Come realizzare slide animate con jquery

Succede spesso che chi desidera un sito web voglia mostrare nelle pagine qualche animazione e richiede quindi un sito totalmente in flash. L’utilizzo di questa tecnologia va valutata attentamente in quanto comporta dei pro e dei contro, prima di valutare questa scelta possiamo dunque cercare delle alternative come ad esempio jquery.
Cos’è jquery?
Jquery è una libreria javascript che ci mette a disposizione una serie di funzioni che possiamo utilizzare in maniera comoda e compatibile nelle pagine web.
Esistono molte librerie javascript ed ognuna manifesta la propria “attitudine” verso determinate operazioni, per iniziare possiamo vedere come jquery possa tornare utile per “dare movimento” alle nostre pagine.
Iniziamo creando una pagina html con il seguente codice:
<div id="contenitore"> <div id="contenuto"> <div id="primo">Lorem ipsum[...]</div> <div id="secondo">Lorem ipsum[...]</div> <div id="terzo">Lorem ipsum[...]</div> </div> </div> <div id="menu"> <a href="#" class="primo">Primo</a> <a href="#" class="secondo">Secondo</a> <a href="#" class="terzo">Terzo</a> </div>
La struttura è identica a quella utilizzata per un layout a tre colonne e le differenze appaiono più evidenti nel css.
div#contenitore{
margin:0px auto;
width:600px;
height:300px;
background-color:#ffffff;
overflow:hidden;
}
div#contenuto{
margin:0px;
width:1800px;
height:300px;
background-color:#ffffff;
float:left;
display:inline;
}
div#contenuto div#primo{
margin:0px;
width:600px;
height:300px;
background-color:#cc0000;
float:left;display:inline;
}
div#contenuto div#secondo{
margin:0px;
width:600px;
height:300px;
background-color:#ffffff;
float:left;
display:inline;
}
div#contenuto div#terzo{
margin:0px;
width:600px;
height:300px;
background-color:#cccccc;
float:left;
display:inline;
}
div#menu{
margin:0px auto;
width:600px;
background-color:#ebebeb;
}
Notiamo subito che il contenitore ha settata una proprietà overflow:hidden e la larghezza dei contenuti supera quella dell’elemento padre. Questa scelta ci serve per ottenere l’effetto slide dove al click di ogni link avremo una pagina che si muove e fa apparire la seguente.
Per animare le pagine è sufficiente inserire nella pagina un link alla libreria di jquery e qualche riga per definire le azioni desiderate.
<script type="text/javascript" src="javascript/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("#menu a.primo").click(function (event) {
$("#contenuto").animate({ marginLeft: "0px"}, 500 );
event.preventDefault();
});
$("#menu a.secondo").click(function (event) {
$("#contenuto").animate({ marginLeft: "-600px"}, 500 );
event.preventDefault();
});
$("#menu a.terzo").click(function (event) {
$("#contenuto").animate({ marginLeft: "-1200px"}, 500 );
event.preventDefault();
});
});
</script>
Il codice inizia con
$(document).ready(function()
Questa funzione serve a capire quando la pagina è caricata ed è possibile eseguire lo script, per chi usa javascript è l’equivalente di onload.
$("#menu a.primo").click(function (event) {
Con questa funzione definiamo un evento con il quale far partire l’azione, al click del link con classe “primo” nel menu, javascript farà partire l’azione
$("#contenuto").animate({ marginLeft: "0px"}, 500 );
Con l’utilizzo della funzione animate, modifichiamo il margine sinistro del div contenuto facendolo muovere nella posizione corrispondente al contenuto desiderato. Avendo i tre div larghezza di 600px sarà sufficiente sottrarre 600px di margine al div con id contenuto per mostrare il seguente div.
L’ultima parte del codice ha come scopo quello di inibire il link in modo che al click non il browser non vada in un altra pagina.
event.preventDefault();
Questo ci permette di ottenere un’alternativa accessibile al sito per coloro che hanno i javascript disabilitati, al click sul link si aprirà una pagina uguale ma con il margine sinistro di contenitore settato per la visualizzazione del contenuto desiderato.
E’ inoltre possibile sfruttare animate per animare il contenuto sia in orizzontale che in verticale.
VEDI ESEMPIO CON SLIDE VERTICALI
VEDI ESEMPIO CON SLIDE ORIZZONTALI
Lo script può essere notevolmente migliorato agendo sui tag ed evitando di impostare troppe classi o id, inoltre è possibile definire un ciclo per creare un array degli elementi nella pagina e applicare l’effetto ad ogni link del menu associandolo al rispettivo div con contenuto. Prossimamente vedremo come applicare queste modifiche ed utilizzare jquery per migliorare l’esperienza dell’utente sulle nostre pagine web.
