How to create a sticky navbar on scroll in react
Try this :
import React, { useState, useEffect } from 'react';
export default function Navbar() {
const [stickyClass, setStickyClass] = useState('relative');
useEffect(() => {
window.addEventListener('scroll', stickNavbar);
return () => {
window.removeEventListener('scroll', stickNavbar);
};
}, []);
const stickNavbar = () => {
if (window !== undefined) {
let windowHeight = window.scrollY;
windowHeight > 500 ? setStickyClass('fixed top-0 left-0 z-50') : setStickyClass('relative');
}
};
return <div className={`h-16 w-full bg-gray-200 ${stickyClass}`}>Navbar</div>;
}
Demo (without Tailwinds but same result): Stackblitz