Skip to content

Smooth Animated Scrolling with JavaScript

In the past, many plugins (e.g. jQuery) have enabled the ability to cause a page to scroll down in a smooth animated fashion, rather than the sudden jarring fashion that occurs by default. This technique is often used for same-page (local) links that jump to specific sections of longform content. The following script and demo shows how you can do smooth animated in-page scrolling with plain JavaScript and no libraries or plugins.

Suppose the page has the following list of local links, followed by paragraphs of text separated by headings that have IDs that match the local links:

<ul class="links">
    <li><a href="#one">Section One</a></li>
    <li><a href="#two">Section Two</a></li>
    <li><a href="#three">Section Three</a></li>
    <li><a href="#four">Section Four</a></li>
    <li><a href="#five">Section Five</a></li>
    <li><a href="#six">Section Six</a></li>
</ul>Code language: HTML, XML (xml)

We can use the following JavaScript to enable smooth animated scrolling to the different section headings:

let btns = document.querySelectorAll('.links a'); 

for (i of btns) { 
  (function(i) { 
    i.addEventListener('click', function(e) { 
        behavior: 'smooth' 
}Code language: JavaScript (javascript)

The code above loops through all the targeted links, adding an event listener to each one and it uses the scrollIntoView() method to scroll to the specified element. The method takes an optional options object that defines the scroll behavior.

We can also include a “Scroll back to top” button that smooth-scrolls back to the top of the page:

document.querySelector('.top').addEventListener('click', function () { 
    top: 0, 
    behavior: 'smooth' 
}, false);Code language: JavaScript (javascript)

This time we’re using the scrollTo() method which can also define the scroll behavior. See the demo below for a full working example.

Note: To the best of our knowledge, the information above and the snippet are accurate and up to date. However, in case you notice something wrong, please report snippet or leave a comment below.
View all Snippets
Louis Lazaris

Inline Feedbacks
View all comments

Or start the conversation in our Facebook group for WordPress professionals. Find answers, share tips, and get help from other WordPress experts. Join now (it’s free)!

Would love your thoughts, please comment.x

Most Searched Articles

Best JavaScript Libraries and Frameworks: Try These 14 in 2024

In this post, we look at the best JavaScript libraries and frameworks to try out this year. Why? Well, with JavaScript being available in every web browser, this makes it the most accessible programming language of ...

20 Best Free WordPress Themes for 2024 (Responsive, Mobile-Ready, Beautiful)

If you're looking for only the best free WordPress themes in the market for this year, then you're in the right place. We have more than enough such themes for you right ...

12 Best WordPress Hosting Providers of 2024 Compared and Tested

Looking for the best WordPress hosting that you can actually afford? We did the testing for you. Here are 10+ best hosts on the market ...

Handpicked Articles

How to Make a WordPress Website: Ultimate Guide for All Users – Beginners, Intermediate, Advanced

Many people wonder how to make a WordPress website. They’ve heard about WordPress, its incredible popularity, excellent features and designs, and now they want to join the pack and build a WordPress website of their own. So, where does one get ...

How to Start an Ecommerce Business: Ultimate Guide for 2024

Is this going to be the year you learn how to start an eCommerce business from scratch? You’re certainly in the right place! This guide will give you a roadmap to getting from 0 to a fully functional eCommerce business. ...