Estou tentando rolar 100 pixels para baixo toda vez que o usuário chega perto do topo do documento.
Tenho a função em execução quando o usuário chega perto do início do documento, mas a função .scrollTo não está funcionando.
Coloquei um alerta antes e depois para verificar se realmente era a linha ou não que o estava interrompendo e apenas o primeiro alerta dispara, aqui está o código:
alert("starting");
$.scrollTo({ top: '+=100px', left: '+=0px' }, 800);
alert("finished");
Eu sei que tenho a página jquery vinculada corretamente porque estou usando muitas outras funções jquery e todas elas funcionam bem. Também tentei remover o 'px' de cima e não parece fazer diferença.
Respostas:
Se não está funcionando, por que você não tenta usar o método scrollTop do jQuery?
Se você deseja rolar suavemente, pode usar a função javascript setTimeout / setInterval básica para fazê-la rolar em incrementos de 1px em um determinado período de tempo.
fonte
fonte
html, body
vez de apenas html?body
quebras isso no Chrome 4: stackoverflow.com/questions/1890995/…scrollTop: 0
também está funcionando bem. Mas a duração diminui. Funciona bem se definido para 1000 na velocidadejQuery agora suporta scrollTop como uma variável de animação.
Você não precisa mais setTimeout / setInterval para rolar suavemente.
fonte
$("#id").offset().top
vez disso?Para contornar o problema
html
vsbody
, resolvi isso não animando o css diretamente, mas sim chamandowindow.scrollTo();
cada etapa:Isso funciona bem sem nenhuma dificuldade de atualização, pois está usando JavaScript para vários navegadores.
Dê uma olhada em http://james.padolsey.com/javascript/fun-with-jquerys-animate/ para mais informações sobre o que você pode fazer com a função animar do jQuery.
fonte
window.pageYOffset
para$(window).scrollTop()
ewindow.scrollTo(0, val)
para,$(window).scrollTop(val)
então não preciso me preocupar com a compatibilidade do navegador.Parece que você entendeu a sintaxe um pouco errada ... Suponho, com base no seu código, que você está tentando rolar para baixo 100px em 800 ms, se sim, isso funciona (usando scrollTo 1.4.1):
fonte
Na verdade, algo como
vai funcionar bem e apoiar o preenchimento. Você também pode suportar margens facilmente - para conclusão, veja abaixo
fonte