Lorsqu'il s'agit d'un défilement continu et intermittent des actualités sur une page, la méthode la plus courante consiste à copier et à ajouter le contenu de la zone de défilement, puis à contrôler et à juger le scrollTop du bloc de défilement pour obtenir l'effet d'arrêt du défilement.
En fait, dans de nombreux cas, il est plus facile d’obtenir un défilement intermittent et transparent des opérations des nœuds.
Le code est le suivant :
window.onload=fonction(){
var o=document.getElementById('box');
window.setInterval(function(){scrollup(o,24,0);},3000);
}
///Méthode principale de défilement
///Paramètre : o objet bloc de défilement
///Paramètre : d La hauteur de chaque défilement
///Paramètre : c hauteur de défilement actuelle
fonction scrollup(o,d,c){
si(d==c){
var t=getFirstChild(o.firstChild).cloneNode(true);
o.removeChild(getFirstChild(o.firstChild));
o.appendChild(t);
t.style.marginTop="0px";
}autre{
c+=2;
getFirstChild(o.firstChild).style.marginTop=-c+"px";
window.setTimeout(function(){scrollup(o,d,c)},20);
}
}
//Résoudre le problème selon lequel les espaces et les retours chariot seront utilisés comme nœuds sous Firefox
fonction getFirstChild (nœud) {
tandis que (node.nodeType!=1)
{
node=node.nextSibling;
}
nœud de retour ;
}
Effet:
exécuter le code
window.onload=fonction(){
var o=document.getElementById('box');
window.setInterval(function(){scrollup(o,24,0);},3000);
}
fonction scrollup(o,d,c){
si(d==c){
var t=getFirstChild(o.firstChild).cloneNode(true);
o.removeChild(getFirstChild(o.firstChild));
o.appendChild(t);
t.style.marginTop="0px";
}autre{
c+=2;
getFirstChild(o.firstChild).style.marginTop=-c+"px";
window.setTimeout(function(){scrollup(o,d,c)},20);
}
}
fonction getFirstChild (nœud) {
tandis que (node.nodeType!=1)
{
node=node.nextSibling;
}
nœud de retour ;
}