Ir para o topo da página usando JavaScript / jQuery?

eu tenho um {[[0]} na página, quando este botão é pressionado, um <div> escondido é mostrado usando jQuery.

como é que eu desligo para o topo da página usando um comando JavaScript/jQuery nessa função? É desejável mesmo que a barra de pergaminho salta instantaneamente para o topo. Não estou à procura de uma rolagem suave.

Author: Termininja, 2009-07-17

30 answers

Se você não precisa da mudança para animar, então você não precisa usar quaisquer plugins especiais - Eu apenas usaria a janela nativa JavaScript.método scrollTo -- passando em 0,0 irá deslocar a página para o topo esquerdo instantaneamente.

window.scrollTo(x-coord, y-coord);

Parâmetros

  • x-coord é o pixel ao longo do eixo horizontal.
  • y-coord é o pixel ao longo do eixo vertical.
 1800
Author: daniellmb, 2014-06-27 15:10:52

Se queres deslizar suavemente, tenta algo assim:

$("a[href='#top']").click(function() {
  $("html, body").animate({ scrollTop: 0 }, "slow");
  return false;
});

Isso vai levar qualquer marca <a> cuja href="#top" e torná-la suave rolar para o topo.

 1201
Author: Mark Ursino, 2011-03-17 23:27:49

Tente isto para se deslocar no topo

<script>
 $(document).ready(function(){
    $(window).scrollTop(0);
});
</script>
 134
Author: mehmood, 2017-03-01 13:00:52
Não precisas do jQuery para fazer isto. Uma tag HTML padrão será suficiente...
<div id="jump_to_me">
    blah blah blah
</div>

<a target="#jump_to_me">Click Here To Destroy The World!</a>
 88
Author: Mathew, 2009-07-17 18:51:12
Todas estas sugestões funcionam bem para várias situações. Para aqueles que encontram esta página através de uma pesquisa, pode-se também dar Esta uma tentativa. JQuery, sem plug-in, role to element.
$('html, body').animate({
    scrollTop: $("#elementID").offset().top
}, 2000);
 50
Author: D.Alexander, 2012-04-23 09:53:12

Rolo suave, javascript puro:

(function smoothscroll(){
    var currentScroll = document.documentElement.scrollTop || document.body.scrollTop;
    if (currentScroll > 0) {
         window.requestAnimationFrame(smoothscroll);
         window.scrollTo (0,currentScroll - (currentScroll/5));
    }
})();
 32
Author: wake-up-neo, 2015-05-29 10:49:04
<script>

  $("a[href='#top']").click(function() {
     $("html, body").animate({ scrollTop: 0 }, "slow");
     return false;
  });
</script>

Em html

<a href="#top">go top</a>
 26
Author: hasancse016, 2014-02-14 16:44:35

Se quiser fazer a rolagem suave, por favor tente isto:

$("a").click(function() {
     $("html, body").animate({ scrollTop: 0 }, "slow");
     return false;
});

Outra solução é a janela de JavaScript.método de posicionamento:

 window.scrollTo(x-value, y-value);

Parâmetros:

  • o valor x é o pixel ao longo do eixo horizontal.
  • o valor em y é o pixel ao longo do eixo vertical.
 23
Author: Gaurang Sondagar, 2017-09-11 10:37:41

Com window.scrollTo(0, 0); é muito rápido
então eu tentei o exemplo de Mark Ursino, mas no cromado nada acontece
e encontrei isto.

$('.showPeriodMsgPopup').click(function(){
    //window.scrollTo(0, 0);
    $('html').animate({scrollTop:0}, 'slow');//IE, FF
    $('body').animate({scrollTop:0}, 'slow');//chrome, don't know if Safari works
    $('.popupPeriod').fadeIn(1000, function(){
        setTimeout(function(){$('.popupPeriod').fadeOut(2000);}, 3000);
    });
});

Testou todos os 3 navegadores e funciona
estou a usar o modelo css
isto é quando um cliente clica no botão" Livro agora " e não tem o período de aluguer seleccionado, move-se lentamente para o topo onde estão os calendários e abre uma janela que aponta para os 2 campos, depois do 3sec desaparece

 21
Author: Luiggi ZAMOL, 2013-06-24 12:05:46

A Lote de apoio os utilizadores recomendam a selecção das marcas de html e de corpo para compatibilidade com o navegador cruzado, como por exemplo:

$('html, body').animate({ scrollTop: 0 }, callback);
Isto pode fazer-te tropeçar, se só estás a contar com o teu callback uma vez. Ele vai de fato funcionar duas vezes porque você selecionou dois elementos.

Se isso é um problema para ti, podes fazer algo assim:

function scrollToTop(callback) {
    if ($('html').scrollTop()) {
        $('html').animate({ scrollTop: 0 }, callback);
        return;
    }

    $('body').animate({ scrollTop: 0 }, callback);
}

A razão pela qual isto funciona é no Chrome $('html').scrollTop() devolve 0, mas não em outros navegadores, como Graca.

Se não quiser esperar que a animação termine no caso de a barra de posicionamento já estar no topo, tente isto:

function scrollToTop(callback) {
    if ($('html').scrollTop()) {
        $('html').animate({ scrollTop: 0 }, callback);
        return;
    }

    if ($('body').scrollTop()) {
        $('body').animate({ scrollTop: 0 }, callback);
        return;
    }

    callback();
}
 21
Author: David Kennedy, 2017-05-23 11:54:59

Realmente estranho: esta pergunta está activa há cinco anos e ainda não há nenhuma resposta de vanilla JavaScript para animar a rolagem ... então aqui vai:

var scrollToTop = window.setInterval(function() {
    var pos = window.pageYOffset;
    if ( pos > 0 ) {
        window.scrollTo( 0, pos - 20 ); // how far to scroll on each step
    } else {
        window.clearInterval( scrollToTop );
    }
}, 16); // how fast to scroll (this equals roughly 60 fps)

Se quiser, pode embrulhar isto numa função e chamá-lo através do atributo onclick. Verifique isto jsfiddle

Nota: Esta é uma solução muito básica e talvez não a mais eficaz. Um exemplo muito elaborado pode ser encontrado aqui: https://github.com/cferdinandi/smooth-scroll
 19
Author: AvL, 2014-10-02 10:00:53

O velho #top pode fazer o truque

document.location.href = "#top";

Funciona bem em FF, IE e cromado

 16
Author: pollirrata, 2014-12-01 02:29:07

Tenta isto

<script>
    $(window).scrollTop(100);
</script>
 13
Author: Renjith, 2011-12-01 06:59:01

$(document).scrollTop(0); também funciona.

 13
Author: Hari Ganesan, 2012-07-31 20:53:52
<script>
$(function(){
   var scroll_pos=(0);          
   $('html, body').animate({scrollTop:(scroll_pos)}, '2000');
});
</script>

Editar:

$('html, body').animate({scrollTop:(scroll_pos)}, 2000);
 12
Author: Kamlesh, 2018-10-08 06:08:50

Solução Não-jQuery / JavaScript puro:

document.body.scrollTop = document.documentElement.scrollTop = 0;
 10
Author: tfont, 2014-01-30 16:25:04

Isto vai funcionar.:

window.scrollTo(0, 0);

 9
Author: Santosh Jadi, 2018-04-19 05:13:56

Tenta este código:

$('html, body').animate({
    scrollTop: $("div").offset().top
}, time);

Div = > Dom elemento onde deseja mover o pergaminho.

Tempo = > milisegundos, define a velocidade do pergaminho.

 8
Author: Wasif Ale, 2017-08-08 07:42:55

Porque é que não usas o scrollTop da função JQuery inbuilt:

$('html, body').scrollTop(0);//For scrolling to top

$("body").scrollTop($("body")[0].scrollHeight);//For scrolling to bottom
Curto e simples!
 7
Author: Sandeep Gantait, 2016-03-20 09:42:31

$(".scrolltop").click(function() {
  $("html, body").animate({ scrollTop: 0 }, "slow");
  return false;
});
.section{
 height:400px;
}
.section1{
  background-color: #333;
}
.section2{
  background-color: red;
}
.section3{
  background-color: yellow;
}
.section4{
  background-color: green;
}
.scrolltop{
  position:fixed;
  right:10px;
  bottom:10px;
  color:#fff;
}
<html>
<head>
<title>Scroll top demo</title>
<script src="https://code.jquery.com/jquery-3.3.1.js"></script>
</head>
<body>
<div class="content-wrapper">
<div class="section section1"></div>
<div class="section section2"></div>
<div class="section section3"></div>
<div class="section section4"></div>
<a class="scrolltop">Scroll top</a>
</div>

</body>
</html>
 7
Author: arvinda kumar, 2018-07-14 07:45:01
Não precisas de perguntas. Simplesmente você pode chamar o script
window.location = '#'

Ao clicar no botão "Ir para o topo"

Amostra demo:

Output.jsbin.com/fakumo#

PS: não use esta abordagem, quando você está usando bibliotecas modernas como angularjs. Isso pode ter quebrado a URL hashbang.

 6
Author: Sriramajeyam Sugumaran, 2016-07-25 15:01:07

Você poderia simplesmente usar um alvo do seu link, como #someid, onde # someid é o id do div.

Ou, você poderia usar qualquer número de plugins rolantes que tornam isto mais elegante.

Http://plugins.jquery.com/project/ScrollTo é um exemplo.

 5
Author: ScottE, 2009-07-17 18:09:20

Basta usar este programa para deslocar para o topo directo.

<script>
$(document).ready(function(){
    $("button").click(function(){
        ($('body').scrollTop(0));
    });
});
</script>
 5
Author: Gayashan Perera, 2017-09-27 11:31:35

Podes tentar usar JS como neste Violino http://jsfiddle.net/5bNmH/1/

Adicione o botão "Ir para o topo" no rodapé da sua Página:

<footer>
    <hr />
    <p>Just some basic footer text.</p>
    <!-- Go to top Button -->
    <a href="#" class="go-top">Go Top</a>
</footer>
 4
Author: asertym, 2014-02-01 19:35:47
Se não quiser deslizar suavemente, pode fazer batota e parar a animação assim que a iniciar... assim:
   $(document).ready(function() {
      $("a[href='#top']").click(function() {
          $("html, body").animate({ scrollTop: 0 }, "1");              
          $('html, body').stop(true, true);

          //Anything else you want to do in the same action goes here

          return false;                              
      });
  });
Não faço ideia se é recomendado / permitido, mas funciona:) Quando usarias isto? Não tenho certeza, mas talvez quando você quer usar um clique para animar uma coisa com Jquery, mas fazer outra sem animação? ie abrir um painel de autenticação de 'slide-in' no topo da página, e saltar instantaneamente para o topo para ver ele.
 4
