web-dev-qa-db-fra.com

jQuery - ScrollTop sans animation

Comment puis-je utiliser le scrolltop sans animation

Ce code fonctionne:

var offTop = $('#box').offset().top;
offTop  = offTop-43;
$('#mainCt').animate({scrollTop: '+=' + offTop + 'px'}, 400);

Et voici mes (solutions qui ne fonctionnent pas):

$("#mainCt").scrollTop('+=' + offTop + 'px');                 // doesn't work
$("#mainCt").scrollTop('+='+offTop);                          // doesn't work
hhh = setTimeout(' $("#mainCt").scrollTop('+offTop+');',800); // doesn't work

DÉMO
http://jsfiddle.net/DNNFF/9/

25
user970727

peut-être si vous ne voulez pas une animation ou quelque chose d'extraordinaire, utilisez simplement une ancre

<a name="top"></a>

Placez-le là où vous devez faire défiler

et dans votre fonction où vous appelez utiliser

document.location.href="#top";

Vous pouvez également créer une fonction pour ajouter l’ancre avant l’élément, faire la chose document.location et ensuite supprimer cette ancre.

http://jsfiddle.net/fSrxr/1/

13
chepe263

Essaye ça:

var offTop = $('#box').offset().top - 43;
$('#mainCt').scrollTop(offTop);

La propriété scrollTop accepte uniquement un entier, aucun suffixe ou unité requis.

18
Rory McCrossan

Ignorer jQuery. Il suffit d'utiliser JavaScript:

window.scroll(0, 0);
11
Jeroen Flamman

http://api.jquery.com/scrollTop/

$(window).scrollTop(offTop)
10
sod

Pourquoi ne pas l'utiliser avec moins de temps? Je l'ai tripoté et il n'y avait pas d'animation. Puisqu'il n'y aura pas le temps de voir l'animation, il n'y aura aucune animation du tout.

var offTop = $('#box').offset().top;
offTop  = offTop-43;
$('#mainCt').animate({scrollTop: '+=' + offTop + 'px'}, 50); //50 added here as duartion
3

Tu ne peux pas jouer avec la durée?

var offTop = $('#box').offset().top;
offTop  = offTop-43;
$('#mainCt').delay('800').animate({scrollTop: '+=' + offTop + 'px'}, 1);
1
Mr_DeLeTeD
var offTop = $('#box').offset().top;
$(window).scrollTop(parseInt(offTop))
0
user9717345