jQuery scrollTop Window Method Explained
This article explains how the jQuery scrollTop() method
functions when applied to the browser's window object. It
covers how the method operates both as a getter and a setter to measure
and control vertical scroll positions, explores common real-world use
cases such as sticky navigations and back-to-top buttons, and highlights
how jQuery normalizes cross-browser differences for vertical
scrolling.
The Getter: Reading Vertical Scroll Position
When called on the window object without arguments,
$(window).scrollTop() acts as a getter. It returns an
integer representing the number of pixels by which the document is
currently scrolled vertically away from the top edge of the browser
viewport.
let scrollPosition = $(window).scrollTop();
console.log("Current scroll position: " + scrollPosition + "px");If the user is at the very top of the page, the method returns
0. As the user scrolls downward, the returned value
increases proportionally.
The Setter: Changing Vertical Scroll Position
When passed a numeric argument,
$(window).scrollTop(value) acts as a setter. It immediately
shifts the viewport's vertical position so that the specified number of
pixels from the top of the document aligns with the top of the browser
window.
// Immediately jumps the page to 500 pixels down
$(window).scrollTop(500);
// Instantly jumps to the very top of the page
$(window).scrollTop(0);Common Practical Use Cases
1. Creating a "Back to Top" Toggle
You can monitor the scroll position using the scroll
event to show or hide a button when the user scrolls past a specific
threshold:
$(window).on("scroll", function() {
if ($(window).scrollTop() > 300) {
$("#backToTopButton").fadeIn();
} else {
$("#backToTopButton").fadeOut();
}
});2. Implementing Sticky Navigation
Sticky headers often depend on reading the window's vertical scroll offset to add or remove styling classes when the user passes a certain point on the page:
$(window).on("scroll", function() {
if ($(window).scrollTop() > 100) {
$("header").addClass("sticky");
} else {
$("header").removeClass("sticky");
}
});3. Detecting the Bottom of the Page (Infinite Scroll)
By combining $(window).scrollTop() with
$(window).height() and $(document).height(),
you can determine when a user has reached the bottom of the content:
$(window).on("scroll", function() {
if ($(window).scrollTop() + $(window).height() >= $(document).height() - 50) {
// Load additional content
}
});Cross-Browser Normalization
In vanilla JavaScript, retrieving the window scroll position requires
handling inconsistent properties across different browsers, such as
window.pageYOffset,
document.documentElement.scrollTop, and
document.body.scrollTop. Using
$(window).scrollTop() abstracts these variations, ensuring
consistent behavior across modern and legacy browsers without requiring
manual compatibility checks. Note that while
$(window).scrollTop(value) performs an instant jump, smooth
scrolling effects typically target
$('html, body').animate({ scrollTop: value }) instead.