이 세션에서는 Tailwind CSS와 React JS를 사용하여 고정 navbar를 만들어 보겠습니다.
이전 글에서 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에서 더 나은 탐색을 위해 고정 Navbar를 만드는 방법에 대한 전체 가이드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!