툴팁

6가지 다른 방식으로 구현한 툴팁

조건부 렌더링 방식 외부 클릭시 닫히도록 처리

핵심: {isVisible && <Tooltip />} - 상태에 따른 조건부 렌더링

✅ 장점: 코드 간결, 직관적, 메모리 효율적, React 패턴에 최적화

❌ 단점: 애니메이션 제한, 복잡한 상호작용 어려움

💡 사용 시나리오: 간단한 툴팁, 빠른 구현, 성능이 중요한 경우

단일 열림 방식 Context로 하나만 열리도록 관리

핵심: Context + 단일 상태 관리 - 전역 상태로 하나씩만 열리도록 제어

✅ 장점: 하나씩만 열림, 현재 열려있는 툴팁의 ID와 같은 상태를 공유, zustand 사용하면 상태관리 간편

❌ 단점: Context 오버헤드, 복잡한 상태 로직

💡 사용 시나리오: 여러 툴팁이 있는 페이지, 사용자 경험 일관성 중요

HTML Details 태그 방식 네이티브 HTML 사용

핵심: <details><summary> - HTML 네이티브 접근성 기능 활용

✅ 장점: 접근성 우수, 키보드 네비게이션 지원, SEO 친화적

❌ 단점: 스타일링 제약, 복잡한 애니메이션 어려움

💡 사용 시나리오: 접근성이 중요한 콘텐츠, 간단한 토글 기능

Adipisicing aliqua ex magna cupidatat sit ea officia eiusmod aliqua tempor amet non. Quis reprehenderit non cupidatat ipsum irure.!
Nisi et sit in cillum anim do. Anim ullamco eu elit aute pariatur dolore cupidatat nostrud. Eiusmod eiusmod sunt deserunt velit laboris consequat et aute velit exercitation velit. Incididunt deserunt mollit aute aliqua et dolor. Eiusmod officia exercitation tempor cillum occaecat sunt qui proident est. Enim fugiat labore sint irure nisi. Eu mollit id consectetur aute dolor. Aute cupidatat aliquip veniam mollit aute velit ex fugiat aute elit. Officia tempor cillum nisi eu. Qui aliquip labore laboris incididunt anim laboris anim excepteur exercitation. Quis minim labore elit reprehenderit id.
Fugiat mollit deserunt pariatur labore laboris adipisicing.!
Exercitation voluptate consequat officia cupidatat mollit sunt. Nisi exercitation dolore duis est non ex. Sit anim ad ipsum mollit do minim. Qui do sunt eu minim tempor esse enim esse sit id pariatur labore deserunt. Ex in ad et aute veniam aliquip est deserunt reprehenderit dolor do officia proident ad. Aliqua ad proident est magna deserunt. Et culpa sint excepteur ex esse commodo irure aliquip elit.
Sit et nulla ut veniam officia excepteur amet fugiat ea in dolor consectetur laborum aute. Aute esse irure non in.!
Fugiat aute officia magna ea ad et sint laborum consequat nisi reprehenderit qui laborum consequat. Minim excepteur enim fugiat qui Lorem ullamco aliquip do. Est ut in duis consectetur voluptate eiusmod in. Dolore ut eiusmod ipsum excepteur excepteur excepteur amet sunt dolore nulla exercitation duis ex labore. Ullamco quis excepteur excepteur officia ad voluptate mollit ut mollit ex commodo officia quis mollit. Nulla exercitation tempor amet tempor officia ex minim laboris. Id tempor ipsum amet commodo veniam fugiat aute consectetur pariatur do laboris mollit. Excepteur occaecat dolore consectetur non fugiat aliqua aliqua cupidatat anim veniam pariatur commodo. Fugiat ullamco veniam irure exercitation exercitation. Reprehenderit et reprehenderit aliquip pariatur commodo nostrud veniam commodo. Anim non irure occaecat culpa qui ullamco qui est amet cupidatat sunt consequat voluptate. Ad officia veniam ad sunt Lorem. Sint velit ipsum velit voluptate nostrud in duis enim laborum.
Cillum nisi ipsum laborum dolor eiusmod deserunt amet duis ea Lorem sit id dolor.!
Sunt dolore nostrud laborum eiusmod est amet non nostrud consectetur. Qui quis reprehenderit ad ipsum ea et esse reprehenderit cupidatat minim qui proident officia. Ea mollit aliqua nisi consequat adipisicing. Culpa laboris nulla occaecat sunt nulla anim nulla do cillum cupidatat veniam. Ut cillum ipsum officia duis ea est elit occaecat elit duis proident. Ullamco qui adipisicing sint eu id aliqua qui sit duis anim irure quis. Reprehenderit in minim eu nostrud incididunt duis minim id sit. Esse reprehenderit aute velit cillum eiusmod aliquip. Commodo ut Lorem minim sint do ipsum adipisicing adipisicing aliquip nostrud. Culpa veniam elit nostrud ullamco.
Reprehenderit tempor irure et est.!
Ex veniam cillum sit cupidatat cillum. Laborum est sunt enim incididunt laboris culpa. Sint anim ullamco anim ea cillum. Fugiat quis minim anim occaecat voluptate do duis do consectetur nisi labore esse nulla commodo. Mollit sit laboris ullamco ullamco occaecat fugiat proident. Dolore eiusmod mollit ea elit irure aliqua veniam. In irure enim fugiat ut magna veniam ipsum cupidatat ea id sit. Ea cupidatat exercitation in incididunt magna. Adipisicing aliquip do et aliquip fugiat eiusmod quis velit non quis. Est consequat ullamco officia fugiat laborum consequat ad labore veniam sint occaecat qui. Mollit consequat veniam consectetur nostrud commodo mollit cupidatat culpa do veniam ipsum dolor ullamco tempor. Sunt sunt ad nulla irure adipisicing non labore labore ipsum labore mollit laboris exercitation non. Ipsum reprehenderit ad ut laboris sunt occaecat laboris velit reprehenderit. Sint magna adipisicing laboris qui aute dolor do.
Aliqua magna proident sint ipsum incididunt eiusmod sunt amet qui cupidatat nulla. Dolor ullamco est aliquip aliquip irure exercitation ad cupidatat ipsum pariatur irure adipisicing in.!
Cupidatat ullamco enim officia ea esse ut exercitation commodo nisi aute dolor enim reprehenderit. Adipisicing cupidatat dolore fugiat mollit ipsum ad labore. Non officia anim tempor occaecat eiusmod commodo consequat ipsum. Labore laborum elit ex velit reprehenderit enim. Mollit pariatur ullamco in deserunt fugiat sunt sint duis cupidatat labore. Enim irure sunt eiusmod minim ad est ex proident cillum sit occaecat non. Excepteur reprehenderit nostrud incididunt ut deserunt consectetur laborum culpa velit labore nisi laborum. Cillum sit pariatur duis sunt deserunt magna magna aute incididunt elit ut aliquip deserunt consectetur. Ullamco cupidatat consequat aute ullamco dolor eu consectetur occaecat occaecat laborum dolor amet deserunt. Ipsum dolor occaecat do aliquip ipsum. Aliquip ex ut voluptate sint commodo ad nostrud do Lorem anim minim occaecat amet excepteur. Quis magna laboris minim pariatur. Laborum aliquip adipisicing nostrud ut nostrud.

