Texte Défilant Javascript et CSS compatible XHTML Stritct ;)

ViPHP
AB
ViPHP | 5818 Messages

23 févr. 2009, 21:07

Bonjour,

s'il nest pas trop tard, commant fait on pour calculer la largeur d'un texte

merci
Pour ne faire défiler que du texte inutile de renseigner la largeur, il suffit de suivre ce procédé

Eléphant du PHP | 84 Messages

11 mai 2009, 17:06

Bonjour,

Dans mon cas j'ai besoin que le cadre ai une largeur de 100%. Comment faire pour que le texte démarre complètement à droite (donc quelque soit la largeur)?

Merci,

ViPHP
AB
ViPHP | 5818 Messages

11 mai 2009, 17:20

Dans le lien que j'ai donné ci-dessus, il me semble que mettre width:100% (à la place de width:280px) dans #cadrpg et dans #newshr devrait suffire.

Eléphant du PHP | 84 Messages

11 mai 2009, 17:39

le point de départ (var psinit = 280;) position le texte de façon fixe. Il faut modifier ce paramètre à chaque fois.

Il faudrait pouvoir le supprimer (comme dans la balise <marquee>) et pouvoir indiquer un sens de déplacement (de gauche à droite ou de droite à gauche).

ViPHP
AB
ViPHP | 5818 Messages

11 mai 2009, 19:46

Ah oui j'avais oublié ce paramètre.
Tu peux calculer cette largeur avec un simple

Code : Tout sélectionner

var psinit=document.getElementById("cadrpg").offsetWidth;
Il y a des exemples sur ce lien http://www.abciweb.net/objet-defilant.php puis code webmestre.

EDIT : Si tu as d'autres questions, ouvre plutôt un autre topic dans le forum javascript, cela permettra de ne pas trop diluer celui-ci :wink:
Modifié en dernier par AB le 01 janv. 2010, 21:42, modifié 2 fois.

Eléphant du PHP | 84 Messages

12 mai 2009, 01:08

Après plusieurs test, voici le code que j'ai trouvé pour régler le cadre à 100% .

Code : Tout sélectionner

#cadrpg { width:100%; margin:0 auto; border:0px;} #newshr { position:relative; width:100%; margin:0 auto; border:0px; height:20px; overflow:hidden; } #defile { position:absolute; margin:0 auto; border:0px; background-color:#FFFFFF}

Code : Tout sélectionner

<script language="javascript1.1" type="text/javascript"> var cadrpg; // l'element conteneur var defile; // l'element a deplacer dans le conteneur var psinit; // position horizontale de depart de l'element a deplacer var pscrnt; // position horizontale de fin de deplacement de l'element a deplacer function texteDefile() { if (!defile) defile = document.getElementById('defile'); if (!cadrpg) cadrpg = document.getElementById('cadrpg'); if (defile) { if(!psinit) { psinit = cadrpg.offsetWidth; // position horizontale de depart pscrnt = psinit; } if(pscrnt < ( - defile.offsetWidth ) ){ pscrnt = psinit; } else { pscrnt+= -1; // pixel par deplacement } defile.style.left = pscrnt+"px"; } } setInterval("texteDefile()",20); // delai de deplacement </script>

Code : Tout sélectionner

<div id="cadrpg"> <div id="newshr"> <div id="defile"><a href="index.php">Bienvenue&nbsp;sur&nbsp;ce&nbsp;site&nbsp;de&nbsp;démo...</a></div> </div> </div>
A+

ViPHP
AB
ViPHP | 5818 Messages

23 déc. 2009, 21:37

Bonjour,

Sur ce lien une version qui permet :

- De faire un défilement horizontal ou vertical.

- De faire défiler plusieurs objets dans une même page.

- De ne pas avoir toute la largeur du cadre vide en attendant le retour de boucle : la boucle est réellement continue et l'espacement du retour de boucle est paramétrable.

