Back to: jQuery Tutorials
jQuery Scroll Event with Examples
In this article, we will discuss the jQuery Scroll Event with Examples. Please read our previous article, where we discussed jQuery Prevent Default.
jQuery scroll() method
The scroll event is raised when the user scrolls to a different place in the element. It applies to window objects, but also to scrollable frames and elements with the overflow CSS property set to scroll. The scroll() attaches a function to run when a scroll event occurs.
Syntax: $(selector).scroll(function)
Parameters:
- function: Optional. Specifies the function to run when the scroll event is triggered
Example:
In the below example, we are triggering the scroll event. When the scroll event will be triggered the <p> element will be displayed and at that moment it will be faded out.
<!DOCTYPE html> <html lang="en"> <head> <style> body { font-family: Arial, Helvetica, sans-serif; display: flex; justify-content: center; flex-direction: column; align-items: center; } .container { overflow: scroll; background-color: rgb(221, 221, 221); line-height: 1.5; padding: 20px; width: 600px; height: 300px; border: 2px solid black; border-radius: 20px; font-size: 20px; } p { margin: 20px; font-weight: bold; font-size: 30px; text-align: center; font-style: oblique; display: none; } h1 { font-size: 40px; margin-bottom: 30px; padding: 30px; text-align: center; text-transform: capitalize; font-style: italic; } </style> </head> <body> <h1>jQuey Scroll Event</h1> <div class="container"> Lorem, ipsum dolor sit amet consectetur adipisicing elit. Dolorum ducimus cumque eveniet enim cupiditate voluptates id doloremque iure ut ratione aliquam, laborum maiores vel corporis tenetur vitae quia omnis quod veniam eos! Optio ducimus voluptate quidem. Perspiciatis deleniti incidunt vero explicabo excepturi voluptatibus consectetur fugiat fugit tempore cupiditate temporibus alias quia, iusto suscipit et delectus libero porro placeat ducimus eius odio. Explicabo eligendi possimus ipsum, consequuntur inventore temporibus iure nemo blanditiis velit minima qui dolorem necessitatibus voluptatem quasi, alias eveniet voluptas? Aliquid, odit mollitia nemo qui nam ipsa corporis magni quaerat error neque incidunt omnis libero sint porro, quis perspiciatis aut adipisci eligendi delectus quam! Enim explicabo iusto voluptatem cupiditate laborum aliquam sapiente quaerat maiores, repudiandae repellendus, reiciendis sed. Quia doloremque dicta expedita numquam odio unde nostrum iure repellendus, ipsa modi commodi exercitationem necessitatibus quis provident, consequuntur veritatis tempore ducimus at reiciendis enim eos labore. Eligendi iure nisi numquam enim qui facilis vero doloribus consequatur animi fuga nobis explicabo nesciunt expedita culpa odio ipsa officia molestias voluptas aspernatur, iste voluptatum consectetur dolores voluptates quo! Fugit odit nobis repellat reprehenderit. Quod modi adipisci quia veniam aspernatur cupiditate perferendis dicta laborum ab earum praesentium, cum tenetur itaque et sint incidunt, officiis laudantium architecto. Sit error nobis molestias quam animi incidunt tempora ad voluptatibus dolore odit sapiente consectetur tempore deserunt sint vel amet, fugit delectus. Ipsum amet officiis expedita, nostrum debitis sint adipisci porro eligendi consectetur nihil illo, asperiores vel impedit molestiae labore fugit exercitationem repellat animi quae. Quidem similique nostrum veritatis. Totam, possimus blanditiis! Magnam id adipisci eius quas porro vitae ratione aperiam iure deleniti natus. Ullam corrupti assumenda nihil saepe accusantium facere debitis mollitia quam. Nulla, dolor modi quos maxime hic, qui excepturi minus molestiae ullam, nisi vel tenetur perferendis repellat ea quibusdam id quis error aliquam earum? Nostrum, sapiente dolorum. </div> <p class="result">Scroll event triggered</p> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script> $(document).ready(function () { $("div").scroll(function () { $("p").css("display", "block").fadeOut(1000); }); }); </script> </body> </html>
Now run the above code and scroll down and you will get the following output.
Example:
The following example keeps track of how many times the scroll event is raised. Here we have used a variable counter. Whenever you raised the scroll event this value of the counter is added by 1 and is displayed.
<!DOCTYPE html> <html lang="en"> <head> <style> body { font-family: Arial, Helvetica, sans-serif; display: flex; justify-content: center; flex-direction: column; align-items: center; } .container { overflow: scroll; background-color: rgb(221, 221, 221); line-height: 1.5; padding: 20px; width: 600px; height: 300px; border: 2px solid black; border-radius: 20px; font-size: 20px; } p { margin: 20px; font-weight: bold; font-size: 30px; text-align: center; font-style: oblique; } h1 { font-size: 40px; margin-bottom: 30px; padding: 30px; text-align: center; text-transform: capitalize; font-style: italic; } </style> </head> <body> <h1>jQuey Scroll Event</h1> <div class="container"> Lorem, ipsum dolor sit amet consectetur adipisicing elit. Dolorum ducimus cumque eveniet enim cupiditate voluptates id doloremque iure ut ratione aliquam, laborum maiores vel corporis tenetur vitae quia omnis quod veniam eos! Optio ducimus voluptate quidem. Perspiciatis deleniti incidunt vero explicabo excepturi voluptatibus consectetur fugiat fugit tempore cupiditate temporibus alias quia, iusto suscipit et delectus libero porro placeat ducimus eius odio. Explicabo eligendi possimus ipsum, consequuntur inventore temporibus iure nemo blanditiis velit minima qui dolorem necessitatibus voluptatem quasi, alias eveniet voluptas? Aliquid, odit mollitia nemo qui nam ipsa corporis magni quaerat error neque incidunt omnis libero sint porro, quis perspiciatis aut adipisci eligendi delectus quam! Enim explicabo iusto voluptatem cupiditate laborum aliquam sapiente quaerat maiores, repudiandae repellendus, reiciendis sed. Quia doloremque dicta expedita numquam odio unde nostrum iure repellendus, ipsa modi commodi exercitationem necessitatibus quis provident, consequuntur veritatis tempore ducimus at reiciendis enim eos labore. Eligendi iure nisi numquam enim qui facilis vero doloribus consequatur animi fuga nobis explicabo nesciunt expedita culpa odio ipsa officia molestias voluptas aspernatur, iste voluptatum consectetur dolores voluptates quo! Fugit odit nobis repellat reprehenderit. Quod modi adipisci quia veniam aspernatur cupiditate perferendis dicta laborum ab earum praesentium, cum tenetur itaque et sint incidunt, officiis laudantium architecto. Sit error nobis molestias quam animi incidunt tempora ad voluptatibus dolore odit sapiente consectetur tempore deserunt sint vel amet, fugit delectus. Ipsum amet officiis expedita, nostrum debitis sint adipisci porro eligendi consectetur nihil illo, asperiores vel impedit molestiae labore fugit exercitationem repellat animi quae. Quidem similique nostrum veritatis. Totam, possimus blanditiis! Magnam id adipisci eius quas porro vitae ratione aperiam iure deleniti natus. Ullam corrupti assumenda nihil saepe accusantium facere debitis mollitia quam. Nulla, dolor modi quos maxime hic, qui excepturi minus molestiae ullam, nisi vel tenetur perferendis repellat ea quibusdam id quis error aliquam earum? Nostrum, sapiente dolorum. </div> <p class="result"></p> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script> $(document).ready(function () { var counter = 0; $("div").scroll(function () { $("p").html(`The scroll event triggered ${(counter += 1)} times`); }); }); </script> </body> </html>
Now run the above code and then scroll down and you will get the output something below. Here, the number of times will be varying.
jQuery scrollTop() & scrollLeft() method
The scrollTop() & scrollLeft() method sets or returns the vertical & horizontal scrollbar position respectively for the selected elements. When the scrollbar is on the top, the position is 0 and when the scrollbar is on the far left side, the position is 0.
Syntax:
When used to return the position:
- $(selector).scrollTop()
- $(selector).scrollLeft()
Set vertical and horizontal scrollbar position:
- $(selector).scrollTop(position)
- $(selector).scrollLeft(position)
Parameters:
- position: Specifies the vertical scrollbar position in pixels.
Example:
In the below example, we are returning the position of the div whenever scrolled.
<!DOCTYPE html> <html lang="en"> <head> <style> body { padding: 0; margin: 0; box-sizing: border-box; font-family: Arial, Helvetica, sans-serif; display: flex; justify-content: center; flex-direction: column; align-items: center; } .container { overflow: scroll; background-color: rgb(221, 221, 221); line-height: 2; padding: 20px; width: 600px; height: 300px; border: 2px solid black; border-radius: 20px; font-size: 20px; } p { margin: 20px; font-weight: bold; font-size: 30px; text-align: center; font-style: oblique; } h1 { font-size: 40px; margin-bottom: 30px; padding: 30px; text-align: center; text-transform: capitalize; font-style: italic; } </style> </head> <body> <h1>jQuey Scroll Event</h1> <div class="container"> Lorem, ipsum dolor sit amet consectetur adipisicing elit. Dolorum ducimus cumque eveniet enim cupiditate voluptates id doloremque iure ut ratione aliquam, laborum maiores vel corporis tenetur vitae quia omnis quod veniam eos! Optio ducimus voluptate quidem. Perspiciatis deleniti incidunt vero explicabo excepturi voluptatibus consectetur fugiat fugit tempore cupiditate temporibus alias quia, iusto suscipit et delectus libero porro placeat ducimus eius odio. Explicabo eligendi possimus ipsum, consequuntur inventore temporibus iure nemo blanditiis velit minima qui dolorem necessitatibus voluptatem quasi, alias eveniet voluptas? Aliquid, odit mollitia nemo qui nam ipsa corporis magni quaerat error neque incidunt omnis libero sint porro, quis perspiciatis aut adipisci eligendi delectus quam! Enim explicabo iusto voluptatem cupiditate laborum aliquam sapiente quaerat maiores, repudiandae repellendus, reiciendis sed. Quia doloremque dicta expedita numquam odio unde nostrum iure repellendus, ipsa modi commodi exercitationem necessitatibus quis provident, consequuntur veritatis tempore ducimus at reiciendis enim eos labore. Eligendi iure nisi numquam enim qui facilis vero doloribus consequatur animi fuga nobis explicabo nesciunt expedita culpa odio ipsa officia molestias voluptas aspernatur, iste voluptatum consectetur dolores voluptates quo! Fugit odit nobis repellat reprehenderit. Quod modi adipisci quia veniam aspernatur cupiditate perferendis dicta laborum ab earum praesentium, cum tenetur itaque et sint incidunt, officiis laudantium architecto. Sit error nobis molestias quam animi incidunt tempora ad voluptatibus dolore odit sapiente consectetur tempore deserunt sint vel amet, fugit delectus. Ipsum amet officiis expedita, nostrum debitis sint adipisci porro eligendi consectetur nihil illo, asperiores vel impedit molestiae labore fugit exercitationem repellat animi quae. Quidem similique nostrum veritatis. Totam, possimus blanditiis! Magnam id adipisci eius quas porro vitae ratione aperiam iure deleniti natus. Ullam corrupti assumenda nihil saepe accusantium facere debitis mollitia quam. Nulla, dolor modi quos maxime hic, qui excepturi minus molestiae ullam, nisi vel tenetur perferendis repellat ea quibusdam id quis error aliquam earum? Nostrum, sapiente dolorum. </div> <p class="result"></p> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script> $(document).ready(function () { $("div").scroll(function () { let topPosition = $("div").scrollTop(); $("p").html(`Top : ${topPosition}`); }); }); </script> </body> </html>
Now run the above code and scroll down and you will get the following output.
Example:
The following example keeps track of whether the user scrolled up or down.
<!DOCTYPE html> <html lang="en"> <head> <style> body { padding: 0; margin: 0; box-sizing: border-box; font-family: Arial, Helvetica, sans-serif; display: flex; justify-content: center; flex-direction: column; align-items: center; } .container { overflow: scroll; background-color: rgb(221, 221, 221); line-height: 2; padding: 20px; width: 600px; height: 300px; border: 2px solid black; border-radius: 20px; font-size: 20px; } p { margin: 20px; font-weight: bold; font-size: 30px; text-align: center; font-style: oblique; } h1 { font-size: 40px; margin-bottom: 30px; padding: 30px; text-align: center; text-transform: capitalize; font-style: italic; } </style> </head> <body> <h1>jQuey Scroll Event</h1> <div class="container"> Lorem, ipsum dolor sit amet consectetur adipisicing elit. Dolorum ducimus cumque eveniet enim cupiditate voluptates id doloremque iure ut ratione aliquam, laborum maiores vel corporis tenetur vitae quia omnis quod veniam eos! Optio ducimus voluptate quidem. Perspiciatis deleniti incidunt vero explicabo excepturi voluptatibus consectetur fugiat fugit tempore cupiditate temporibus alias quia, iusto suscipit et delectus libero porro placeat ducimus eius odio. Explicabo eligendi possimus ipsum, consequuntur inventore temporibus iure nemo blanditiis velit minima qui dolorem necessitatibus voluptatem quasi, alias eveniet voluptas? Aliquid, odit mollitia nemo qui nam ipsa corporis magni quaerat error neque incidunt omnis libero sint porro, quis perspiciatis aut adipisci eligendi delectus quam! Enim explicabo iusto voluptatem cupiditate laborum aliquam sapiente quaerat maiores, repudiandae repellendus, reiciendis sed. Quia doloremque dicta expedita numquam odio unde nostrum iure repellendus, ipsa modi commodi exercitationem necessitatibus quis provident, consequuntur veritatis tempore ducimus at reiciendis enim eos labore. Eligendi iure nisi numquam enim qui facilis vero doloribus consequatur animi fuga nobis explicabo nesciunt expedita culpa odio ipsa officia molestias voluptas aspernatur, iste voluptatum consectetur dolores voluptates quo! Fugit odit nobis repellat reprehenderit. Quod modi adipisci quia veniam aspernatur cupiditate perferendis dicta laborum ab earum praesentium, cum tenetur itaque et sint incidunt, officiis laudantium architecto. Sit error nobis molestias quam animi incidunt tempora ad voluptatibus dolore odit sapiente consectetur tempore deserunt sint vel amet, fugit delectus. Ipsum amet officiis expedita, nostrum debitis sint adipisci porro eligendi consectetur nihil illo, asperiores vel impedit molestiae labore fugit exercitationem repellat animi quae. Quidem similique nostrum veritatis. Totam, possimus blanditiis! Magnam id adipisci eius quas porro vitae ratione aperiam iure deleniti natus. Ullam corrupti assumenda nihil saepe accusantium facere debitis mollitia quam. Nulla, dolor modi quos maxime hic, qui excepturi minus molestiae ullam, nisi vel tenetur perferendis repellat ea quibusdam id quis error aliquam earum? Nostrum, sapiente dolorum. </div> <p class="result"></p> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script> $(document).ready(function () { $(document).ready(function () { var lastScrollTop = 0; $("div").scroll(function () { var currentScrollPosition = $(this).scrollTop(); if (currentScrollPosition > lastScrollTop) { $("p").text("You scrolled down"); } else { $("p").text("You scrolled up"); } lastScrollTop = currentScrollPosition; }); }); }); </script> </body> </html>
Now run the above code and scroll down and you will get the following output.
Now scroll up and you will get the following output.
Example:
In the below example, notice that no matter where ever you are in the <div> by scrolling, if you click on the button “Go to top” you will reach the top.
<!DOCTYPE html> <html lang="en"> <head> <style> body { padding: 0; margin: 0; box-sizing: border-box; font-family: Arial, Helvetica, sans-serif; display: flex; justify-content: center; flex-direction: column; align-items: center; } button { background-color: #1c4450; border: none; color: white; padding: 20px 35px; margin: 10px; text-align: center; text-decoration: none; display: inline-block; font-size: 20px; border-radius: 50px; cursor: pointer; } .container { overflow: scroll; background-color: rgb(221, 221, 221); line-height: 2; padding: 20px; width: 600px; height: 300px; border: 2px solid black; border-radius: 20px; font-size: 20px; scroll-behavior: smooth; } p { margin: 20px; font-weight: bold; font-size: 30px; text-align: center; font-style: oblique; } h1 { font-size: 40px; margin-bottom: 30px; padding: 30px; text-align: center; text-transform: capitalize; font-style: italic; } </style> </head> <body> <h1>jQuey Scroll Event</h1> <div class="container"> Lorem, ipsum dolor sit amet consectetur adipisicing elit. Dolorum ducimus cumque eveniet enim cupiditate voluptates id doloremque iure ut ratione aliquam, laborum maiores vel corporis tenetur vitae quia omnis quod veniam eos! Optio ducimus voluptate quidem. Perspiciatis deleniti incidunt vero explicabo excepturi voluptatibus consectetur fugiat fugit tempore cupiditate temporibus alias quia, iusto suscipit et delectus libero porro placeat ducimus eius odio. Explicabo eligendi possimus ipsum, consequuntur inventore temporibus iure nemo blanditiis velit minima qui dolorem necessitatibus voluptatem quasi, alias eveniet voluptas? Aliquid, odit mollitia nemo qui nam ipsa corporis magni quaerat error neque incidunt omnis libero sint porro, quis perspiciatis aut adipisci eligendi delectus quam! Enim explicabo iusto voluptatem cupiditate laborum aliquam sapiente quaerat maiores, repudiandae repellendus, reiciendis sed. Quia doloremque dicta expedita numquam odio unde nostrum iure repellendus, ipsa modi commodi exercitationem necessitatibus quis provident, consequuntur veritatis tempore ducimus at reiciendis enim eos labore. Eligendi iure nisi numquam enim qui facilis vero doloribus consequatur animi fuga nobis explicabo nesciunt expedita culpa odio ipsa officia molestias voluptas aspernatur, iste voluptatum consectetur dolores voluptates quo! Fugit odit nobis repellat reprehenderit. Quod modi adipisci quia veniam aspernatur cupiditate perferendis dicta laborum ab earum praesentium, cum tenetur itaque et sint incidunt, officiis laudantium architecto. Sit error nobis molestias quam animi incidunt tempora ad voluptatibus dolore odit sapiente consectetur tempore deserunt sint vel amet, fugit delectus. Ipsum amet officiis expedita, nostrum debitis sint adipisci porro eligendi consectetur nihil illo, asperiores vel impedit molestiae labore fugit exercitationem repellat animi quae. Quidem similique nostrum veritatis. Totam, possimus blanditiis! Magnam id adipisci eius quas porro vitae ratione aperiam iure deleniti natus. Ullam corrupti assumenda nihil saepe accusantium facere debitis mollitia quam. Nulla, dolor modi quos maxime hic, qui excepturi minus molestiae ullam, nisi vel tenetur perferendis repellat ea quibusdam id quis error aliquam earum? Nostrum, sapiente dolorum. </div> <button>Go to top</button> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script> $(document).ready(function () { $("button").click(function () { $("div").scrollTop(0); }); }); </script> </body> </html>
Now run the above code and scroll down and then click on the Go to Top button and you will move to the top position as shown in the below image.
In the next article, I am going to discuss how to check if an event is already bound using jQuery with Examples. Here, in this article, I try to explain jQuery Scroll Event with Examples and I hope you enjoy this jQuery Scroll Event article.