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
| <!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>Défilement alterné de texte</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta http-equiv="Content-Language" content="fr" />
<meta name="Author" content="Auteur - www.developpez.com" />
<style type="text/css">
<!--
/* div conteneur et cellule du tableau de même longueur */
.conteneur, .cellule{
width: 400px; /* valeur modifiable ;-) /!\ entrer une valeur en pixel /!\ */
}
/* 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) */
.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;
}
-->
</style>
<script type="text/javascript">
<!--
var tabTxt = new Array("Commentaire 1", "Voici un long, terriblement long et ennuyeux commentaire 2", "Commentaire 3", "Coucou", "Un dernier commentaire pour la route :D");
var attente = "3000"; //délai d'affichage du texte en ms
// Action à réaliser lors du clic sur une cellule.
// id est de la forme "celluleX" avec X compris entre 0 et tabTxt.length-1
function clicSurTexte(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;
}
}
/*********************************************************/
//***** Fonctions du diaporama *****//
var tempo = "1";
var pas = 2;
var chrono;
var posFin, conteneur, sens;
// Ajout du texte dans le div conteneur
function creationDiaporama()
{
var i;
var txtDiapo;
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 * tabTxt.length) + "px";
elTable.cellSpacing = "0";
elTable.cellPading = "0";
for (i=0; i<tabTxt.length; i++)
{
// 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(){clicSurTexte(this.objetCellule);}
// Ajout des éléments dans la cellule
elCell.appendChild(txtDiapo);
}
// Ajout du tableau dans le div conteneur
conteneur.appendChild(elTable);
chrono = setTimeout("deroule()",attente);
}
// Détermination du sens de défilement du texte et des distances à parcourir
function deroule()
{
var distance;
conteneur = document.getElementById("conteneur");
distance = conteneur.scrollWidth / tabTxt.length;
if (conteneur.scrollLeft + distance >=conteneur.scrollWidth)
{
sens = -1;
}
if (conteneur.scrollLeft<distance)
{
sens = 1;
}
posFin = conteneur.scrollLeft + sens * distance;
chrono = setTimeout("defileTexte()", tempo);
}
// Défilement du texte
function defileTexte()
{
conteneur.scrollLeft = conteneur.scrollLeft + sens * pas;
if (sens == 1)
{
if (conteneur.scrollLeft<posFin)
chrono = setTimeout("defileTexte()", tempo);
else
chrono = setTimeout("deroule()",attente);
}
else
{
if (conteneur.scrollLeft>posFin)
chrono = setTimeout("defileTexte()", tempo);
else
chrono = setTimeout("deroule()",attente);
}
// Pour debugage ;-)
/*document.getElementById('idTest').innerHTML=conteneur.scrollLeft + " / " + posFin;*/
}
// Réinitialisation du diaporama lors de la fermeture de la page
function stopDiaporama()
{
clearTimeout(chrono);
document.getElementById("conteneur").scrollLeft = 0;
}
//-->
</script>
</head>
<body onload="creationDiaporama()" onunload="stopDiaporama()">
<div class="conteneur" id="conteneur">
</div>
<!-- pour debugage
<div id="idTest"></div>
-->
</body>
</html> |
Partager