Prima di proseguire...
Potrebbe interessarti la nostra collezione di esercizi C risolti?
Oggi vediamo uno script per visualizzare le news. La particolarità di questo script è che scorre una news per volta e quando il mouse ci passa sopra si blocca. Un esempio di questo script si trova nella home del sito
Le news vanno semplicemente inserite in una lista.
il codice è il seguente:
<html> <head> <title>news</title> <style> /*news*/ .news{ color:#F00; height:130px; text-align:center; overflow:hidden; } .news li{ list-style:none; position:relative; top:130px; display:none; } </style> <script type="text/javascript" language="javascript1.5"> //INIZIO IMPOSTAZIONI var velocita = 1; //FINE IMPOSTAZIONI var pos = 0; var elemento_c = 0; var stop = false; function go_news(){ document.getElementById("news").getElementsByTagName("ul")[0].getElementsByTagName("li")[elemento_c].style.display = "block"; pos = ((document.getElementById("news").offsetHeight-document.getElementById("news").getElementsByTagName("ul")[0].getElementsByTagName("li")[elemento_c].offsetHeight*1.5-20)/2); document.getElementById("news").getElementsByTagName("ul")[0].getElementsByTagName("li")[elemento_c].style.top = pos+"px"; news(); } function news(){ if(!stop){ if(pos<=-((document.getElementById("news").getElementsByTagName("ul")[0].getElementsByTagName("li")[elemento_c].offsetHeight)+10)){ document.getElementById("news").getElementsByTagName("ul")[0].getElementsByTagName("li")[elemento_c].style.display = "none"; elemento_c++; if(elemento_c < document.getElementById("news").getElementsByTagName("ul")[0].getElementsByTagName("li").length) pos = (document.getElementById("news").offsetHeight-document.getElementById("news").getElementsByTagName("ul")[0].getElementsByTagName("li")[elemento_c].offsetHeight/2); else pos = (document.getElementById("news").offsetHeight-document.getElementById("news").getElementsByTagName("ul")[0].getElementsByTagName("li")[0].offsetHeight/2); }else document.getElementById("news").getElementsByTagName("ul")[0].getElementsByTagName("li")[elemento_c].style.display = "block"; if(elemento_c < document.getElementById("news").getElementsByTagName("ul")[0].getElementsByTagName("li").length){ pos -= 1*velocita; document.getElementById("news").getElementsByTagName("ul")[0].getElementsByTagName("li")[elemento_c].style.top = pos+"px"; }else{ elemento_c = 0; } } window.setTimeout(news,30/velocita); } </script> </head> <body onLoad="go_news();"> <h1>NEWS</h1> <div id="news" class="news" onMouseOver="stop=true" onMouseOut="stop=false"><ul> <li>news 1</li> <li>news 2</li> <li>news 3</li> <li>news 4</li> </ul> </div> </body> </html>
Lo script è abbastanza semplice: come parametro prevede solo la velocità, che consiglio di lasciare ad 1. per i parametri grafici come l’altezza del box basta cambiare i valori nel css.Infatti nel javascript vado a vedere le grandezze impostate leggendo la proprietà offsetHeight. in seguito non faccio altro che mostrare l’elemento successivo e farlo scorrere, quando finisco con gli elementi ricomincio dall’inizio azzerando elemento_c.
Da notare che per una maggiore chiarezza all’utente finale la prima news viene visualizzata al centro.
animazione news by cardinale claudio is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.