Skip to content

Instantly share code, notes, and snippets.

@ricardozea
Last active October 28, 2022 08:44
Show Gist options
  • Star 43 You must be signed in to star a gist
  • Fork 7 You must be signed in to fork a gist
  • Save ricardozea/abb9f98a19f6d04a0269 to your computer and use it in GitHub Desktop.
Save ricardozea/abb9f98a19f6d04a0269 to your computer and use it in GitHub Desktop.
Smooth scroll to top of page
<body id="top">
<a href="#top" onclick="scrollToTop();return false">Back to Top &uarr;</a>
function scrollToTop() {
var position =
document.body.scrollTop || document.documentElement.scrollTop;
if (position) {
window.scrollBy(0, -Math.max(1, Math.floor(position / 10)));
scrollAnimation = setTimeout("scrollToTop()", 30);
} else clearTimeout(scrollAnimation);
}

Visit the new improved script here! Smooth scroll to top of page (Improved!)


Smooth scroll to top of page (Legacy!)

If you need a plain JavaScript function to add a smooth scrolling back to the top of the page, you can use this script.

  1. Add an id of "top" to the <body> tag. Like this: <body id="top">
  2. Add the onclick function to the link. Like this: <a href="#top" onclick="scrollToTop(); return false">Back to Top ↑</a>
  3. Then either:
  • Include the JavaScript function in your markup, preferrably at the bottom before the closing </body> tag if possible.
  • Or, create a JavaScript file, place the script in it and call that file from your HTML document (either from the </head> section, or before the closing </body> tag if possible.)

Since this script is not part of the UI it can load last and will not negatively affect the user experience or usability of the page.

CodePen demo here: https://codepen.io/ricardozea/pen/5f756e303d5adc25ca3876e6a81c9e57

Author: Marco Del Corno - http://thewebthought.blogspot.com/2012/06/javascript-smooth-scroll-to-top-of-page.html

@ricardozea
Copy link
Author

No problem at all Leo. In fact, I should be the one apologizing for not understanding your point off the bat in the first place, haha.

With that said, your question merits implementation, that's a HUGE UX win if you ask me. So I'm asking for help to see if we can get your suggestion/functionality added.

Stay tunned…

@ricardozea
Copy link
Author

Update 5/25/21

There's a new, improved version of this functionality! Check it out here: https://gist.github.com/ricardozea/ec045dfb5bdd1df6f22015ee25d649a8

--

The script in this Gist is no longer the recommended way to add smooth scrolling. I'm leaving this page available for reference only.

Thank you everyone!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment