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 :

défilement de texte et d'images


Sujet :

JavaScript

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    138
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 138
    Points : 112
    Points
    112
    Par défaut défilement de texte et d'images
    Bonjour, j'ai récupéré le code de "auteur" par rapport au défilement de texte et d'images mais je voudrais que ce défilement se fasse de bas en haut et étant donné que je suis débutant en js je n'arrive pas à le réalisé, j'ai essayé en remplaçant le srcollLeft par scrollUp mais ça ne fonctionne pas, pourriez-vous m'expliquer comment faire s'il vous plaît...
    merci
    le post auquel je fait référence est : http://www.developpez.net/forums/sho...=519736&page=3

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    scrollWidth et scrollLeft a remplacer par scrollHeight et scrollTop

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    138
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 138
    Points : 112
    Points
    112
    Par défaut
    merci mais les images ne défilent pas, ça reste figé sur la première image je vais mettre le code
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
    <head>
    <title></title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <meta http-equiv="Content-Language" content="fr" />
     
    <style type="text/css">
    <!--
    /* div conteneur et cellule du tableau de même longueur */
    .conteneur, .cellule{
    	width: 400px;	/* valeur modifiable ;-) */
    }
     
    /* Le conteneur s'adapte en hauteur (height). Il n'est pas nécessaire de préciser sa hauteur */
    .conteneur{
    	border: 5px #AAAAAA ridge;	/* bordure du conteneur */
    	overflow: hidden;						/* on cache les barres de défilement */
    	padding: 0px;								/* pas de marge intérieure */
    }
     
    /* proprités de la cellule (contient le texte et l'image) */
    .cellule{
    	text-align: center;					/* alignement des composants dans la cellule */	
    	vertical-align: middle;
    	border: none;
    	cursor: pointer;						/* curseur en forme de main */
     
    	/* propriétés du texte dans la cellule */
    	color: #000000;								
    	font-family: Comic Sans MS;
    	font-size: 12pt;
    	background-color: #DDDDDD;
    }
     
    /* propriétés de l'image contenue dans la cellule */
    .image{
    	margin-left: 0px;
    	margin-right: 0px;
    	margin-top: 0px;
    	margin-bottom: 2px;
    	height: 80px;							/* taille de l'image */
    	width: 80px;	
    }
     
     
    -->
    </style>
     
    <script type="text/javascript">
    <!--
    /* 
    chemin => chemin relatif des images
    tabImg => nom des images
    tabTxt => légende des images
    */
     
    var chemin = "images\\";
    var tabImg = new Array("i1.gif","i2.gif","i3.gif","i4.gif","i5.gif");
    var tabTxt = new Array("Image 1", "Voici un long, terriblement long et ennuyeux commentaire sur l'image2", "Image3", "Image4", "Image5");
     
    var attente = "3000"; //délai d'affichage d'une image en ms
     
    // Action à réaliser lors du clic sur une cellule. 
    // id est de la forme "celluleX" avec X compris entre 0 et tabImg.length-1
    function clicSurImage(objCellule)
    {
    	alert(objCellule.id);
    }
     
    /*********************************************************/
    //***** Fonctions du diaporama *****//
    var tempo = "1";
    var pas = 2;
    var chrono;
    var posFin, conteneur, sens;
     
    // Ajout des images et du texte dans le div conteneur
    function creationDiaporama()
    {
    	var i;
    	var imgDiapo, txtDiapo, crlf;
    	var conteneur = document.getElementById("conteneur");
     
    	// Création du tableau contenant les élements
    	var elTable = document.createElement("table");			
    	// Ajout d'une ligne dans ce tableau
    	var elLigne = elTable.insertRow(-1);
    	var elCell;
     
    	elTable.style.width = parseInt(conteneur.clientWidth * tabImg.length) + "px";
    	elTable.cellSpacing = "0";
    	elTable.cellPading = "0";
     
    	for (i=0; i<tabImg.length; i++)
    	{
    		// Création du noeud image
    		imgDiapo = document.createElement("img");
    		imgDiapo.src = chemin+tabImg[i];
    		imgDiapo.className = "image";
     
    		// Création du saut de ligne
    		crlf = document.createElement("br");
     
    		// Création du noeud texte
    		txtDiapo = document.createTextNode(tabTxt[i]);
     
    		// Création de la cellule contenant les objets
    		elCell = elLigne.insertCell(i);
    		elCell.className = "cellule";
    		elCell.id = "cellule"+i;
    		elCell.objetCellule = elCell;
    		elCell.onclick = function(){clicSurImage(this.objetCellule);}
     
    		// Ajout des éléments dans la cellule
    		elCell.appendChild(imgDiapo);
    		elCell.appendChild(crlf);
    		elCell.appendChild(txtDiapo);
    	}
     
    	// Ajout du tableau dans le div conteneur
    	conteneur.appendChild(elTable);
    	chrono1 = setTimeout("deroule()",attente);
    } 
     
    // Détermination du sens de défilement des images et des distances à parcourir
    function deroule()
    {
    	var distance;
     
    	conteneur = document.getElementById("conteneur");
    	distance = conteneur.scrollHeight / tabImg.length;
     
    	if (conteneur.scrollTop + distance >=conteneur.scrollHeight)
    	{
    		sens = -1;
    	}
     
    	if (conteneur.scrollTop<distance)
    	{
    		sens = 1;
    	}
     
    	posFin = conteneur.scrollTop + sens * distance;
    	chrono = setTimeout("defileImage()", tempo);
    }
     
    // Défilement des images
    function defileImage()
    {
    	conteneur.scrollTop = conteneur.scrollTop + sens * pas;	
     
    	if (sens == 1)
    	{
    		if (conteneur.scrollTop<posFin)
    			chrono = setTimeout("defileImage()", tempo);
    		else
    			chrono = setTimeout("deroule()",attente);
    	}
    	else
    	{
    		if (conteneur.scrollTop>posFin)
    			chrono = setTimeout("defileImage()", tempo);
    		else
    			chrono = setTimeout("deroule()",attente);
     
    	}
     
    	document.getElementById('idTest').innerHTML=conteneur.scrollTop + " / " + posFin;
    }
     
    // Réinitialisation du diaporama lors de la fermeture de la page
    function stopDiaporama()
    {
    	clearTimeout(chrono);
    	document.getElementById("conteneur").scrollTop = 0;
    }
     
     
    //-->
    </script>
     
    </head>
     
    <body onload="creationDiaporama()" onunload="stopDiaporama()">
     
    <div class="conteneur" id="conteneur">
     
     
    </div>
     
    <div id="idTest"></div>
     
    </body>
     
    </html>

  4. #4
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 650
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 650
    Points : 11 143
    Points
    11 143
    Par défaut
    bonjour,

    Pour un défilement vertical, il ne suffit pas de changer les xxxWidth en xxxHeight et les xxxLeft en xxxTop

    Pour que les images et les textes puissent défiler horizontalement, je les ai placés dans une table HTML avec une ligne :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    // Création du tableau contenant les élements
    	var elTable = document.createElement("table");			
    	// Ajout d'une ligne dans ce tableau
    	var elLigne = elTable.insertRow(-1);
    	var elCell;
     
    	elTable.style.width = parseInt(conteneur.clientWidth * tabImg.length) + "px";
    	elTable.cellSpacing = "0";
    	elTable.cellPading = "0";

    La largeur du tableau est définie par
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    elTable.style.width = parseInt(conteneur.clientWidth * tabImg.length) + "px";
    Puis à chaque boucle j'ajoute une cellule dans la ligne.


    Le script tel qu'il est actuellement ne permet uniquement qu'un déplacement horizontal (justement parce que les éléments sont dans une ligne de tableau et non dans une colonne).
    Il faudrait que les composants soient dans une colonne et non dans une ligne. Et dans ce cas à chaque tour de boucle il faudrait ajouter une ligne et une cellule qui contient le texte et l'image.

    Je regarde ça et je te posterai un code dans quelques temps.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    138
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 138
    Points : 112
    Points
    112
    Par défaut
    ok merci, je vais quand même essayer de me débrouiller, faut bien aussi chercher par soi-même c'est comme ça qu'on apprend lol, en tout cas si tu arrive à trouver le temps pour me modifier ça je t'en serai très reconnaissant.

  6. #6
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 650
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 650
    Points : 11 143
    Points
    11 143
    Par défaut
    Diaporama avec un défilement vertical.

    J'ai remplacé le tableau (balise table) par des div qui contiennent l'image et le texte. Ces div sont ensuite ajouté au div conteneur.


    Dans les feuilles de styles, il faudra que tu ajustes la hauteur et la largeur des éléments en fonctions de la taille de l'image et de la longueur du texte, sinon tu n'as qu'un affichage partiel.

    Code css : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    /* regler les valeurs en fonction de la taille de l'image (classe .image) et de la longueur du texte (classe .cellule)*/
    /* div conteneur et cellule de même longueur et même hauteur */
    .conteneur, .cellule{
    	height: 150px;	/* valeur modifiable ;-) */
    	width: 230px;   
    }

    Code css : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    /* propriétés de l'image contenue dans la cellule */
    .image{
    	margin-left: 0px;
    	margin-right: 0px;
    	margin-top: 0px;
    	margin-bottom: 2px;
    	height: 80px;		/* taille de l'image */
    	width: 80px;	
    }


    pour gérer le clic sur les éléments tu as juste à compléter la fonction clicSurImage(objCellule). Par exemple :
    Code javascript : 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
     
    function clicSurImage(objCellule)
    {
    	//alert(objCellule.id);
     
    	switch (objCellule.id)
    	{
    		case "cellule0" : 	//action a réaliser lors du clic sur la cellule 0
    				alert("coucou");
    				break;
    		case "cellule1" :		//action a réaliser lors du clic sur la cellule 1
    				alert("bonjour :-)");
    				break;
    		case "cellule2" :		//action a réaliser lors du clic sur la cellule 2
    				alert("hello");
    				break;
    	}
    }
    Si tu ne veux pas gérer les clic, tu la laisses vide


    [edit]
    code source : voir cette discussion du forum contribution :
    http://www.developpez.net/forums/sho...d.php?t=543119
    [/edit]

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    138
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 138
    Points : 112
    Points
    112
    Par défaut
    merci beaucoup ça marche nickel chrome!!!!

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

Discussions similaires

  1. [JavaScript] [SRC] Défilement de textes et d'images
    Par Auteur dans le forum Contribuez
    Réponses: 14
    Dernier message: 19/02/2011, 16h32
  2. Défilement de textes et d'images
    Par jemapo dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 14/02/2009, 15h08
  3. [HTML]Peut-on écrire un texte sur une image ?
    Par flogreg dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 28/02/2005, 17h24
  4. [FLASH MX2004] Défilement de texte alpha
    Par black is beautiful dans le forum Flash
    Réponses: 7
    Dernier message: 03/02/2005, 22h40
  5. TRichEdit défilement de texte automatique
    Par bloops dans le forum C++Builder
    Réponses: 2
    Dernier message: 11/06/2003, 11h13

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