Comment faire défiler vers le haut de la page avec du JavaScript/jQuery?
Est-il un moyen de contrôle de défilement du navigateur avec JavaScript/jQuery?
Quand j'ai faites défiler ma page à mi-chemin, alors déclencher un reload, je veux la page pour aller pack vers le haut, mais au contraire, il essaie de trouver la dernière position de défilement. J'ai donc fait ceci:
$('document').ready(function() {
$(window).scrollTop(0);
});
Mais pas de chance.
MODIFIER:
Donc à la fois de vos réponses a travaillé quand je les appelle, après le chargement de la page-Merci. Cependant, si je viens de faire un refresh sur la page, on dirait que le navigateur calcule et défile à son ancienne position de défilement APRÈS la .ready
événement (j'ai testé le body onload() fonction trop).
De sorte que le suivi est, est-il un moyen pour EMPÊCHER le navigateur de défilement à son passé de position, ou de re-faites défiler vers le haut APRÈS avoir fait sa chose?
- Ce qui se passe quand vous la faites à partir de $(window).load() ?
- Excellente idée! ... mais juste essayé et le rouleau de réglage arrive encore après. Merci pour l'astuce, bien que, il aide réellement à une autre question de la mienne: stackoverflow.com/questions/4210829/.... Si vous voulez répondre à celui-là que je vais vous donner quelques ups.
Vous devez vous connecter pour publier un commentaire.
De la croix-navigateur, JavaScript solution:
$(window).one("scroll",function() { /* the code from my answer here */ });
Vous presque obtenu, vous devez définir la
scrollTop
surbody
, paswindow
:EDIT:
Peut-être que vous pouvez ajouter un blanc d'ancrage en haut de la page:
'html','body'
comme les navigateurs modernes de défilement de base sur le corps, mais IE8 et ci-dessous ne seront faites défiler avec 'html','body'La suite de jquery solution qui fonctionne pour moi:
Ici est un pur JavaScript animation de défilement de la version pour non-jQuery livres 😀
Et puis:
requestAnimationStep
au lieu desetTimeout
. Aussi il ne répond pas à l'OP de la question.Mise à JOUR
Aller en haut de la page avec un effet de défilement est un peu plus facile en javascript maintenant avec:
https://developer.mozilla.org/en-US/docs/Web/API/Window/scroll
ATTENTION
Nous avons été à l'aide dans nos projets les plus récents, mais je viens de vérifier le mozilla doc maintenant alors que la mise à jour de ma réponse et je crois qu'il a été mis à jour. Actuellement, la méthode est
window.scroll(x-coord, y-coord)
et ne fait pas mention ou de montrer des exemples d'utilisation de laobject
paramètre vous permet de régler lesbehavior
àsmooth
. Je viens d'essayer le code et il fonctionne toujours en chrome et firefox, et le paramètre d'objet est toujours dans le spec.Donc l'utiliser avec prudence, ou vous pouvez utiliser cette Polyfill. À côté de défilement vers le haut, ce polyfill gère également d'autres méthodes:
window.scrollBy
,element.scrollIntoView
, etc.VIEILLE RÉPONSE
C'est notre vanille
javascript
mise en œuvre. Il a un simple effet d'accélération, de sorte que l'utilisateur n'obtient pas choqué après avoir cliqué sur le À Haut bouton.Son très petit et devient encore plus petit quand minimisé. Les Devs vous cherchez une alternative à la méthode jquery mais que vous voulez les mêmes résultats peuvent l'essayer.
JS
HTML
Cheers!
Cela fonctionne pour moi:
Utilise une courte
setTimeout
à l'intérieur de laonload
pour donner le navigateur est une chance de faire les faire défiler.Vous pouvez utiliser avec jQuery
Utiliser la fonction suivante
Ici xpos est Nécessaire. Les coordonnées pour faire défiler, le long de l'axe des x (horizontal), en pixels
ypos est également Nécessaire. Les coordonnées pour faire défiler, le long de l'axe des y (vertical), en pixels
Utiliser Cette
Le code suivant fonctionne dans Firefox, Chrome et Safari, mais je n'ai pas pu tester cela dans Internet Explorer. Quelqu'un peut-il tester, puis de modifier ma réponse ou un commentaire sur elle?
Mon pur (animés) de Javascript solution:
Explication:
window.scrollY
est une variable maintenu par le navigateur de la quantité de pixels à partir du haut que la fenêtre a été défile à l'.window.scrollTo(x,y)
est une fonction qui permet de faire défiler la fenêtre d'une quantité spécifique de pixels sur l'axe des x et sur l'axe des y.Ainsi,
window.scrollTo(0,window.scrollY-20)
déplace la page 20 pixels vers le haut.La
setTimeout
appelle la fonction de nouveau dans les 10 millisecondes afin que nous puissions ensuite le déplacer à un autre de 20 pixels (animé), et leif
instruction vérifie si nous avons encore besoin de faire défiler la liste.Pourquoi ne pas simplement utiliser certains de référence de l'élément au tout début de votre fichier html, comme
et puis, quand le chargement de la page, il suffit de faire
Si le navigateur parchemins après cette fonction feux, il vous suffit de faire
De la croix-navigateur faire défiler vers le haut:
De la croix-navigateur, faites défiler jusqu'à un élément avec l'id = div_id:
Pour répondre à vos édité en question, vous pouvez enregistrer le
onscroll
gestionnaire de la sorte:Cela fera en sorte que la première tentative de défilement (qui est probablement l'automatique fait par le navigateur) sera annulé.
Si vous êtes dans quircks mode (merci @Niet de l'Obscurité Absol):
Si vous êtes en mode strict:
Pas besoin de jQuery ici.
Cela fonctionne:
Dans mon cas, le corps n'a pas travaillé:
Mais HTML travaillé:
'html','body'
comme les navigateurs modernes FF,Chrome défilement en se basant sur le corps, mais IE8 et ci-dessous ne seront faites défiler avec'html','body'
Combinaison de ces deux m'a aidé. Aucune des autres réponses m'ont aidé depuis que j'ai eu un sidenav qui n'était pas le défilement.
sans animation, tout
scroll(0, 0)
(vanilla JS)Si quelqu'un utilise angulaire et la conception de matériel sidenav. Cela va vous envoyer vers le haut de la page:
Seeint le hachage devrait faire le travail. Si vous avez un en-tête, vous pouvez utiliser
sinon, le seul travail
Et comme il obtenir de l'écrit dans l'url, il va rester si vous actualiser.
En fait, vous n'avez pas un événement JavaScript pour ça, si vous voulez le faire sur un événement onclick, vous devez juste mettre un lien autour de vous de l'élément et de le donner # dans le href.
D'abord ajouter un blanc d'ancrage de la balise à l'endroit où vous voulez aller
Maintenant ajouter une fonction dans la section d'en-tête
enfin ajouter un événement onload de la balise body
Une version générique fonctionne pour tout X et Y de la valeur, et est la même que la fenêtre.scrollTo api, juste avec le plus de scrollDuration.
*Une version générique correspondant à la fenêtre.scrollTo navigateur api**