- De faire (en option) un aller-retour plutôt qu'une boucle continue.

- De paramétrer une pause avant le départ.

- D'arrêter le défilant on mouseover et de le reprendre onmouseout ou d'autres comportements.

- D'inverser le sens de défilement en cour jusqu'à la position initiale de départ.

Petit nouveau ! | 2 Messages

13 sept. 2011, 13:16

Bonjour
Merci pour ce sript qui me semble très utile. Cependant, quand je passe mon code au validator w3c (XHTML 1.0 Transitional), ça coince sur la ligne suivante :

Code : Tout sélectionner

if(pscrnt < ( - defile.offsetWidth) ){
StartTag: invalid element name.
C'est le < qui pose problème

Comment résoudre ça ?

Mammouth du PHP | 19672 Messages

13 sept. 2011, 13:56

Bonjour
Merci pour ce sript qui me semble très utile. Cependant, quand je passe mon code au validator w3c (XHTML 1.0 Transitional), ça coince sur la ligne suivante :

Code : Tout sélectionner

if(pscrnt < ( - defile.offsetWidth) ){
StartTag: invalid element name.
C'est le < qui pose problème

Comment résoudre ça ?
Il est plus que probable que le problème est autour des balises <script>

Le XHTML est un langage XML, donc on doit utiliser ces balises de cette manière :
<script type="text/javascript">/* <![CDATA[ */
//.. code JavaScript
/* ]]> */</script>
Les codes en JavaScript ne devant pas être interprétés de la même manière que le code HTML, on utilise un marquage CDATA. Avec ça, le validateur devrait moins grogner.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Petit nouveau ! | 2 Messages

13 sept. 2011, 14:22

Ha oui en effet, ça passe nickel comme ça.
Merci en tout cas pour la réponse ultra rapide ;-)

Petit nouveau ! | 1 Messages

12 mars 2013, 16:46

Bonjour à tous,

Je débutant en Javascript et XHTML, j'ai besoin de votre aide.
J'ai utilisé le code de Saik (qui défile le texte dans les deux sens haut-bas) ci-dessous. Mon problème est que je n'arrive pas à faire défiler le texte de manière continue verticalement (du bas vers le haut).
Donc il faut que le texte parte du bas du cadre à une vitesse normale sans qu'il y ait pas énormément de vide entre le début et la fin de chaque passage (intervalle).
Merci de votre retour,
Bien cordialement,

[javascript]var menu_defile;//l'élement a déplacer
var pscrnt = 0;//position verticale de départ
function texteDefile()
{
if (typeof this.sens == 'undefined')
this.sens = -1;
if(!menu_defile)
menu_defile = document.getElementById('menu_defile');
if((pscrnt < -menu_defile.offsetHeight) || (pscrnt > 1))
this.sens *= -1;
pscrnt += this.sens * 1;//sens * nb de pixel par déplacement
menu_defile.style.top = pscrnt+"px";
}
var timer = setInterval("texteDefile()", 50);//délai de deplacement
[/javascript]
.menu_deroulant
{
   height: 8em;
   text-align: left;
   overflow: hidden;
   position: relative;
   direction: up;
}

#menu_defile
{
   position: relative;
}
<div class="menu_deroulant" onmouseover="clearInterval(timer)" onmouseout="timer=setInterval('texteDefile()', 50)">
						<span id="menu_defile">
							<strong>
							&bull; Journée Portes Ouvertes<br />
							&bull; Rénovation Restaurant<br />
							&bull; Sorties Scolaires<br />
							</strong>
						</span>
					</div>

ViPHP
AB
ViPHP | 5818 Messages

13 mars 2013, 17:28

Y'a un code avec exemple ici et d'autres exemples tout au long du sujet.
Il te reste juste à lire le mode d'emploi qui se trouve dans le premier message du topic pour paramétrer la fonction.
Et pour les grands débutants ou ceux qui ne veulent pas écrire de code il y a un générateur avec interface graphique ici.