Avatar ·

Rolagem da página para cima com JavaScript: solução simples e confiável

Olá a todos! Sou novo em JavaScript e não consigo entender a rolagem da página para cima. No meu site, há uma página longa com conteúdo e quero criar um botão "Para o topo" para que os usuários possam retornar rapidamente ao início. Tentei usar `window.scrollTo(0, 0)` — funciona, mas é abrupto, sem animação. Quero uma rolagem suave. Tentei fazer com `window.scrollBy()`, mas me confundi na lógica. Também tentei o método antigo `window.scrollTo({ top: 0, behavior: 'smooth' })`, mas em alguns navegadores ele não funciona, especialmente em versões antigas do Safari. Aqui está meu código atual, que montei:
function scrollToTop() {
  window.scrollTo(0, 0);
}
O botão funciona, mas é brusco. Alguém pode me dizer como fazer uma rolagem suave que funcione em todos os navegadores modernos? E é possível adicionar uma animação com mudança de velocidade — para que comece rápido e depois desacelere? Agradeço por um exemplo com explicações. Obrigado! P.S. Não sugiram jQuery — quero