News Scroller
Posted in: Design, Programmazione
Ecco un piccolo esempio in cui si applicano le proprietà presentate in Scroll boxes. Si tratta di una possibile visualizzazione di news a scorrimento automatico in un blocco DIV. Niente di innovativo e tanto meno completo, ma può considerarsi uno buono spunto per esercitarsi con javascript, css e xhtml ( AJAX usando una sigla audace ).
Primo step, HTML formato da un contenitore generale un wrapper che servira' come contenitore delle news e quindi le singole news:
Secondo step,CSS che nasconde l'overflow delle news:
-
#container{
-
margin: 20px;
-
width: 200px;
-
height: 200px;
-
/*Nasconde la parte in eccesso*/
-
overflow: hidden;
-
border: 1px solid #000
-
}
-
-
div.news{
-
padding: 10px;
-
}
Ultimo step, Javascript per dare moto al tutto:
-
//dichiarazione variabili globali
-
var time;
-
var scroll_limit;
-
-
//Alcune impostazioni fondamentali pre caricamento pagina
-
function init(){
-
var container = document.getElementById("container");
-
var wrapper = document.getElementById("wrapper");
-
var client_height = container.offsetHeight;
-
var news_nodelist = wrapper.getElementsByTagName("DIV");
-
-
/**
-
* Lo scroller deve resettarsi quando gli attuali
-
* elementi news sono stati tutti scorsi.
-
**/
-
scroll_limit = wrapper.offsetHeight;
-
var i = 0;
-
var current_element = news_nodelist[i];
-
-
/**
-
* Si duplicano i nodi in modo da creare l'illusione
-
* dello scorrimento continuo. Si assume che ci siano
-
* abbastanza nodi (news) da duplicare.
-
**/
-
while(client_height>= 0){
-
var current_element = news_nodelist[i];
-
client_height = client_height - current_element.scrollHeight;
-
wrapper.appendChild(current_element.cloneNode(true));
-
i = i + 1;
-
}
-
scroll("wrapper");
-
}
-
function scroll(element_id){
-
var wrapper = document.getElementById(element_id);
-
var container = wrapper.parentNode;
-
var scroll_top = container.scrollTop;
-
if( scroll_top + 1 <scroll_limit ){
-
container.scrollTop = container.scrollTop + 1;
-
}else{
-
container.scrollTop = 0;
-
}
-
// Si richiama la funzione tra 25 millisecondi
-
time = setTimeout('scroll(\'wrapper\')', 25);
-
}
-
-
function stopScroll()
-
{
-
if (time) clearTimeout(time);
-
}
Ovviamente la funzione init() deve essere richiamata al termine del caricamento della pagina HTML, ora sta a voi raffinare questo rozzo esempio di News Scroller.
Testato su:
Firefox 2.0.0.3 (Linux)
Mozilla 1.7.13 (Linux)
Epiphany 2.16.1 (Linux)
Galeon 2.0.2 (Linux)
IE 6.0 (Linux)
Return to: News Scroller
Social Web