11import * as S from './FarmSystemNav.styled' ;
2+ import { useState , useEffect } from 'react' ;
23
34export default function FarmSystemNav ( ) {
5+ const [ isVisible , setIsVisible ] = useState ( false ) ;
6+
7+ useEffect ( ( ) => {
8+ const handleScroll = ( ) => {
9+ if ( window . scrollY > 200 ) {
10+ setIsVisible ( true ) ;
11+ } else {
12+ setIsVisible ( false ) ;
13+ }
14+ } ;
15+
16+ window . addEventListener ( "scroll" , handleScroll ) ;
17+ return ( ) => {
18+ window . removeEventListener ( "scroll" , handleScroll ) ;
19+ } ;
20+ } , [ ] ) ;
21+
22+ const handleSmoothScroll = ( event : React . MouseEvent < HTMLAnchorElement , MouseEvent > , targetId : string ) => {
23+ event . preventDefault ( ) ;
24+ const targetElement = document . querySelector ( targetId ) ;
25+ if ( targetElement ) {
26+ window . scrollTo ( {
27+ top : targetElement . getBoundingClientRect ( ) . top + window . scrollY ,
28+ behavior : "smooth" ,
29+ } ) ;
30+ }
31+ } ;
32+
33+
434 return (
5- < S . Navbar >
6- < S . NavItem href = "#about" > ● Farm System이란?</ S . NavItem >
7- < S . NavItem href = "#tracks" > ● 트랙 및 커리큘럼</ S . NavItem >
8- < S . NavItem href = "#achievements" > ● 활동 및 성과</ S . NavItem >
9- < S . NavItem href = "#eligibility" > ● 지원 요건</ S . NavItem >
10- </ S . Navbar >
35+ < S . FixedNavWrapper isVisible = { isVisible } >
36+ < S . Navbar >
37+ < S . NavItem href = "#about" onClick = { ( e ) => handleSmoothScroll ( e , "#about" ) } >
38+ < S . Circle /> Farm System이란?
39+ </ S . NavItem >
40+ < S . NavItem href = "#tracks" onClick = { ( e ) => handleSmoothScroll ( e , "#tracks" ) } >
41+ < S . Circle /> 트랙 및 커리큘럼
42+ </ S . NavItem >
43+ < S . NavItem href = "#achievements" onClick = { ( e ) => handleSmoothScroll ( e , "#achievements" ) } >
44+ < S . Circle /> 활동 및 성과
45+ </ S . NavItem >
46+ < S . NavItem href = "#eligibility" onClick = { ( e ) => handleSmoothScroll ( e , "#eligibility" ) } >
47+ < S . Circle /> 지원 요건
48+ </ S . NavItem >
49+ </ S . Navbar >
50+ </ S . FixedNavWrapper >
1151 ) ;
12- }
52+ }
0 commit comments