Partage
  • Partager sur Facebook
  • Partager sur Twitter

Aide pour sliders

Ajustement de code JS

Anonyme
    29 juillet 2011 à 18:01:16

    Bonjour chers Zéros, je voulais savoir si quelqu'un savait me prêter main-forte pour résoudre un petit soucis auquel je suis confronté pour un bout de code Javascript.

    Je m'explique: j'ai utilisé du code Javascript pour ajouter un slideshow sur une page web. a la base ce code était fait pour 5 sliders mais je compte en utiliser que pour 3. Ce slideshow présente toujours le slider du milieu en premier mais lorsque j'ai mis que 2 slider cela a posé problème et le premier slider apparaissant est resté le même que pour 5 sliders.

    Pour faire plus court, sauriez-vous comment afficher le slider du milieu (Slider#2) pour mon slideshow de 3 sliders? Je vous met le code JS ci-dessous ainsi que le code css et html.

    P.s: Pour l'instant j'ai détourné le problème en supprimant le slider #1 et #5 pour qu'il n'y ait que le #2, #3 et #4 qui apparaissent.

    <div class="scrollContainer">
    	
    	<div class="panel" id="panel_1">
    						
    					</div>
              
    		  <div class="panel" id="panel_2">
    						<div class="inside">
    							<img src="images/webzines.jpg" alt="picture" />
    							<h2>News Heading</h2>
    							<p>A very short excerpt goes here... <a href="#">more link</a></p>
    						</div>
    					</div>
    
              <div class="panel" id="panel_3">
    						<div class="inside">
    							<img src="images/podcast.jpg" alt="picture" />
    							<h2>News Heading</h2>
    							<p>A very short excerpt goes here... <a href="#">more link</a></p>
    						</div>
    					</div>
    				
              <div class="panel" id="panel_4">
    						<div class="inside">
    							<img src="images/abysses.jpg" alt="picture" />
    							<h2>News Heading</h2>
    							<p>A very short excerpt goes here... <a href="#">more link</a></p>
    						</div>
    					</div>
    					
    				<div class="panel" id="panel_1">
    						
    					</div>	
    				
             </div>
    
    				<div id="left-shadow"></div>
    				<div id="right-shadow"></div>
    
           </div>
    


    * {
    	margin: 0;
    	padding: 0;
    }
    
    body { 
        font: 11px Helvetica, Arial, sans-serif;
    }
    
    
    
    #intro {
        padding-bottom: 10px;
    }
    
    #slider {
        width: 800px;
        margin: 0 auto;
        position: relative;
    	border: 10px solid #ccc;
    }
    
    .scroll {
    	overflow: hidden;
    	width: 800px;
        margin: 0 auto;
        position: relative;
    }
    
    .scrollContainer {
    	position: relative;
    }
    
    .scrollContainer div.panel {
        padding: 10px;
        width: 274px;
    	height: 318px;
    }
    
    #left-shadow {
    	position: absolute;
    	top: 0;
    	left: 0;
    	width: 12px;
    	bottom: 0;
    	background: url(../images/leftshadow.png) repeat-y;
    }
    
    #right-shadow {
    	position: absolute;
    	top: 0;
    	right: 0;
    	width: 12px;
    	bottom: 0;
    	background: url(../images/rightshadow.png) repeat-y;
    }
    
    .inside {
    	padding: 10px;
    	border: 1px solid #999;
    }
    
    .inside img {
    	display: block;
    	border: 1px solid #666;
    	margin: 0 0 10px 0;
    	width: 250px;
    }
    
    .inside h2 {
    	font-weight: normal;
    	color: #111;
    	font-size: 16px;
    	margin: 0 0 8px 0;
    }
    
    .inside p {
    	font-size: 11px;
    	color: #ccc;
    }
    
    a {
    	color: #999;
    	text-decoration: none;
    	border-bottom: 1px #ccc;
    }
    
    
    
    .scrollButtons {
        position: absolute;
        top: 127px;
        cursor: pointer;
    }
    
    .scrollButtons.left {
        left: -45px;
    }
    
    .scrollButtons.right {
        right: -45px;
    }
    
    .hide {
        display: none;
    }
    


    $(function() {
    	
    	var totalPanels			= $(".scrollContainer").children().size();
    		
    	var regWidth			= $(".panel").css("width");
    	var regImgWidth			= $(".panel img").css("width");
    	var regTitleSize		= $(".panel h2").css("font-size");
    	var regParSize			= $(".panel p").css("font-size");
    	
    	var movingDistance	    = 300;
    	
    	var curWidth			= 350;
    	var curImgWidth			= 326;
    	var curTitleSize		= "20px";
    	var curParSize			= "15px";
    
    	var $panels				= $('#slider .scrollContainer > div');
    	var $container			= $('#slider .scrollContainer');
    
    	$panels.css({'float' : 'left','position' : 'relative'});
        
    	$("#slider").data("currentlyMoving", false);
    
    	$container
    		.css('width', ($panels[0].offsetWidth * $panels.length) + 100 )
    		.css('left', "-350px");
    
    	var scroll = $('#slider .scroll').css('overflow', 'hidden');
    
    	function returnToNormal(element) {
    		$(element)
    			.animate({ width: regWidth })
    			.find("img")
    			.animate({ width: regImgWidth })
    		    .end()
    			.find("h2")
    			.animate({ fontSize: regTitleSize })
    			.end()
    			.find("p")
    			.animate({ fontSize: regParSize });
    	};
    	
    	function growBigger(element) {
    		$(element)
    			.animate({ width: curWidth })
    			.find("img")
    			.animate({ width: curImgWidth })
    		    .end()
    			.find("h2")
    			.animate({ fontSize: curTitleSize })
    			.end()
    			.find("p")
    			.animate({ fontSize: curParSize });
    	}
    	
    	//direction true = right, false = left
    	function change(direction) {
    	   
    	    //if not at the first or last panel
    		if((direction && !(curPanel < totalPanels)) || (!direction && (curPanel <= 1))) { return false; }	
            
            //if not currently moving
            if (($("#slider").data("currentlyMoving") == false)) {
                
    			$("#slider").data("currentlyMoving", true);
    			
    			var next         = direction ? curPanel + 1 : curPanel - 1;
    			var leftValue    = $(".scrollContainer").css("left");
    			var movement	 = direction ? parseFloat(leftValue, 10) - movingDistance : parseFloat(leftValue, 10) + movingDistance;
    		
    			$(".scrollContainer")
    				.stop()
    				.animate({
    					"left": movement
    				}, function() {
    					$("#slider").data("currentlyMoving", false);
    				});
    			
    			returnToNormal("#panel_"+curPanel);
    			growBigger("#panel_"+next);
    			
    			curPanel = next;
    			
    			//remove all previous bound functions
    			$("#panel_"+(curPanel+1)).unbind();	
    			
    			//go forward
    			$("#panel_"+(curPanel+1)).click(function(){ change(true); });
    			
                //remove all previous bound functions															
    			$("#panel_"+(curPanel-1)).unbind();
    			
    			//go back
    			$("#panel_"+(curPanel-1)).click(function(){ change(false); }); 
    			
    			//remove all previous bound functions
    			$("#panel_"+curPanel).unbind();
    		}
    	}
    	
    	// Set up "Current" panel and next and prev
    	growBigger("#panel_3");	
    	var curPanel = 3;
    	
    	$("#panel_"+(curPanel+1)).click(function(){ change(true); });
    	$("#panel_"+(curPanel-1)).click(function(){ change(false); });
    	
    	//when the left/right arrows are clicked
    	$(".right").click(function(){ change(true); });	
    	$(".left").click(function(){ change(false); });
    	
    	$(window).keydown(function(event){
    	  switch (event.keyCode) {
    			case 13: //enter
    				$(".right").click();
    				break;
    			case 32: //space
    				$(".right").click();
    				break;
    	    case 37: //left arrow
    				$(".left").click();
    				break;
    			case 39: //right arrow
    				$(".right").click();
    				break;
    	  }
    	});
    	
    });
    


    Merci d'avance pour votre compréhension!
    • Partager sur Facebook
    • Partager sur Twitter
      30 juillet 2011 à 1:08:24

      Bon avant de rentrer plus loin dans le détail, moi ce que je vois c'est quand dans ton html, tu as toujours 5 panels, donc 2 qui ont le même id.

      Essaye en les virant completement et en nommant les autres panel_1,2,3.

      Le script a l'air prévu pour etre dynamique sur le nombre d'éléments puisque qu'il les compte tout seul: $(".scrollContainer").children().size();

      Par contre je pense que dans le lot, il doit aussi prendre tes divs left et right puisqu'elles sont dans le meme container...
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        1 août 2011 à 1:17:29

        Merci pour ta réponse!

        Donc je fais quoi pour le script des panels?
        • Partager sur Facebook
        • Partager sur Twitter
          1 août 2011 à 17:57:14

          essaye avec un code html dans ce style

          <div class="scrollContainer">
          
               <div class="panel" id="panel_1">
                    <div class="inside">
                         <img src="images/webzines.jpg" alt="picture" />
                         <h2>News Heading</h2>
                         <p>A very short excerpt goes here... <a href="#">more link</a></p>
                    </div>
               </div>
          
               <div class="panel" id="panel_2">
                    <div class="inside">
                         <img src="images/podcast.jpg" alt="picture" />
                         <h2>News Heading</h2>
                         <p>A very short excerpt goes here... <a href="#">more link</a></p>
                    </div>
               </div>
          				
               <div class="panel" id="panel_3">
                    <div class="inside">
                         <img src="images/abysses.jpg" alt="picture" />
                         <h2>News Heading</h2>
                         <p>A very short excerpt goes here... <a href="#">more link</a></p>
                    </div>
               </div>	
          				
          </div>
          
          <div id="left-shadow"></div>
          <div id="right-shadow"></div>
          


          On verra le css après :)
          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            1 août 2011 à 20:52:23

            Oui, j'ai bien changé le code html vers ce modèle-là mais pour la suite, des idées?

            Merci encore pour ton aide.
            • Partager sur Facebook
            • Partager sur Twitter

            Aide pour sliders

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown