Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    script start al click e auto

    Ciao a tutti


    Ho un carosello che scorre in orizzontale le varie slide e funziona bene
    codice:
    <script type="text/javascript">
    $(document).ready(function(){
      var currentPosition = 0;
      var slideWidth = 980;
      var slides = $('.slide');
      var numberOfSlides = slides.length;
    
      // Remove scrollbar in JS
      $('#slidesContainer').css('overflow', 'hidden');
    
      // Wrap all .slides with #slideInner div
      slides
        .wrapAll('<div id="slideInner"></div>')
        // Float left to display horizontally, readjust .slides width
    	.css({
          'float' : 'left',
          'width' : slideWidth
        });
    
      // Set #slideInner width equal to total width of all slides
      $('#slideInner').css('width', slideWidth * numberOfSlides);
    
      // Insert controls in the DOM
      $('#slideshow')
        .prepend('<span class="control" id="leftControl">Clicking moves left</span>')
        .append('<span class="control" id="rightControl">Clicking moves right</span>');
    
      // Hide left arrow control on first load
      manageControls(currentPosition);
    
      // Create event listeners for .controls clicks
      $('.control')
        .bind('click', function(){
        // Determine new position
    	currentPosition = ($(this).attr('id')=='rightControl') ? currentPosition+1 : currentPosition-1;
        
    	// Hide / show controls
        manageControls(currentPosition);
        // Move slideInner using margin-left
        $('#slideInner').animate({
          'marginLeft' : slideWidth*(-currentPosition)
        });
      });
    
      // manageControls: Hides and Shows controls depending on currentPosition
      function manageControls(position){
        // Hide left arrow if position is first slide
    	if(position==0){ $('#leftControl').hide() } else{ $('#leftControl').show() }
    	// Hide right arrow if position is last slide
        if(position==numberOfSlides-1){ $('#rightControl').hide() } else{ $('#rightControl').show() }
      }	
    });
    </script>

    Mi è stato chiesto di poter avviare lo slide in automatico oltre che utilizzare i bottoni per passare da una slide all'altra, come posso integrare questo "automatismo" al caricamento pagina?
    Tanto...lo fanno tutti... posso farlo anche io vero?

  2. #2
    up
    Tanto...lo fanno tutti... posso farlo anche io vero?

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    lancia l'animazione, che viene eseguita al click , al caricamento della pagina con un setInterval

  4. #4

    Grazie per la risposta Vindav

    codice:
        setInterval(function() {
              $('#slideInner').animate();
        }, 2000);
    mi sa che però non è quella giusta
    Tanto...lo fanno tutti... posso farlo anche io vero?

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    beh è ovvio che non è cosi semplice, la strada da seguire è quella che ti ho indicato, poi sta a te integrarla con il tuo script... altrimenti spera che qualche utente abbia voglia di prendersi la briga di modificartelo

  6. #6
    Ok grazie Vindav
    Mo faccio delle prove

    spero di non diventare -->
    Tanto...lo fanno tutti... posso farlo anche io vero?

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    ho buttato giù una bozza al volo, non funzionerà al 99% , però puoi prenderlo come spunto...

    codice:
    setInterval(function(){
      currentPosition++;  
      manageControls(currentPosition);
      $('#slideInner').animate({
        'marginLeft' : slideWidth*(-currentPosition)
      });
    },2000);

  8. #8
    a dire il vero funziona

    bisogna sistemarla perchè:
    - quando uso i pulsanti tale movimento a tempo continua ad interagire
    - quando finisce il carosello non riparte dalla prima

    cmq grazie ancora per la buona strada
    Tanto...lo fanno tutti... posso farlo anche io vero?

  9. #9
    vindav
    prendendo spunto dal tuo ho fatto
    codice:
    var loop=0;
    function rotate()
    {
    setTimeout(function(){
    $('#rightControl').click();
    loop++;
    if (loop<numberOfSlides-1)rotate();
    }
    ,1000);
    }
    rotate();
    ora all'ultimo si ferma... mi manca il tornare al primo e l'esclusione del timeout alla pressione del bottone per cambiare slide
    Tanto...lo fanno tutti... posso farlo anche io vero?

  10. #10
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    per bloccare il timeout usa clearTimeout al click di un bottone... per tornare al primo dovrebbe bastare azzerare il contatore.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.