cs_fabiano13
Messages postés262Date d'inscriptionmardi 26 février 2002StatutMembreDernière intervention27 février 2012
-
20 mai 2008 à 14:05
PetoleTeam
Messages postés3426Date d'inscriptionlundi 26 décembre 2005StatutMembreDernière intervention14 janvier 2011
-
20 mai 2008 à 17:54
Bonjour, je cherche à créer un scroller vertical pour du texte et qui plus est, fonctionnel pour (IE + Firefox minimum).
Seulement lorsque le texte est trop long, on n'a pas le temps de tout lire.
Vous allez voir, j'ai récupéré quelques petites fonctions qui pourraient nous aider à réaliser ce scroller.
Une des fonction calcule la Hauteur d'un div (hidden) contenant le texte. Les autres sont celles qui créé l'animation.
Ce que je pensais faire c'est quand il est sur un texte trop long c'est bien sûr marquer un petit temps de pause (le temps de lire les premières lignes) puis qu'il continue sa course plus lentement jusqu'à la fin du texte.
'
pausecontent[2]='[CSS Drive
Categorized CSS gallery and examples.
'
</script>
<script type="text/javascript">
function pausescroller(content, divId, divClass, delay){
this.content=content //message array content
this.tickerid=divId //ID of ticker div to display information
this.delay=delay //Delay between msg change, in miliseconds.
this.mouseoverBol=0 //Boolean to indicate whether mouse is currently over scroller (and pause it if it is)
this.hiddendivpointer=1 //index of message array for hidden div
document.write('
'+content[0]+'
'+content[1]+'
')
var scrollerinstance=this
if (window.addEventListener) //run onload in DOM2 browsers
window.addEventListener("load", function(){scrollerinstance.initialize()}, false)
else if (window.attachEvent) //run onload in IE5.5+
window.attachEvent("onload", function(){scrollerinstance.initialize()})
else if (document.getElementById) //if legacy DOM browsers, just start scroller after 0.5 sec
setTimeout(function(){scrollerinstance.initialize()}, 500)
}
pausescroller.prototype.initialize=function(){
this.tickerdiv=document.getElementById(this.tickerid)
this.visiblediv=document.getElementById(this.tickerid+"1")
this.hiddendiv=document.getElementById(this.tickerid+"2")
this.visibledivtop=parseInt(pausescroller.getCSSpadding(this.tickerdiv))
this.visiblediv.style.width=this.hiddendiv.style.width=this.tickerdiv.offsetWidth-(this.visibledivtop*2)+"px"
this.getinline(this.visiblediv, this.hiddendiv)
this.hiddendiv.style.visibility="visible"
var scrollerinstance=this
document.getElementById(this.tickerid).onmouseover=function(){scrollerinstance.mouseoverBol=1}
document.getElementById(this.tickerid).onmouseout=function(){scrollerinstance.mouseoverBol=0}
if (window.attachEvent) //Clean up loose references in IE
window.attachEvent("onunload", function(){scrollerinstance.tickerdiv.onmouseover=scrollerinstance.tickerdiv.onmouseout=null})
setTimeout(function(){scrollerinstance.animateup()}, this.delay)
//alert(this.content[0] + '\n\n' + CalculeTaille(this.content[0],'Hauteur'))
}
pausescroller.prototype.animateup=function(){
if (parseInt(CalculeTaille(this.content[this.hiddendivpointer],'Hauteur'))>98){
var scrollerinstance=this
//alert(parseInt(this.hiddendiv.style.top) + ' ' + this.visibledivtop+5)
//alert(parseInt(CalculeTaille(this.content[this.hiddendivpointer],'Hauteur'))-98)
pausescroller.prototype.setmessage=function(){
var scrollerinstance=this
if (this.mouseoverBol==1){ //if mouse is currently over scoller, do nothing (pause it)
setTimeout(function(){scrollerinstance.setmessage()}, 100)
}else{
var i=this.hiddendivpointer
var ceiling=this.content.length
this.hiddendivpointer=(i+1>ceiling-1)? 0 : i+1
this.hiddendiv.innerHTML=this.content[this.hiddendivpointer]
this.animateup()
}
}
pausescroller.getCSSpadding=function(tickerobj){ //get CSS padding value, if any
if (tickerobj.currentStyle)
return tickerobj.currentStyle["paddingTop"]
else if (window.getComputedStyle) //if DOM2
return window.getComputedStyle(tickerobj, "").getPropertyValue("padding-top")
else
return 0
}
</script>
</head>
<script type="text/javascript">
new pausescroller(pausecontent, "pscroller1", "someclass", 3000)
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 20 mai 2008 à 14:36
>>La balise marquee n'a pas la fonction pause et encore moins celle pour un texte trop long.
bien sur que si.... stop() et start()
qu'on peut déclencher avec un setTimeOut par exemple...
<hr /> Cordialement Bul [mon Site] [M'écrire]
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 20 mai 2008 à 14:51
ch'tiot dénut d'exemple :
<marquee onmouseover="this.stop();"
onmouseout="this.start();"
id="mq"
direction="up"
style="width:50%;height:20%">
ligne 1
ligne 2
ligne 3
ligne 4
ligne 5
ligne 5
ligne 7
</marquee>
<script>
window.onload=function()
{ setTimeout("document.getElementById('mq').stop();",700);
setTimeout("document.getElementById('mq').start();",2000);
}
</script>
cs_fabiano13
Messages postés262Date d'inscriptionmardi 26 février 2002StatutMembreDernière intervention27 février 2012 20 mai 2008 à 14:58
Ca dépend du temps, pas de la hauteur. Car selon la longueur du texte de la news il te faudra sûrement plus de temps à la lire.
Merci qu'en même pour l'info (marquee), mais j'aimerai bien qu'on bosse sur les fonctions que j'ai soumises. Si bien sûr vous avez envis de m'aider dans ce sens.
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 20 mai 2008 à 15:05
>>
Ca dépend du temps, pas de la hauteur.
dans mon exemple !
tu disposes d'autres paramètres de réglage ( vitesse, scroll, délai ... )
d'autres approches....
mais c'est comme tu le sens.
<hr /> Cordialement Bul [mon Site] [M'écrire]
PetoleTeam
Messages postés3426Date d'inscriptionlundi 26 décembre 2005StatutMembreDernière intervention14 janvier 201117 20 mai 2008 à 17:54
Bonjour à tous,
OUAPS pas top le code, peut être le
copier/coller, pas tout bien saisi...
quelques approches...
1/
faire défiler plus doucement pour laisser le temps de lire
2/ mettre
un mouseover = STOP pour permettre une lecture plus attentive
3/
s'arranger pour que le message tienne en entier ou alors le décomposer
4/ tester si la hauteur du message est plus grande que la fenêtre
d'affichage dans ce cas faire des pauses intermédiaires
voila quelques
pistes...
;O)