Author: Jon Story, 2014-06-23 18:18:05
function scrolltop() {

    var offset = 220;
    var duration = 500;

    jQuery(window).scroll(function() {
        if (jQuery(this).scrollTop() > offset) {
            jQuery('#back-to-top').fadeIn(duration);
        } else {
            jQuery('#back-to-top').fadeOut(duration);
        }
    });

    jQuery('#back-to-top').click(function(event) {
        event.preventDefault();
        jQuery('html, body').animate({scrollTop: 0}, duration);
        return false;
    });
}
 4
Author: Mardzis, 2014-11-21 21:11:32
Nenhuma das respostas acima funcionará no SharePoint 2016. Tem de ser assim: https://sharepoint.stackexchange.com/questions/195870/
var w = document.getElementById("s4-workspace");
w.scrollTop = 0;
 4
Author: jeancallisti, 2018-02-14 12:21:15

Motivação

Esta solução simples funciona nativamente e implementa um pergaminho suave para qualquer posição.

Em Que evita o uso de links âncora (aqueles com #) que, na minha opinião, são úteis quando se deseja criar um link para uma seção, mas não são tão confortáveis em algumas situações, especialmente quando a apontar para cima, o que poderia levar a duas diferentes URLs apontando para o mesmo local (http://www.example.org e http://www.example.org/#).

Solução

Coloque um id na etiqueta para a qual deseja deslocar, por exemplo a sua primeira secção , que responde a esta pergunta, mas o id pode ser colocado em toda a parte da página.

<body>
  <section id="top">
    <!-- your content -->
  </section>
  <div id="another"><!-- more content --></div>

Então, como um botão, você pode usar uma ligação, basta editar o atributo onclick com um código como este.

<a onclick="document.getElementById('top').scrollIntoView({ behavior: 'smooth', block: 'start', inline: 'nearest' })">Click me</a>

Onde o argumento de document.getElementById é o id da marca que você quer rolar para depois do clique.

 4
Author: Gianluca Casati, 2018-05-09 08:57:29

Active todo o navegador. Boa sorte.

var process;
        var delay = 50; //milisecond scroll top
        var scrollPixel = 20; //pixel U want to change after milisecond
        //Fix Undefine pageofset when using IE 8 below;
        function getPapeYOfSet() {
            var yOfSet = (typeof (window.pageYOffset) === "number") ? window.pageYOffset : document.documentElement.scrollTop;
            return yOfSet;
        }



        function backToTop() {
            process = setInterval(function () {
                var yOfSet = getPapeYOfSet();
                if (yOfSet === 0) {
                    clearInterval(process);
                } else {
                    window.scrollBy(0, -scrollPixel);
                }
            }, delay);
        }
 3
Author: Anh Tran, 2015-10-19 03:22:13

Tenta isto

<script>
  $(function(){
   $('a').click(function(){
    var href =$(this).attr("href");
   $('body, html').animate({
     scrollTop: $(href).offset().top
     }, 1000)
  });
 });
 </script>
 3
Author: Eugeni Bejan, 2015-12-27 22:18:06