begin process at 2012 05 24 07:01:22
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Javascript / DHTML / Ajax

 > 

CSS

 > 

Général

 > 

Scroller Vertical avec pause


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Scroller Vertical avec pause

mardi 20 mai 2008 à 14:05:35 | Scroller Vertical avec pause

fabiano13

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.

M'avez vous compris ?

D'avance merci.
Fabiano13

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>New Page 1</title>
<style type="text/css">
#pscroller1{
width: 200px;
height: 98px;
}
.someclass{ font-family:"Verdana";font-size:10px;}
.cDiv{
width: 200px;
height: 98px;
padding: 5px;
background-color: lightyellow;
border: 1px solid black;
}
</style>

<script type="text/javascript">

function CalculeTaille(tt,sQuoi){
String.prototype.textWidth=function(police,taille){
var container=document.createElement('div');
container.style.visibility='hidden';
if (sQuoi=="Hauteur"){
container.style.width = '200px'
}else{
container.style.height = '98px'
}
container.style.fontFamily=police
container.style.fontSize=taille+'px'
container.id="magicdiv";
container.style.display='inline';
document.body.appendChild(container);
document.getElementById('magicdiv').innerHTML=this;
if (sQuoi=="Hauteur"){
var longueur = document.getElementById('magicdiv').offsetHeight;
}else{
var longueur = document.getElementById('magicdiv').offsetWidth;
}
document.getElementById('magicdiv').parentNode.removeChild(document.getElementById('magicdiv'))
return longueur + ' px'
}
return tt.textWidth('Verdana',10)
}

var pausecontent=new Array()
pausecontent[0]='<a href="http://www.codingforums.com">Coding Forums</a><br>Web coding and development forums.<br><br>'
pausecontent[1]='<a href="http://www.javascriptkit.com">JavaScript Kit</a><br>Comprehensive JavaScript tutorials and over 400+ free scripts! dsdg sdgg ksj<br>dmglkj sdglkjsd glkjsd<br> hsd gkjsdh gskdjgh sdsqf qsfqsh kfjqhs flkjqsh flkjqshf lkqsjhf qslkjfqh slkfjqsh fkljqsyfiuqs hfkqsjhf lqskjfh qslkjfh qskgjh sdkg<br>jhsdkgjsh<br>dgkuy sdkgjshd<br>glkjsd glkjsdg lsudg isudjg;sjdg lskdglsd gsdg fab.<br><br>'
pausecontent[2]='<a href=" [ Lien ]" target="_new">CSS Drive</a><br>Categorized CSS gallery and examples.<br><br>'

</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('<div class="cDiv"><div id="'+divId+'" class="'+divClass+'" style="position: relative; overflow: hidden"><div class="innerDiv" style="position: absolute; width: 100%" id="'+divId+'1">'+content[0]+'</div><div class="innerDiv" style="position: absolute; width: 100%; visibility: hidden" id="'+divId+'2">'+content[1]+'</div></div></div>')
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)

if (parseInt(this.hiddendiv.style.top)>(this.visibledivtop+5)){
this.visiblediv.style.top=parseInt(this.visiblediv.style.top)-5 + "px"
this.hiddendiv.style.top=parseInt(this.hiddendiv.style.top)-5 + "px"
setTimeout(function(){scrollerinstance.animateup()}, 50)
}else{
this.getinline(this.hiddendiv, this.visiblediv)
this.swapdivs()
setTimeout(function(){scrollerinstance.setmessage()}, this.delay)
//alert(this.content[this.hiddendivpointer] + '\n\n' + CalculeTaille(this.content[this.hiddendivpointer],'Hauteur'))
}

}else{
//alert(this.hiddendiv.style.top + ' ' + this.visibledivtop)
var scrollerinstance=this
if (parseInt(this.hiddendiv.style.top)>(this.visibledivtop+5)){
this.visiblediv.style.top=parseInt(this.visiblediv.style.top)-5+"px"
this.hiddendiv.style.top=parseInt(this.hiddendiv.style.top)-5+"px"
setTimeout(function(){scrollerinstance.animateup()}, 50)
}else{
this.getinline(this.hiddendiv, this.visiblediv)
this.swapdivs()
setTimeout(function(){scrollerinstance.setmessage()}, this.delay)
//alert(this.content[this.hiddendivpointer] + '\n\n' + CalculeTaille(this.content[this.hiddendivpointer],'Hauteur'))
}

}

}


pausescroller.prototype.swapdivs=function(){
var tempcontainer=this.visiblediv
this.visiblediv=this.hiddendiv
this.hiddendiv=tempcontainer
}

