2015-04-21 7 views
5

Sto utilizzando fullpage.js e mi chiedevo come avrei potuto evitare l'utente di scorrere di nuovo alla diapositiva iniziale (prima) dopo averlo passato oltre?Previene lo scorrimento indietro fino alla prima diapositiva dopo lo scorrimento passato

Desidero ancora essere in grado di scorrere tra tutte le diapositive successive come previsto, ma essenzialmente rimuovere la prima diapositiva una volta passato in modo che non possa essere scrollata di nuovo (in pratica facendo la seconda diapositiva la prima, come se la prima fosse non più là).

Speriamo che questo abbia senso? La prima diapositiva è fondamentalmente una diapositiva di introduzione/video e la voglio solo mostrata sul caricamento iniziale della pagina, quindi dopo averla fatta scorrere per non essere più accessibile.

risposta

1

Basta usare setAllowScrolling ogni volta che si arriva al 2 ° sezione:

$('#fullpage').fullpage({ 
    afterLoad: function(anchorLink, index){ 
     //on load section 2... 
     if(index == 2){ 
      $.fn.fullpage.setAllowScrolling(false, 'up'); 
     }else{ 
      $.fn.fullpage.setAllowScrolling(true, 'up'); 
     } 
    } 
}); 

Demo online

+0

Oh, bello! Stavo pensando di usarlo, ma pensavo che avrebbe impedito di scorrere da qualsiasi diapositiva. Mi piace come l'hai fatto. Grazie! – shparkison

+0

Eh? La demo non funziona, almeno, su Chrome 42. –

+0

Funziona se usi una scroll con il mouse o scorri con il dito. Non funzionerà con le frecce della tastiera se è questo che intendi. – Alvaro

1

MODIFICA: Si scopre che questo non funziona. Sto indagando, la risposta accettata non funziona però, almeno su Chrome 42. Ho lodged a bug report.

Secondo the documentation, è possibile registrare uno onLeave callback. Dovresti essere in grado di utilizzarlo per .remove() la diapositiva in alto quando scorri verso il basso. La soluzione sarebbe simile a questa:

<div class="section"> 
    <div class="slide" data-anchor="slide1"> Slide 1 </div> 
    <div class="slide" data-anchor="slide2"> Slide 2 </div> 
    <div class="slide" data-anchor="slide3"> Slide 3 </div> 
    <div class="slide" data-anchor="slide4"> Slide 4 </div> 
</div> 
<script> 
    $('.section').fullpage({ 
     onLeave: function(index, nextIndex, direction) {  
      if (index == 1) { 
       $(this).remove(); 
      } 
     } 
    }); 
</script> 

Questo è tutto theroetical come non ho mai usato fullpage.js (sembra pulito però) e non hanno quindi testato questo.

+0

Bella idea! Non pensavo di rimuovere completamente l'elemento. Darò questo e riferirei se funziona. Grazie per l'input. – shparkison

+0

@shparkison, beh potresti '.css ('display', 'none')', ma quello sembrava meno elegante. –

+0

Hmmm ... nessuna di queste soluzioni sembra funzionare. Sembrava un buon concetto, ma nuota completamente lo scrolling e finisce per disabilitare tutte le sezioni. Ho anche provato a chiamare la funzione '.reBuild();' dopo aver rimosso la diapositiva, ma ancora senza fortuna. – shparkison