IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Defilement de texte, script js trop gourmand


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2007
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mai 2007
    Messages : 108
    Par défaut Defilement de texte, script js trop gourmand
    Bonjour,

    Je souhaite faire défiler verticalement un texte, mais sans la balise marquee (non conforme w3c).

    J'ai utilisé le code suivant (inséré dans le head):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    		<script type="text/javascript">
    			function preload() {
    				var e = document.getElementById('newsbox');
    				e.onmouseover = function() { speed = 0; };
    				e.onmouseout = function() { speed = 2; };
    				startAnim()
    			}
     
    			var pos;
    			var speed = 2;
    			var pos_initial;
     
    			function startAnim() {
    				var e = document.getElementById('newsbox');
    				pos_initial = e.clientHeight + 10;
    				pos = pos_initial;
    				setInterval('anim()', 2);
    			}
    			function anim() {
    				var e = document.getElementById('newslist');
    				e.style.visibility = 'visible';
    				e.style.top = Math.floor(pos) + 'px';
    				pos = pos - speed;
    				if(pos < -e.clientHeight) pos = pos_initial;
    			}
    			// -->
    		</script>
    La balise body ressemble a ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <body onload="preload()">
    et le code ou le texte doit défiler :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    				<div id='newsbox'>
    					<div id='newslist' style='visibility: hidden'>
    						<h1>Titre 1</h1>
    						<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod.</p>
    						<h1>Titre 2</h1>
    						<p>Tincidunt ut laoreet dolore magna aliquam erat volutpat, ut wisi enim ad minim veniam</p>
    						<h1>Titre 3</h1>
    						<p>Quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in.</p>
    					</div>
    				</div>
    Evidemment tout fonctionne au poil

    Certes ... mais ce script a tendance a faire ramer le site. Par ex un clic sur un bete lien hypertexte tout con, le navigateur met bien 1 à 2 secondes pour prendre en compte

    Sur des machines peu puissantes, le curseur de la souris saccade

    Sur ma bécane, ou j'ai un affichage de l'utilisation CPU, j'ai un des cores (sur les deux de mon E6300) qui est utilisé à 100% !!!!

    N'étant pas un féru du dev des javascript, puis je solliciter votre aide pour faire la même chose mais en moins gourmand ?

    Merci

  2. #2
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    setInterval('anim()', 2);
    Avec ce réglage, la fonction anim() est appelée toutes les 2 mili-secondes.
    c'est trop rapide

    Sachant que l'oeil réagit à environ 25 images secondes tu peux utiliser 50
    milisecondes au lieu de 2

    Ensuite, pour régler la vitesse de défilement tu modifie le nombre de pixels
    de décalage à chaque interval, c'est à dire tu modifie la variable speed.

  3. #3
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2007
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mai 2007
    Messages : 108
    Par défaut
    Merci

    Avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     setInterval('anim()', 50);
    et un speed à 2 ou 3, le script est moins gourmand, le defilement fluide.

    Par contre, pour des valeur de speed de 5 par exemple, je trouve que le décalage est trop grand, et la lisibilité du texte beaucoup moins bonne.

  4. #4
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Par défaut
    Tu peux jouer un peu sur l'intervalle mais pas plus petit que 20 miliseconde d'après
    mes tests.

    La fluidité est souvent le fait d'un bon rapport entre le décalage (var speed) et le
    réglage de l'intervalle.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Formulaire] Comment faire défiler un texte ?
    Par Daniela dans le forum IHM
    Réponses: 7
    Dernier message: 27/05/2014, 11h51
  2. Script trop gourmand en ressources
    Par zevince dans le forum Langage
    Réponses: 4
    Dernier message: 01/06/2007, 04h30
  3. Optimiser une table sur SQL server trop gourmande en CPU
    Par molarisapa dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 02/06/2006, 16h17
  4. [FLASH] Faire defiler un texte
    Par zorba49 dans le forum Flash
    Réponses: 2
    Dernier message: 17/02/2006, 10h24
  5. [DOS] le texte s'affiche trop lentement
    Par maxonman dans le forum Autres Logiciels
    Réponses: 3
    Dernier message: 09/12/2005, 14h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo