JAVASCRIPT

Smoothly Scroll to an Element in View

Implement smooth scrolling to any HTML element on a webpage using `scrollIntoView()` with behavior options, enhancing user navigation and overall experience.

function scrollToElement(elementId, offset = 0) {
  const targetElement = document.getElementById(elementId);
  if (!targetElement) {
    console.error(`Element with ID '${elementId}' not found.`);
    return;
  }

  // Calculate the target scroll position with an optional offset
  const elementRect = targetElement.getBoundingClientRect();
  const absoluteElementTop = elementRect.top + window.pageYOffset;
  const targetScrollPosition = absoluteElementTop - offset;

  // Scroll smoothly to the calculated position
  window.scrollTo({
    top: targetScrollPosition,
    behavior: 'smooth'
  });
  console.log(`Smoothly scrolled to element '${elementId}' with offset ${offset}.`);
}

// Alternative using scrollIntoView for simpler cases:
function scrollToElementSimple(elementId) {
  const targetElement = document.getElementById(elementId);
  if (targetElement) {
    targetElement.scrollIntoView({
      behavior: 'smooth', // Make the scroll animate smoothly
      block: 'start',    // Align the top of the element to the top of the viewport
      inline: 'nearest'  // Align horizontally as needed
    });
    console.log(`Smoothly scrolled to element '${elementId}' using scrollIntoView.`);
  } else {
    console.error(`Element with ID '${elementId}' not found.`);
  }
}

// Example Usage:
// Assume an HTML element further down the page: <section id="aboutUs"></section>
// scrollToElement('aboutUs', 50); // Scrolls to 'aboutUs' with 50px offset from the top
// scrollToElementSimple('aboutUs'); // Scrolls directly to 'aboutUs' top with no offset
How it works: This snippet provides two methods for smoothly scrolling to a specific HTML element. The `scrollToElement` function uses `window.scrollTo()` combined with `getBoundingClientRect()` to calculate an absolute target position, allowing for a custom offset (useful for fixed headers). The `scrollToElementSimple` function utilizes the more straightforward `Element.scrollIntoView()` method. Both methods employ `behavior: 'smooth'` to provide an animated scrolling experience, improving user experience when navigating to different sections of a single-page application or a long document.

Need help integrating this into your project?

Our team of expert developers can help you build your custom application from scratch.

Hire DigitalCodeLabs