Questo sta accadendo perché stai usando una libreria a scorrimento parallasse (Stellar.js), che fa scorrere diversi elementi a velocità diverse.
Una possibile soluzione sarebbe quella di scorrere ad una velocità più elevata quando nessun elemento è nella finestra corrente fino a che il bordo dell'elemento successivo è appena fuori dallo schermo, quindi scorrere immediatamente alla velocità di scorrimento originale finché non vi sono elementi a nuovamente il viewport e continua a ripeterlo finché non raggiungi l'offset di scorrimento desiderato.
Edit:
Spiacenti, si avvicinò mentre stavo scrivendo la mia risposta e non ho avuto il tempo di finire il codice.
Tuttavia, dopo aver lavorato su di esso per un po 'di tempo sto iniziando a pensare che la mia soluzione proposta non avrebbe funzionato. Stavo pensando qualcosa del genere:
$(window).scrollTo(640, {onAfter: function() {
var scrollRatio = 3;
var distance = 855 - 640;
$(window).scrollTo(855, {
easing: 'linear',
duration: distance * scrollRatio/speed,
onAfter: function() {
var scrollRatio = 1;
var distance = 1200 - 855;
$(window).scrollTo(1200, {
easing: 'linear',
duration: distance * scrollRatio/speed,
onAfter: function() {
var scrollRatio = 3;
var distance = 1280 - 1200;
$(window).scrollTo(1280, {
easing: 'linear',
duration: distance * scrollRatio/speed
});
}
});
}
});
}});
Se si incolla il codice precedente nel sito previsto per la questione (http://dev.du.st/field-station/), sarai portato al primo elemento, e tenterà di scorrere a il prossimo usando il metodo che ho descritto. Ho codificato i valori di offset perché stavo ancora sperimentando. Tuttavia, non penso che questo approccio funzionerebbe dal momento che non si sente ancora. Questo perché la velocità istantanea nel mezzo dell'animazione sarà sempre evidente.
In questo momento, penso che il modo migliore in cui è possibile attenuare lo scorrimento lento è che lo scorrimento di parallasse sta causando utilizzando una diversa funzione di andamento. Dopo tutto, rendere le immagini di sfondo più lente, è esattamente quello che stai usando per lo scrolling della parallasse.
Il codice seguente, quando correva nel tuo sito web, renderebbe tutte le animazioni usano 'easeOutCirc' per la loro funzione di andamento per impostazione predefinita, dopo alcuni esperimenti, ho trovato ad essere quello che fa lo scorrimento sentire almeno strano:
// Add the jQuery-easing plugin, needed for the more sophisticated easing functions.
$.getScript('//cdnjs.cloudflare.com/ajax/libs/jquery-easing/1.3/jquery.easing.min.js');
// Set easeOutCirc as the default easing.
jQuery.easing.def = 'easeOutCirc';
puoi trovare altre funzioni di andamento a this website
una volta fatto sperimentare, se si decide di utilizzare un alleggerimento (è possibile utilizzare quelli diversi per lo scorrimento su e giù), allora probabilmente si dovrebbe tenere l'attenuazione di default così com'è, e basta modificare l'andamento nell'animazione di scorrimento aggiungendo {easing: EASING_NAME}
all'hash delle opzioni nella funzione scrollTo
. Quindi il tuo codice sarà simile a questo:
$.scrollTo($($(this).attr("href")), {
duration: 750,
easing: 'easeOutCirc'
});
puoi aggiungere un violino con il codice corrente che hai? – udnisap
jsFIddle: http://jsfiddle.net/hfg2v/ - sebbene il tutorial utilizzi jQuery 1.4.1 che jsFiddle non supporta. Ecco un collegamento al mio esempio di lavoro: http://goo.gl/INbvG –
Hai considerato di animare le immagini a slidedown() mentre viene passato dalla vista di scorrimento per dare un effetto simile? Se entrambi si spostano verso il basso, l'immagine potrebbe essere visualizzata per altrettanto tempo? –