2009-12-22 7 views
0

J'essaie de trouver un moyen simple d'avoir une div avec juste le texte qui défile automatiquement le texte verticalement. Je ne veux pas utiliser de framework (bien que j'utilise Prototype, donc s'il est plus facile d'utiliser Prototype alors c'est bien, mais pas Scriptalicious).Faire défiler verticalement automatiquement le contenu div

Je suppose qu'il doit y avoir un moyen de le faire avec quelques lignes de code, mais je ne suis pas assez familier avec Javascript pour savoir comment le faire le plus efficacement.

+0

Vérifiez la modification à ma réponse ... – ekhaled

Répondre

6

Cela pourrait ne pas être classique mais vous pouvez essayer la balise <marquee>

cela fonctionne aussi bien dans IE et FF, et la dernière fois que j'ai vérifié, safari aussi.

<marquee behavior="scroll" direction="up" height="250" 
    scrollamount="2" scrolldelay="10""> 
    Your content goes here 
</marquee> 

devrait vous donner ce que vous voulez,
et vous pouvez les style comme une <div> ...
puis il y a l'avantage de ne pas avoir le javascript ...

Modifier dans réponse à votre commentaire

Il va mieux, essayez ceci dans tout navigateur

onmouseover="this.stop()" onmouseout="this.start()" 

Et ceci dans IE

style="filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0, 
FinishOpacity=100, 
Style=1, StartX=0, FinishX=0, StartY=0, FinishY=10) 
progid:DXImageTransform.Microsoft.Alpha(Opacity=100, FinishOpacity=0, 
Style=1, StartX=0, FinishX=0, StartY=90, FinishY=100)" 

Comme les attributs de la balise marquee ...

+0

Intéressant, je ne savais pas que l'étiquette de marque pouvait avoir autant de personnalisation. –

0
function scrollDivUp(id){ 
    document.getElementById(id).scrollTop-=1 
    timerUp=setTimeout("scrollDivUp('"+id+"')",10) 
} 

Essayez quelque chose comme ça peut-être.

vous pouvez également changer le .scrollTop- = 1 à .scrollTop + = 1 pour faire défiler l'autre sens.

Vous auriez également besoin d'un div défilant qui peut être fait en limitant la taille et en définissant la propriété de style de débordement à savoir. style = "width: 200px; height: 300px; overflow: auto"

+0

Cela fonctionnera, mais il ne résout pas encore le problème de la boucle. J'essaie d'avoir une boucle de défilement continue. –

+0

Pour faire un peu de boucle, je peux vérifier si la barre de défilement a atteint le fond, puis revenir en haut, mais cela semble assez ringard, il doit y avoir une meilleure façon de faire une boucle en douceur. –

+0

Et si le contenu de la div avait une grande zone d'espace en haut et en bas, une fois que le texte a fait défiler le bas, vous pouvez sauter à nouveau en haut et l'espace devrait donner l'impression que le texte défile du haut à nouveau? – Tim

0

Je vois que la bonne réponse est pas donnée encore. Je pense que vous devez regarder cloneNode() par exemple. Et clonez l'élément que vous voulez faire défiler. Lorsque le premier élément est au dernier point de défilement, placez l'élément dupliqué après le premier élément. Et quand cet élément dupliqué est presque à la fin, placez l'original après le doublon et ainsi de suite!

Questions connexes