Slideshow javascript, position premier slide
Résolu
SteeveC
Messages postés
8
Date d'inscription
Statut
Membre
Dernière intervention
-
Dge-06 -
Dge-06 -
Bonjour,
J'aimerais solliciter votre soutient concernant l'affichage dans un slideshow. En bref, j'ai un slideshow javascript qui me conviens parfaitement, sauf que j'aimerais permettre a l'utilisateur d'arriver directement sur le slide numero 3 par exemple.
(je maîtrise assez bien le php, mais pas vraiment le javascript, d'ou la raison de ce post)
Voici le code javascript du slideshow:
Et voici le code dans ma page php
Donc, comme je le disais, le slideshow fonctionne bien, j'arrive directement sur le premier slide, celui qui includ kit.php.
Et lorsque je clic sur la flèche vers la gauche, je vois bien la suivant, donc etapes.php, ainsi de suite.
Cependant, j'aimerais que dans certaines condition avant d'arriver sur la page, je puisse arriver directement sur le slide 2 ou 3. En utilisant _GET par exemple.
J'ai bien essayé de modifier la variable position dans le script javascript
Malheureusement, ça ne fonctionne pas vraiment, j'arrive bien en position 2 par exemple, mais je vois le premier slide, et lorsque je clic la flèche gauche pour aller au slide suivant, je bascule bien au slide 3 directement comme prévu. Le seul problème donc, c'est d'afficher le slide qui correspond a la position.
J'espère que mon explication n'est pas trop confuse.
Je travail directement sur le serveur d'hebergement de mon client:
http://cluster003.ovh.net/~kitaentr/index.php?page=slide1
Merci d'avance pour votre soutien
J'aimerais solliciter votre soutient concernant l'affichage dans un slideshow. En bref, j'ai un slideshow javascript qui me conviens parfaitement, sauf que j'aimerais permettre a l'utilisateur d'arriver directement sur le slide numero 3 par exemple.
(je maîtrise assez bien le php, mais pas vraiment le javascript, d'ou la raison de ce post)
Voici le code javascript du slideshow:
<script type="text/javascript" src="jquery-1.3.2.min.js"></script> <script type="text/javascript"> $(document).ready(function(){ //Configuration var retour = true; var tempsTransition = 1000; var affichePlayPause = false; var lectureAutomatique = false; var tempsAttente = 6000; var icones = new Array(); icones['play'] = 'img/play_slider.png'; icones['pause'] = 'img/pause_slider.png'; var currentPosition = 0; var slideWidth = 840; var slides = $('.slide'); var numberOfSlides = slides.length; var interval; var lectureEnCours = false; // Supprime la scrollbar en JS $('#slidesContainer').css('overflow', 'hidden'); // Attribue #slideInner à toutes les div .slide slides .wrapAll('<div id="slideInner"></div>') // Float left to display horizontally, readjust .slides width .css({ 'float' : 'left', 'width' : slideWidth }); // Longueur de #slideInner égale au total de la longueur de tous les slides $('#slideInner').css('width', slideWidth * numberOfSlides); // Insert controls in the DOM $('#slideshow') .prepend('<span class="control" id="leftControl">Précédent</span>') .append('<span class="control" id="rightControl">Suivant</span>'); // Hide left arrow control on first load manageControls(currentPosition); //Crée un écouteur d'évènement de type clic sur les classes .control $('.control') .bind('click', function(){ // Determine la nouvelle position currentPosition = ($(this).attr('id')=='rightControl') ? currentPosition+1 : currentPosition-1; if(currentPosition == numberOfSlides && retour == false ){ currentPosition--; pause(); } // Cache ou montre les controles manageControls(currentPosition); // Fais bouger le slide $('#slideInner').animate({ 'marginLeft' : slideWidth*(-currentPosition) },tempsTransition); }); // manageControls: Cache ou montre les flêches de controle en fonction de la position courante function manageControls(position){ // Cache la fleche "précédent" si on est sur le premier slide if(position==0){ $('#leftControl').hide() } else{ $('#leftControl').show() } // Cache la fleche "suivant" si on est sur le dernier slide (et que le retour automatique n'est pas activé) if(position==numberOfSlides-1 && retour == false){ $('#rightControl').hide(); } else { $('#rightControl').show(); } if(position == numberOfSlides && retour == true){ currentPosition = 0; $('#leftControl').hide(); } } function suivant(){ $('#rightControl').click(); } function start() { lectureEnCours = true; interval = setInterval(suivant, tempsAttente ); } function pause() { lectureEnCours = false; clearInterval(interval); } //Si le diapo est activé if(lectureAutomatique == true){ start(); } if(affichePlayPause == true){ $('#slidesContainer').prepend('<img id="navDiapo" src="" alt="Navigation diaporama" />'); if(lectureAutomatique == true){ $('#navDiapo').attr('src',icones['pause']); }else{ $('#navDiapo').attr('src',icones['play']); } $('#navDiapo').bind('click', function(){ if(lectureEnCours == true){ $(this).attr('src',icones['play']); pause(); }else{ $(this).attr('src',icones['pause']); start(); } }); } }); </script>
Et voici le code dans ma page php
<div id="pageContainer"> <div id="slideshow"> <div id="slidesContainer"> <div class="slide"> <?php include("kit.php") ;?> </div> <div class="slide"> <?php include("etapes.php") ;?> </div> <div class="slide"> <?php include("savoir_faire.php") ;?> </div> </div> </div> </div>
Donc, comme je le disais, le slideshow fonctionne bien, j'arrive directement sur le premier slide, celui qui includ kit.php.
Et lorsque je clic sur la flèche vers la gauche, je vois bien la suivant, donc etapes.php, ainsi de suite.
Cependant, j'aimerais que dans certaines condition avant d'arriver sur la page, je puisse arriver directement sur le slide 2 ou 3. En utilisant _GET par exemple.
J'ai bien essayé de modifier la variable position dans le script javascript
var icones = new Array(); icones['play'] = '<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/img/play_slider.png'; icones['pause'] = '<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/img/pause_slider.png'; var currentPosition = <?php if(isset($_GET['posi'])) { echo $_GET['posi']; } else { echo 0;} ?>; var slideWidth = 840;
Malheureusement, ça ne fonctionne pas vraiment, j'arrive bien en position 2 par exemple, mais je vois le premier slide, et lorsque je clic la flèche gauche pour aller au slide suivant, je bascule bien au slide 3 directement comme prévu. Le seul problème donc, c'est d'afficher le slide qui correspond a la position.
J'espère que mon explication n'est pas trop confuse.
Je travail directement sur le serveur d'hebergement de mon client:
http://cluster003.ovh.net/~kitaentr/index.php?page=slide1
Merci d'avance pour votre soutien
A voir également:
- Slideshow javascript, position premier slide
- Ma position - Guide
- Thundersoft free slideshow maker - Télécharger - Visionnage & Diaporama
- Suivi position google - Guide
- Telecharger javascript - Télécharger - Langages
- Partage position whatsapp - Guide
7 réponses
Une personne m'a rectifier le code sur un autre forum, je le post ici au cas certaines personnes aient le même besoin.
Il fallait ajouter :
Juste avant la fin, du coup, avec $_GET['posi'], j'indique le numero du slide a afficher.
Merci a venegal du forum codingforums:
http://www.codingforums.com/showthread.php?t=241180
Voici le code javascript final:
Il fallait ajouter :
$('#slideInner').css({marginLeft: slideWidth * (-currentPosition)});
Juste avant la fin, du coup, avec $_GET['posi'], j'indique le numero du slide a afficher.
Merci a venegal du forum codingforums:
http://www.codingforums.com/showthread.php?t=241180
Voici le code javascript final:
<script type="text/javascript" src="<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/includ/jquery-1.3.2.min.js"></script> <script type="text/javascript"> $(document).ready(function(){ //Configuration var retour = true; var tempsTransition = 1000; var affichePlayPause = false; var lectureAutomatique = false; var tempsAttente = 6000; var icones = new Array(); icones['play'] = '<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/img/play_slider.png'; icones['pause'] = '<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/img/pause_slider.png'; var currentPosition = <?php if(isset($_GET['posi'])) { echo $_GET['posi']; } else { echo 0;} ?>; var slideWidth = 840; var slides = $('.slide'); var numberOfSlides = slides.length; var interval; var lectureEnCours = false; // Supprime la scrollbar en JS $('#slidesContainer').css('overflow', 'hidden'); // Attribue #slideInner à toutes les div .slide slides .wrapAll('<div id="slideInner"></div>') // Float left to display horizontally, readjust .slides width .css({ 'float' : 'left', 'width' : slideWidth }); // Longueur de #slideInner égale au total de la longueur de tous les slides $('#slideInner').css('width', slideWidth * numberOfSlides); // Insert controls in the DOM $('#slideshow') .prepend('<span class="control" id="leftControl">Précédent</span>') .append('<span class="control" id="rightControl">Suivant</span>'); // Hide left arrow control on first load manageControls(currentPosition); //Crée un écouteur d'évènement de type clic sur les classes .control $('.control') .bind('click', function(){ // Determine la nouvelle position currentPosition = ($(this).attr('id')=='rightControl') ? currentPosition+1 : currentPosition-1; if(currentPosition == numberOfSlides && retour == false ){ currentPosition--; pause(); } // Cache ou montre les controles manageControls(currentPosition); // Fais bouger le slide $('#slideInner').animate({ 'marginLeft' : slideWidth*(-currentPosition) },tempsTransition); }); // manageControls: Cache ou montre les flêches de controle en fonction de la position courante function manageControls(position){ // Cache la fleche "précédent" si on est sur le premier slide if(position==0){ $('#leftControl').hide() } else{ $('#leftControl').show() } // Cache la fleche "suivant" si on est sur le dernier slide (et que le retour automatique n'est pas activé) if(position==numberOfSlides-1 && retour == false){ $('#rightControl').hide(); } else { $('#rightControl').show(); } if(position == numberOfSlides && retour == true){ currentPosition = 0; $('#leftControl').hide(); } } function suivant(){ $('#rightControl').click(); } function start() { lectureEnCours = true; interval = setInterval(suivant, tempsAttente ); } function pause() { lectureEnCours = false; clearInterval(interval); } //Si le diapo est activé if(lectureAutomatique == true){ start(); } if(affichePlayPause == true){ $('#slidesContainer').prepend('<img id="navDiapo" src="" alt="Navigation diaporama" />'); if(lectureAutomatique == true){ $('#navDiapo').attr('src',icones['pause']); }else{ $('#navDiapo').attr('src',icones['play']); } $('#navDiapo').bind('click', function(){ if(lectureEnCours == true){ $(this).attr('src',icones['play']); pause(); }else{ $(this).attr('src',icones['pause']); start(); } }); } $('#slideInner').css({marginLeft: slideWidth * (-currentPosition)}); }); </script>
Alors, même chose, je suis sur de rien, mais peut etre avec cette partie du code
// Determine la nouvelle position
currentPosition = ($(this).attr('id')=='rightControl') ? currentPosition+1 : currentPosition-1;
En inversant dans le genre
// Determine la nouvelle position
currentPosition = ($(this).attr('id')=='rightControl') ? currentPosition-1 : currentPosition+1;
// Determine la nouvelle position
currentPosition = ($(this).attr('id')=='rightControl') ? currentPosition+1 : currentPosition-1;
En inversant dans le genre
// Determine la nouvelle position
currentPosition = ($(this).attr('id')=='rightControl') ? currentPosition-1 : currentPosition+1;
Bonjour,
J'arrive un peu tard, mais j'utilise aussi ce slide et je voudrais savoir si quelqu'un sais comment faire en sorte que ça défile tout seul toute les X secondes svp??
Merci d'avance.
J'arrive un peu tard, mais j'utilise aussi ce slide et je voudrais savoir si quelqu'un sais comment faire en sorte que ça défile tout seul toute les X secondes svp??
Merci d'avance.
Alors je suis pas expert en javascript, mais je suis a l'origine de ce post
Sans avoir testé je dirais qu'il faut tester du coté de cette partie du code posté plus haut
function start() {
lectureEnCours = true;
interval = setInterval(suivant, tempsAttente );
}
en remplacent TempsAttente par 3 ou 3000 si c des miliseconde
Sans avoir testé je dirais qu'il faut tester du coté de cette partie du code posté plus haut
function start() {
lectureEnCours = true;
interval = setInterval(suivant, tempsAttente );
}
en remplacent TempsAttente par 3 ou 3000 si c des miliseconde
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
et pour la direction, vous savez ou ça se trouve? Car actuellement, il défile de droite à gauche, et moi je voudrais faire le contraire: de gauche à droite
Une idée?
Une idée?
Ou encore en inversant ici:
// Insert controls in the DOM
$('#slideshow')
.prepend('<span class="control" id="leftControl">Précédent</span>')
.append('<span class="control" id="rightControl">Suivant</span>');
// Insert controls in the DOM
$('#slideshow')
.prepend('<span class="control" id="rightControl">Précédent</span>')
.append('<span class="control" id="leftControl">Suivant</span>');
// Insert controls in the DOM
$('#slideshow')
.prepend('<span class="control" id="leftControl">Précédent</span>')
.append('<span class="control" id="rightControl">Suivant</span>');
// Insert controls in the DOM
$('#slideshow')
.prepend('<span class="control" id="rightControl">Précédent</span>')
.append('<span class="control" id="leftControl">Suivant</span>');