π μ£Όμ κΈ°λ₯
- μ€ν¬λ‘€ μ΄λ
- νμ¬ μμΉν μΉμ νμ (
activeSection
)- λͺ¨λ°μΌ λ°μν λ©λ΄
- νλ²κ±° λ²νΌ ν΄λ¦ μ λ©λ΄ μ΄λ¦Ό/λ«ν
- λ©λ΄ μ ν μ μλμΌλ‘ λ«ν
<aside> π¬
const [isMenuOpen, setIsMenuOpen] = useState(false);
// ν΄λ¦ν λ©λ΄μ idκ°μ λ°λΌ ν΄λΉ μΉμ
μΌλ‘ λΆλλ½κ² μ€ν¬λ‘€νλ ν¨μ
const scrollToSection = (sectionId) => {
if (sectionId == "top") {
window.scrollTo({
top: 0, // 맨 μλ‘ μ€ν¬λ‘€
behavior: "smooth", // μ€ν¬λ‘€μ΄ λΆλλ¬μμ§λ μ΅μ
});
} else { // μμ΄λκ° topμ΄ μλλ©΄ κ° νμ΄μ§λ‘ μ΄λ
const section = document.getElementById(sectionId);
if (section) {
section.scrollIntoView({
behavior: "smooth",
});
}
}
};
</aside>
<aside> π¬
<div className="flex justify-between items-center mx-auto">
<Logo scrollTo={() => scrollToSection("top")} />
</aside>
<aside> π¬
<div className="md:hidden ml-auto" onClick={() => setIsMenuOpen(!isMenuOpen)}>
<button className="text-3xl">β°</button>
</div>
</aside>
<aside> π¬
<nav className="hidden md:flex md:flex-row md:space-x-6">
<ul className="flex space-x-6">
{["about", "stack", "project", "contact"].map((id) => (
<NavLink
key={id}
id={id}
section={id.toUpperCase()}
activeSection={activeSection}
onClick={scrollToSection}
/>
))}
</ul>
</nav>
</aside>
<aside> π¬
{/* λ°μν λΆλΆ */}
<MobileMenu
isMenuOpen={isMenuOpen}
setIsMenuOpen={setIsMenuOpen}
activeSection={activeSection}
scrollToSection={scrollToSection}
/>
</aside>
<aside> π¬
const Logo = ({ scrollTo }) => (
<div
className="text-xl font-bold cursor-pointer"
onClick={scrollTo}>
LeeYurim's Portfolio
</div>
);
</aside>