2013-02-16 22 views
27

Sto facendo un sito Web di parallasse e vorrei far scorrere la pagina più agevolmente con la rotellina del mouse per una migliore esperienza utente. Il miglior esempio che ho potuto ottenere è stato questo sito web: http://www.milwaukeepolicenews.com/#menu=home-page Sarebbe bello se potessi ottenere qualcosa di simile a questo nel mio sito web, lo scorrimento verticale scorrevole e l'inerzia di scorrimento.jquery vertical mousewheel scroll scrolling

Ho notato che stanno usando la rotella di jQuery di Brandon Aaron che è molto leggera ma sono solo un principiante e non posso farlo funzionare da solo.

Inoltre ho notato questo nelle loro MPD-parallax.js:

jQuery(window).mousewheel(function(event, delta, deltaX, deltaY){ 
     if(delta < 0) page.scrollTop(page.scrollTop() + 65); 
     else if(delta > 0) page.scrollTop(page.scrollTop() - 65); 
     return false; 
    }) 

Grazie!

EDIT

Sono quasi. Dai un'occhiata a questo violino: http://jsfiddle.net/gmelcul/cZuym/ Basta aggiungere un metodo di andamento per scorrere proprio come il sito web della Polizia di Milwaukee.

+0

Visualizza ciò che avete provato finora - è difficile dare suggerimenti altrimenti. –

+0

Ha davvero bisogno di attenuazione, è un po 'a scatti in Firefox e Chrome, ma stranamente funziona estremamente bene e liscio in IE10. –

+0

Possibile duplicato: http://stackoverflow.com/questions/9142490/smooth-scrolling-easing-effect-with-mouse-wheel?lq=1 –

risposta

11

Qui ci sono due jsfiddles - uno con la sceneggiatura e una senza di essa in modo da poter confrontare:

JavaScript utilizzando il jQuery mousewheel plugin:

$(document).ready(function() { 
    var page = $('#content'); // set to the main content of the page 
    $(window).mousewheel(function(event, delta, deltaX, deltaY){ 
     if (delta < 0) page.scrollTop(page.scrollTop() + 65); 
     else if (delta > 0) page.scrollTop(page.scrollTop() - 65); 
     return false; 
    }) 
}); 

Confronta i due. Da quello che posso dire, lo script rallenta la rotellina del mouse in modo che richieda più giri fisici per scorrere alla stessa distanza che senza lo script. Potrebbe risultare più agevole a causa di uno scorrimento più lento (e potrebbe essere più agevole in quanto è probabilmente più semplice sull'unità grafica).

+0

Capito, grazie Cymen! –

+0

@gigimelcul Cool, si prega di accettare se funziona per voi (segno di spunta verde)! – Cymen

+2

Puoi farlo scorrere usando anche i tasti freccia (e sarebbe più facile da usare scorrere usando i tasti freccia e la rotella del mouse). http://jsfiddle.net/aVvQF/4/ –

4

Check out skrollr. È un plugin per creare l'effetto di parallasse. Ha opzioni quando si inizializza il plugin per attivare lo scorrimento uniforme:

var s = skrollr.init({ 
    smoothScrolling: true, 
    smoothScrollingDuration: 1800 
}); 
+0

alla ricerca di un lungo .... grazie .... – Hareesh

+0

Questo sembra promettente. Grazie! – OMA

3

Ho trovato questo plugin, ha alcune opzioni piacevoli e funziona su tutti i principali dispositivi http://areaaperta.com/nicescroll/

+0

Fa molto più che lisciare il processo di scorrimento. Aggiunge anche una bella barra di scorrimento personalizzata alla pagina. Contro: più lento di altre implementazioni più semplici per lo scorrimento uniforme e anche un po 'più pesante di dimensioni. – BlackPanther

+0

Non liscio affatto. Fa tremare la pagina mentre scorri. Assolutamente orribile! –

4

hey ho avuto un altro ressource qui che è davvero semplice da usare smoothwheel

Abilita un'animazione scroll scorrevole su rotellina del mouse su tutti i dispositivi e funziona perfettamente!

+0

Sfortunatamente, né la demo sul sito SmoothWheel né la "demo di lavoro" che si collega alla fine funzionano affatto in Chrome 39. Lo scorrimento è ancora il normale salto di blocchi quando si sposta la rotella di una tacca. La libreria "skrollr" sopra menzionata, d'altra parte, funziona in Chrome 39 – OMA

9

so che è un post molto vecchio, ma qui è una buona soluzione che ho fatto:

function handle(delta) { 
    var animationInterval = 20; //lower is faster 
    var scrollSpeed = 20; //lower is faster 

    if (end == null) { 
    end = $(window).scrollTop(); 
    } 
    end -= 20 * delta; 
    goUp = delta > 0; 

    if (interval == null) { 
    interval = setInterval(function() { 
     var scrollTop = $(window).scrollTop(); 
     var step = Math.round((end - scrollTop)/scrollSpeed); 
     if (scrollTop <= 0 || 
      scrollTop >= $(window).prop("scrollHeight") - $(window).height() || 
      goUp && step > -1 || 
      !goUp && step < 1) { 
     clearInterval(interval); 
     interval = null; 
     end = null; 
     } 
     $(window).scrollTop(scrollTop + step); 
    }, animationInterval); 
    } 
} 

prova è: http://jsfiddle.net/y4swj2ts/3/