How to Implement Reveal on Scroll in React using Tailwind CSS ?
Last Updated :
28 Apr, 2025
In React, the reveal on the scroll is a technique, where elements on a page gradually appear or animate as the user scrolls down.
Prerequisites:
To implement reveal in scroll in react using Tailwind CSS we have these methods:
Step for Creating React Application and Installing Module:
Step 1: Create a React application using the following command:
npm create-react-app appname
Step 2: After creating your project folder i.e. folder name, move to it using the following command:
cd foldername
Step 3: After creating the React.js application, install the Tailwind CSS using the following command.
npm i -D tailwindcss postcss autoprefixer
npx tailwindcss init -p
Step 4: Add Tailwind CSS directives into index.css file of the project.
@tailwind base;
@tailwind components;
@tailwind utilities;
Step 5: Configure template paths in tailwind.config.js file using the following command:
module.exports = {
content: [
"./src/**/*.{js,jsx,ts,tsx}",
],
}
Project Structure:

The updated dependencies in package.json file will look like.
"devDependencies": {
"autoprefixer": "^10.4.16",
"postcss": "^8.4.31",
"tailwindcss": "^3.3.5"
}
Approach 1: Using the Intersection Observer API
The Intersection Observer API is used to implement the reveal on scroll effect in React using Tailwind CSS. It allows you to asynchronously observe changes in the intersection of a target element with its container or the viewport.
Example: This example creates RevealOnScroll components using the tailwind classes and scroll observer.
JavaScript
// Filename - App.js
import React, { useEffect, useRef, useState } from "react";
const RevealOnScroll = ({ children }) => {
const [isVisible, setIsVisible] = useState(false);
const ref = useRef(null);
useEffect(() => {
const scrollObserver = new IntersectionObserver(([entry]) => {
if (entry.isIntersecting) {
setIsVisible(true);
scrollObserver.unobserve(entry.target);
}
});
scrollObserver.observe(ref.current);
return () => {
if (ref.current) {
scrollObserver.unobserve(ref.current);
}
};
}, []);
const classes = `transition-opacity duration-1000
${isVisible ? "opacity-100" : "opacity-0"
}`;
return (
<div ref={ref} className={classes}>
{children}
</div>
);
};
const App = () => {
return (
<div className="container mx-auto text-center">
<h1 className="text-7xl font-bold mb-8 text-green">
GeeksforGeeks
</h1>
<h2 className="text-4xl ">
Reveal on Scroll in React using Tailwind CSS
</h2>
<RevealOnScroll>
<p className="text-3xl h-[15em] mt-[10em]">
Welcome to the computer science portal!
</p>
</RevealOnScroll>
<RevealOnScroll>
<p className="text-3xl h-[15em] mt-[10em]">
Learn Web Development
</p>
</RevealOnScroll>
<RevealOnScroll>
<p className="text-3xl h-[15em] mt-[10em]">
Learn Android Development
</p>
</RevealOnScroll>
<RevealOnScroll>
<p className="text-3xl h-[15em] mt-[10em]">
Learn Data Stuctures and Algorithms
</p>
</RevealOnScroll>
<RevealOnScroll>
<p className="text-3xl h-[15em] mt-[10em]">
and more...
</p>
</RevealOnScroll>
{/* Add more RevealOnScroll components
for other elements */}
</div>
);
};
export default App;
Steps to Run the Application: Use this command in the terminal in the project directory.
npm start
Output: This output will be visible on the http://localhost:3000 on the browser window
.gif)
The Scroll Event Listener is used to implement the reveal on scroll effect in React using Tailwind CSS. It involves attaching an event listener to the scroll event of the window object or any scrollable element. When the user scrolls, the event listener fires and triggers the associated callback function.
Example: This example implements revel on scoll using scroll event listener to trigger and reveal content with cusotm scroll values.
JavaScript
// Filename - App.js
import React, { useEffect, useRef, useState } from "react";
const RevealOnScroll = ({ children }) => {
const [isVisible, setIsVisible] = useState(false);
const ref = useRef(null);
useEffect(() => {
const onWindScroll = () => {
const element = ref.current;
if (element) {
const { top } = element.getBoundingClientRect();
const isVisible = top < window.innerHeight;
setIsVisible(isVisible);
}
};
window.addEventListener("scroll", onWindScroll);
return () => {
window.removeEventListener("scroll", onWindScroll);
};
}, []);
const classes = `transition-opacity duration-1000
${isVisible ? "opacity-100" : "opacity-0"
}`;
return (
<div ref={ref} className={classes}>
{children}
</div>
);
};
const App = () => {
return (
<div className="container mx-auto text-center">
<h1 className="text-7xl font-bold mb-8 text-green">
GeeksforGeeks
</h1>
<h2 className="text-4xl ">
Reveal on Scroll in React using Tailwind CSS
</h2>
<RevealOnScroll>
<p className="text-3xl h-[15em] mt-[10em]">
Welcome to the computer science portal!
</p>
</RevealOnScroll>
<RevealOnScroll>
<p className="text-3xl h-[15em] mt-[10em]">
Learn Web Development
</p>
</RevealOnScroll>
<RevealOnScroll>
<p className="text-3xl h-[15em] mt-[10em]">
Learn Android Development
</p>
</RevealOnScroll>
<RevealOnScroll>
<p className="text-3xl h-[15em] mt-[10em]">
Learn Data Stuctures and Algorithms
</p>
</RevealOnScroll>
<RevealOnScroll>
<p className="text-3xl h-[15em] mt-[10em]">
and more...
</p>
</RevealOnScroll>
</div>
);
};
export default App;
Steps to Run the Application: Use this command in the terminal in the project directory.
npm start
Output: This output will be visible on the http://localhost:3000 on the browser window
.gif)
Similar Reads
JavaScript Tutorial JavaScript is a programming language used to create dynamic content for websites. It is a lightweight, cross-platform, and single-threaded programming language. It's an interpreted language that executes code line by line, providing more flexibility.JavaScript on Client Side: On the client side, Jav
11 min read
React Interview Questions and Answers React is an efficient, flexible, and open-source JavaScript library that allows developers to create simple, fast, and scalable web applications. Jordan Walke, a software engineer who was working for Facebook, created React. Developers with a JavaScript background can easily develop web applications
15+ min read
React Tutorial React is a powerful JavaScript library for building fast, scalable front-end applications. Created by Facebook, it's known for its component-based structure, single-page applications (SPAs), and virtual DOM,enabling efficient UI updates and a seamless user experience.Note: The latest stable version
7 min read
JavaScript Interview Questions and Answers JavaScript is the most used programming language for developing websites, web servers, mobile applications, and many other platforms. In Both Front-end and Back-end Interviews, JavaScript was asked, and its difficulty depends upon the on your profile and company. Here, we compiled 70+ JS Interview q
15+ min read
Domain Name System (DNS) DNS is a hierarchical and distributed naming system that translates domain names into IP addresses. When you type a domain name like www.geeksforgeeks.org into your browser, DNS ensures that the request reaches the correct server by resolving the domain to its corresponding IP address.Without DNS, w
8 min read
NodeJS Interview Questions and Answers NodeJS is one of the most popular runtime environments, known for its efficiency, scalability, and ability to handle asynchronous operations. It is built on Chromeâs V8 JavaScript engine for executing JavaScript code outside of a browser. It is extensively used by top companies such as LinkedIn, Net
15+ min read
HTML Interview Questions and Answers HTML (HyperText Markup Language) is the foundational language for creating web pages and web applications. Whether you're a fresher or an experienced professional, preparing for an HTML interview requires a solid understanding of both basic and advanced concepts. Below is a curated list of 50+ HTML
14 min read
CSS Tutorial CSS stands for Cascading Style Sheets. It is a stylesheet language used to style and enhance website presentation. CSS is one of the three main components of a webpage, along with HTML and JavaScript.HTML adds Structure to a web page.JavaScript adds logic to it and CSS makes it visually appealing or
7 min read
Node.js Tutorial Node.js is a powerful, open-source, and cross-platform JavaScript runtime environment built on Chrome's V8 engine. It allows you to run JavaScript code outside the browser, making it ideal for building scalable server-side and networking applications.JavaScript was mainly used for frontend developme
4 min read
HTML Introduction HTML stands for Hyper Text Markup Language, which is the core language used to structure content on the web. It organizes text, images, links, and media using tags and elements that browsers can interpret. As of 2025, over 95% of websites rely on HTML alongside CSS and JavaScript, making it a fundam
6 min read