Dev Tips: JavaScript: Native Smooth Scrolling ⚡️

Dev Tips

 

JavaScript: Native Smooth Scrolling


A quick note from me


I'll be doing a Smashing Workshop on Testing + Browser Automation, please check it out, or their other workshops.  They've been doing some amazing work recently!


Introduction

You can smooth scroll to an element with zero dependencies. You can achieve this programmatically in JavaScript, and you can also enable smooth scrolling from CSS. Browser support is good!
 

Using JavaScript

To do this programmatically through JavaScript, use this code:

el.scrollIntoView({
    behavior: 'smooth'
})

There's actually two interesting things about that code above, yes you can smooth scroll, but secondly, turns out there's a built in method for scrolling an element into the viewport.
 

Using plain CSS

Depending on your use case, you might be able to avoid JavaScript entirely, and achieve this through CSS only:

html {
    scroll-behavior: smooth;
}

This does not affect manual scrolling performed by the user, but it will impact for example, an internal link on a page such a back to top hyperlink:

<!--
    This smooth scrolls to the top
    thanks to scroll-behavior: smooth
-->
<a href="#top">Back to top</a>

Browser support

Browser support is pretty good, but there are some limitations with Safari:


Users who prefer reduced motion

Consider using the CSS media feature: prefers-reduced-motion to toggle the 'smooth' option since not everyone wants heavy animations/transitions on a website.

@media (prefers-reduced-motion) {
    .animation {
        animation-name: none;
    }
}

As a reminder, prefers reduced motion does not mean no motion, so consider that point when altering your user experience for such users.

Here's the documentation for prefers-reduced-motion.

You can Emulate this CSS Media Feature from the Chrome DevTools Command Palette to make sure your media queries are working as expected:

  1. Use the shortcut Cmd + Shift + P
  2. Search for: reduced-motion
  3. Hit enter
Using DevTools to emulate prefers-reduced-motion


Conclusion

Hope you've learnt something new. JavaScript has lots of interesting features which aren't always obvious. If you want to look further, note that you can Automatically remove an event listener after it has executed.


See this tip online: umaar.com/dev-tips/235-smooth-scroll-into-view
 
Email Marketing Powered by Mailchimp

Copyright © 2020 Umar, All rights reserved.
You are receiving this email because you signed up for Dev Tips.

unsubscribe from this list    update subscription preferences 

Older messages

Dev Tips: DevTools: Customise Your User Agent

Thursday, July 30, 2020

Dev Tips DevTools: Customise Your User Agent Introduction You can set a custom user agent in the Network Overrides Pane. If for example, a website changes its behaviour based on the user agent (a

Dev Tips: DevTools: Tips for changing values in HTML & CSS

Thursday, July 23, 2020

Dev Tips DevTools: Tips for changing values in HTML & CSS Introduction You can easily change numeric values in DevTools. This is a handy feature for when you want to quickly prototype CSS property

Dev Tips: DevTools:️ How deactivated CSS styles works

Thursday, July 16, 2020

Dev Tips DevTools: How copying and pasting deactivated CSS styles works DevTools has some small, yet handy features when it comes to dealing with styles. If you copy some deactivated style rules, they

DevTools: Improve accessibility by emulating vision deficiencies

Friday, July 10, 2020

Dev Tips Chrome DevTools: Improve page accessibility by emulating vision deficiencies Web developer tooling to improve accessibility has improved rapidly over the years. Emulating vision deficiencies

Dev Tips: JavaScript: ⚡️ Improve the performance of your event listeners

Wednesday, July 1, 2020

Dev Tips I've been blogging more on my website, go and check it out! JavaScript: Improve the performance of your event listeners In your JavaScript code, you can automatically remove an event

You Might Also Like

💻 Issue 437 - Introducing local Azure Service Bus Emulator

Thursday, November 21, 2024

This week's Awesome .NET Weekly Read this email on the Web The Awesome .NET Weekly Issue » 437 Release Date Nov 21, 2024 Your weekly report of the most popular .NET news, articles and projects

💎 Issue 444 - Why did people rub snow on frozen feet? (2017)

Thursday, November 21, 2024

This week's Awesome Ruby Newsletter Read this email on the Web The Awesome Ruby Newsletter Issue » 444 Release Date Nov 21, 2024 Your weekly report of the most popular Ruby news, articles and

💻 Issue 444 - JavaScript Dos and Donts

Thursday, November 21, 2024

This week's Awesome JavaScript Weekly Read this email on the Web The Awesome JavaScript Weekly Issue » 444 Release Date Nov 21, 2024 Your weekly report of the most popular JavaScript news, articles

📱 Issue 438 - Reverse Engineering iOS 18 Inactivity Reboot

Thursday, November 21, 2024

This week's Awesome iOS Weekly Read this email on the Web The Awesome iOS Weekly Issue » 438 Release Date Nov 21, 2024 Your weekly report of the most popular iOS news, articles and projects Popular

💻 Issue 362 - React Anti-Pattern: Stop Passing Setters Down the Components Tree

Thursday, November 21, 2024

This week's Awesome React Weekly Read this email on the Web The Awesome React Weekly Issue » 362 Release Date Nov 21, 2024 Your weekly report of the most popular React news, articles and projects

💻 Issue 444 - Building simple event-driven applications with Pub/Sub

Thursday, November 21, 2024

This week's Awesome Node.js Weekly Read this email on the Web The Awesome Node.js Weekly Issue » 444 Release Date Nov 21, 2024 Your weekly report of the most popular Node.js news, articles and

📱 Issue 441 - Shift Left Is the Tip of the Iceberg

Thursday, November 21, 2024

This week's Awesome Swift Weekly Read this email on the Web The Awesome Swift Weekly Issue » 441 Release Date Nov 21, 2024 Your weekly report of the most popular Swift news, articles and projects

💻 Issue 439 - Async/Await Is Real And Can Hurt You

Thursday, November 21, 2024

This week's Awesome Rust Weekly Read this email on the Web The Awesome Rust Weekly Issue » 439 Release Date Nov 21, 2024 Your weekly report of the most popular Rust news, articles and projects

📲 Why I Ditched Linux for Samsung DeX — Buy This Instead of a Gaming Headset

Thursday, November 21, 2024

Also: Taking Instagram Stories to the Next Level, and More! How-To Geek Logo November 21, 2024 Did You Know Thurl Ravenscroft was both the voice behind the Christmas song "You're a Mean One,

Ranked | The World's 30 Largest Exporters 🌎

Thursday, November 21, 2024

We show the largest exporters in the world amid a surge in trade restrictions, rising populism, and shipping route disruptions. View Online | Subscribe | Download Our App 5 DAYS LEFT! Learn Visual