뷰포트 기반 위치 조정 스크롤에 반응하여 위/아래 표시

핵심: useSmartTooltip 훅 - 재사용 가능한 스마트 툴팁 로직

✅ 장점: 로직 재사용, 컴포넌트 간소화, 정책 파라미터화

❌ 단점: 훅 의존성, 초기 학습 비용

💡 사용 시나리오: 여러 툴팁이 필요한 페이지, 일관된 UX

Adipisicing aliqua ex magna cupidatat sit ea officia eiusmod aliqua tempor amet non. Quis reprehenderit non cupidatat ipsum irure.!
Nisi et sit in cillum anim do. Anim ullamco eu elit aute pariatur dolore cupidatat nostrud. Eiusmod eiusmod sunt deserunt velit laboris consequat et aute velit exercitation velit. Incididunt deserunt mollit aute aliqua et dolor. Eiusmod officia exercitation tempor cillum occaecat sunt qui proident est. Enim fugiat labore sint irure nisi. Eu mollit id consectetur aute dolor. Aute cupidatat aliquip veniam mollit aute velit ex fugiat aute elit. Officia tempor cillum nisi eu. Qui aliquip labore laboris incididunt anim laboris anim excepteur exercitation. Quis minim labore elit reprehenderit id.
Fugiat mollit deserunt pariatur labore laboris adipisicing.!
Exercitation voluptate consequat officia cupidatat mollit sunt. Nisi exercitation dolore duis est non ex. Sit anim ad ipsum mollit do minim. Qui do sunt eu minim tempor esse enim esse sit id pariatur labore deserunt. Ex in ad et aute veniam aliquip est deserunt reprehenderit dolor do officia proident ad. Aliqua ad proident est magna deserunt. Et culpa sint excepteur ex esse commodo irure aliquip elit.
Sit et nulla ut veniam officia excepteur amet fugiat ea in dolor consectetur laborum aute. Aute esse irure non in.!
Fugiat aute officia magna ea ad et sint laborum consequat nisi reprehenderit qui laborum consequat. Minim excepteur enim fugiat qui Lorem ullamco aliquip do. Est ut in duis consectetur voluptate eiusmod in. Dolore ut eiusmod ipsum excepteur excepteur excepteur amet sunt dolore nulla exercitation duis ex labore. Ullamco quis excepteur excepteur officia ad voluptate mollit ut mollit ex commodo officia quis mollit. Nulla exercitation tempor amet tempor officia ex minim laboris. Id tempor ipsum amet commodo veniam fugiat aute consectetur pariatur do laboris mollit. Excepteur occaecat dolore consectetur non fugiat aliqua aliqua cupidatat anim veniam pariatur commodo. Fugiat ullamco veniam irure exercitation exercitation. Reprehenderit et reprehenderit aliquip pariatur commodo nostrud veniam commodo. Anim non irure occaecat culpa qui ullamco qui est amet cupidatat sunt consequat voluptate. Ad officia veniam ad sunt Lorem. Sint velit ipsum velit voluptate nostrud in duis enim laborum.
Cillum nisi ipsum laborum dolor eiusmod deserunt amet duis ea Lorem sit id dolor.!
Sunt dolore nostrud laborum eiusmod est amet non nostrud consectetur. Qui quis reprehenderit ad ipsum ea et esse reprehenderit cupidatat minim qui proident officia. Ea mollit aliqua nisi consequat adipisicing. Culpa laboris nulla occaecat sunt nulla anim nulla do cillum cupidatat veniam. Ut cillum ipsum officia duis ea est elit occaecat elit duis proident. Ullamco qui adipisicing sint eu id aliqua qui sit duis anim irure quis. Reprehenderit in minim eu nostrud incididunt duis minim id sit. Esse reprehenderit aute velit cillum eiusmod aliquip. Commodo ut Lorem minim sint do ipsum adipisicing adipisicing aliquip nostrud. Culpa veniam elit nostrud ullamco.
Reprehenderit tempor irure et est.!
Ex veniam cillum sit cupidatat cillum. Laborum est sunt enim incididunt laboris culpa. Sint anim ullamco anim ea cillum. Fugiat quis minim anim occaecat voluptate do duis do consectetur nisi labore esse nulla commodo. Mollit sit laboris ullamco ullamco occaecat fugiat proident. Dolore eiusmod mollit ea elit irure aliqua veniam. In irure enim fugiat ut magna veniam ipsum cupidatat ea id sit. Ea cupidatat exercitation in incididunt magna. Adipisicing aliquip do et aliquip fugiat eiusmod quis velit non quis. Est consequat ullamco officia fugiat laborum consequat ad labore veniam sint occaecat qui. Mollit consequat veniam consectetur nostrud commodo mollit cupidatat culpa do veniam ipsum dolor ullamco tempor. Sunt sunt ad nulla irure adipisicing non labore labore ipsum labore mollit laboris exercitation non. Ipsum reprehenderit ad ut laboris sunt occaecat laboris velit reprehenderit. Sint magna adipisicing laboris qui aute dolor do.
Aliqua magna proident sint ipsum incididunt eiusmod sunt amet qui cupidatat nulla. Dolor ullamco est aliquip aliquip irure exercitation ad cupidatat ipsum pariatur irure adipisicing in.!
Cupidatat ullamco enim officia ea esse ut exercitation commodo nisi aute dolor enim reprehenderit. Adipisicing cupidatat dolore fugiat mollit ipsum ad labore. Non officia anim tempor occaecat eiusmod commodo consequat ipsum. Labore laborum elit ex velit reprehenderit enim. Mollit pariatur ullamco in deserunt fugiat sunt sint duis cupidatat labore. Enim irure sunt eiusmod minim ad est ex proident cillum sit occaecat non. Excepteur reprehenderit nostrud incididunt ut deserunt consectetur laborum culpa velit labore nisi laborum. Cillum sit pariatur duis sunt deserunt magna magna aute incididunt elit ut aliquip deserunt consectetur. Ullamco cupidatat consequat aute ullamco dolor eu consectetur occaecat occaecat laborum dolor amet deserunt. Ipsum dolor occaecat do aliquip ipsum. Aliquip ex ut voluptate sint commodo ad nostrud do Lorem anim minim occaecat amet excepteur. Quis magna laboris minim pariatur. Laborum aliquip adipisicing nostrud ut nostrud.

바닐라 JavaScript 방식 DOM 직접 조작

핵심: document.createElement + DOM API - React 없이 순수 JavaScript로 구현

✅ 장점: 번들 크기 최소화, 성능 최적화, 프레임워크 독립적

❌ 단점: 보일러플레이트 코드, 상태 관리 복잡, 디버깅 어려움

💡 사용 시나리오: 경량화가 중요한 프로젝트, 레거시 시스템, 성능 중심

바닐라 JS 구현

Portal 방식 body에 직접 렌더링

핵심: createPortal - DOM 계층 구조 독립적 렌더링

✅ 장점: 부모 요소 제약 없음, 어디서든 완벽 표시, 실무 표준

❌ 단점: 복잡한 위치 계산, 메모리 관리 주의, 접근성 고려

💡 사용 시나리오: 모달, 툴팁, 팝오버 등 실무 프로젝트