ホームページ > 記事 > ウェブフロントエンド > React JS でのナビゲーションを向上させるためのスティッキー ナビゲーションバーを作成するための完全ガイド
このセッションでは、Tailwind CSS と React JS を使用してスティッキー ナビゲーションバーを作成します。
React と Tailwind CSS のインストールプロセスは前の記事でご覧いただけます
すぐにナビゲーションバーのコードを作成してみましょう
<React.Fragment> <nav className={`fixed inset-x-0 top-0 z-50 flex items-center justify-center h-[60px] py-3 [&.is-sticky]:bg-white border-b border-slate-200 [&.is-sticky]:shadow-lg [&.is-sticky]:shadow-slate-200/25 navba ${navClass}`} id="navbar"> <div className="container 2xl:max-w-[90rem] px-4 mx-auto flex items-center self-center w-full"> <div className="mx-auto"> <ul id="navbar7" className={`absolute inset-x-0 z-20 items-center py-3 bg-white shadow-lg dark:bg-zink-600 dark:md:bg-transparent md:z-0 navbar-menu rounded-b-md md:shadow-none md:flex top-full ltr:ml-auto rtl:mr-auto md:relative md:bg-transparent md:rounded-none md:top-auto md:py-0`}> <li> <a href="#home" className={`block md:inline-block px-4 md:px-3 py-2.5 md:py-0.5 text-15 font-medium text-slate-800 transition-all duration-300 ease-linear hover:text-red-500 [&.active]:text-red-500 dark:text-zink-100 dark:hover:text-red-500 dark:[&.active]:text-red-500 ${activeLink === "/Home" ? "active" : ""}`} onClick={() => handleLinkClick("/Home")} > Home</a> </li> <li> <a href="#features" className={`block md:inline-block px-4 md:px-3 py-2.5 md:py-0.5 text-15 font-medium text-slate-800 transition-all duration-300 ease-linear hover:text-red-500 [&.active]:text-red-500 dark:text-zink-100 dark:hover:text-red-500 dark:[&.active]:text-red-500 ${activeLink === "/Features" ? "active" : ""}`} onClick={() => handleLinkClick("/Features")} > Layanan Kami</a> </li> </ul> </div> </div> </nav> <section className="relative mt-[60px] h-[800px] bg-yellow-600" id="home"> <div className="flex items-center justify-center h-full"> HOME </div> </section> <section className="relative h-[800px] bg-green-600" id="features"> <div className="flex items-center justify-center h-full"> FEATURES </div> </section> </React.Fragment>
この関数は、ナビゲーションバーのステータスをスティッキーに変更し、ページ切り替えプロセスを良好にするために滑らかなアニメーションを追加するために使用されます
const [navClass, setNavClass] = React.useState<string>(''); const scrollNavigation = () => { var scrollUp = document.documentElement.scrollTop; if (scrollUp >= 50) { setNavClass('is-sticky'); } else { setNavClass(''); } }; React.useEffect(() => { window.addEventListener('scroll', scrollNavigation, true); document.documentElement.classList.add("overflow-x-hidden", "scroll-smooth", "group"); return () => { window.removeEventListener('scroll', scrollNavigation, true); document.documentElement.classList.remove("overflow-x-hidden", "scroll-smooth", "group"); }; }, []);
この関数は、メニュー内のアクティブなクラスを変更する役割を果たし、アクセスされているメニューに応じてページを指示します
const [activeLink, setActiveLink] = React.useState<string>("/Home"); const handleLinkClick = (target: string) => { setActiveLink(target); };
import React from "react" function App() { const [navClass, setNavClass] = React.useState<string>(''); const scrollNavigation = () => { var scrollUp = document.documentElement.scrollTop; if (scrollUp >= 50) { setNavClass('is-sticky'); } else { setNavClass(''); } }; React.useEffect(() => { window.addEventListener('scroll', scrollNavigation, true); document.documentElement.classList.add("overflow-x-hidden", "scroll-smooth", "group"); return () => { window.removeEventListener('scroll', scrollNavigation, true); document.documentElement.classList.remove("overflow-x-hidden", "scroll-smooth", "group"); }; }, []); const [activeLink, setActiveLink] = React.useState<string>("/Home"); const handleLinkClick = (target: string) => { setActiveLink(target); }; return ( <React.Fragment> <nav className={`fixed inset-x-0 top-0 z-50 flex items-center justify-center h-[60px] py-3 [&.is-sticky]:bg-white border-b border-slate-200 [&.is-sticky]:shadow-lg [&.is-sticky]:shadow-slate-200/25 navba ${navClass}`} id="navbar"> <div className="container 2xl:max-w-[90rem] px-4 mx-auto flex items-center self-center w-full"> <div className="mx-auto"> <ul id="navbar7" className={`absolute inset-x-0 z-20 items-center py-3 bg-white shadow-lg dark:bg-zink-600 dark:md:bg-transparent md:z-0 navbar-menu rounded-b-md md:shadow-none md:flex top-full ltr:ml-auto rtl:mr-auto md:relative md:bg-transparent md:rounded-none md:top-auto md:py-0`}> <li> <a href="#home" className={`block md:inline-block px-4 md:px-3 py-2.5 md:py-0.5 text-15 font-medium text-slate-800 transition-all duration-300 ease-linear hover:text-red-500 [&.active]:text-red-500 dark:text-zink-100 dark:hover:text-red-500 dark:[&.active]:text-red-500 ${activeLink === "/Home" ? "active" : ""}`} onClick={() => handleLinkClick("/Home")} > Home</a> </li> <li> <a href="#features" className={`block md:inline-block px-4 md:px-3 py-2.5 md:py-0.5 text-15 font-medium text-slate-800 transition-all duration-300 ease-linear hover:text-red-500 [&.active]:text-red-500 dark:text-zink-100 dark:hover:text-red-500 dark:[&.active]:text-red-500 ${activeLink === "/Features" ? "active" : ""}`} onClick={() => handleLinkClick("/Features")} > Layanan Kami</a> </li> </ul> </div> </div> </nav> <section className="relative mt-[60px] h-[800px] bg-yellow-600" id="home"> <div className="flex items-center justify-center h-full"> HOME </div> </section> <section className="relative h-[800px] bg-green-600" id="features"> <div className="flex items-center justify-center h-full"> FEATURES </div> </section> </React.Fragment> ) } export default App
以上がReact JS でのナビゲーションを向上させるためのスティッキー ナビゲーションバーを作成するための完全ガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。