pausescroller.prototype.getinline=function(div1, div2){
div1.style.top=this.visibledivtop+"px"
div2.style.top=Math.max(div1.parentNode.offsetHeight, div1.offsetHeight)+"px"
}

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>

<body>
<script type="text/javascript">

new pausescroller(pausecontent, "pscroller1", "someclass", 3000)

</script>
</body>

</html>

mardi 20 mai 2008 à 14:08:58 | Re : Scroller Vertical avec pause

bultez

Membre Club
Bonjour,
    et tout ça pour afficher un texte ?
    utilise donc la balise marquee...

                Cordialement            Bul         [mon Site]     [M'écrire]
mardi 20 mai 2008 à 14:28:05 | Re : Scroller Vertical avec pause

fabiano13

Je redoutai cette réponse !

La balise marquee n'a pas la fonction pause et encore moins celle pour un texte trop long.

C'est juste que pour la leture c'est plus agréable.

Merci de m'aider.
Fabiano13
mardi 20 mai 2008 à 14:36:45 | Re : Scroller Vertical avec pause

bultez

Membre Club
>>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...

                Cordialement            Bul         [mon Site]     [M'écrire]
mardi 20 mai 2008 à 14:51:12 | Re : Scroller Vertical avec pause

bultez

Membre Club

ch'tiot dénut d'exemple :

<body>
    <marquee onmouseover="this.stop();"
                onmouseout="this.start();"
                id="mq"
                direction="up"
                style="width:50%;height:20%"><pre>
        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>
</body>

    à toi d'affiner....


                Cordialement            Bul         [mon Site]     [M'écrire]
mardi 20 mai 2008 à 14:58:33 | Re : Scroller Vertical avec pause

fabiano13

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.

Bien à vous tous.
Fabiano13
mardi 20 mai 2008 à 15:05:42 | Re : Scroller Vertical avec pause

bultez

Membre Club
>> 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.

                Cordialement            Bul         [mon Site]     [M'écrire]
mardi 20 mai 2008 à 15:11:08 | Re : Scroller Vertical avec pause

fabiano13

Je cherche réellement à developper ça comme ça.

Je continu mes recherches.

Encore merci pour ton aide.
Fabiano13

mardi 20 mai 2008 à 17:54:06 | Re : Scroller Vertical avec pause

PetoleTeam

Membre Club
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)


Cette discussion est classée dans : function, style, content, scrollerinstance, hiddendiv


Répondre à ce message

Sujets en rapport avec ce message

Scroller vertical pour du texte dans un div [ par fabiano13 ] 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 Problème de compatibilité (pour IE, OK, mais pas sous FF) [ par hidakwon786 ] Bonjour,Je suis en train de programmer un petit site pour les cours, j'ai récupéré un CS pour faire en JS une zone ou des annonces défilent, sous IE, Conflit entre deux js dans une page HTML (inclure plusieurs js) [ par karinemariejeanne ] Bonjour, Je débute en javascript et j'ai présentement un problème dont je n'arrive pas à trouver la solution... Ca fait déjà un bon moment que j'ess iframe dans nelle fenetre _blank [ par tonytruand ] BonjourEst ce quelqu'un pourrait me donner un petit coup de main, merci par avancej'aimerai ouvrir le contenu d'un iframe dans une nouvelle page et je Pb firefox pour cacher des div [ par fdthierry ] Bonjour,J'ai un menu qui se créé à partir d'une table.Le principe est le suivant:Année   Mois      JourAu chargement sous IE, je ne vois que les année infobulle sous différant navigateur [ par Thundrax ] Hello,Alors mon problème est simple, j'ai le script de Greengold pour faire de joli info bulle perso, c magique mais ca ne fonctionne que sous-ie... é rendre image cliquable DHTML dans script fournit [ par bernie69 ] Bonjour à tous, Pour une de mes pages d'un site en php, j'ai intégré un script dhtml pris ici : http://www.dhteumeuleu.com/  (cliquer sur "les scripts Internet Explorer et object [ par bond_never_die ] Bonjour à tous. Voilà, j'ai un petit script qui permet d'afficher dynamiquement une zone d'affichage au dessus de ma page. Problème : sous Internet Ex aligner les images horizontalement [ par oceane751 ] bonjour à tous avec le code qui suit, mes images defilent de façon verticale mais je voudrais que ces images défilent horizontalement voici le c fondu javascript [ par loblobloblob ] Bonjour, je ne sais pas trop où poser ma question alors je la poste ici.voila mon problème, j'ai récupérer un code en javascript pour réaliser une ban


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,842 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales