Tooltip
요소에 호버하거나 포커스했을 때 보조 정보를 표시하는 오버레이 컴포넌트입니다. 버튼이나 아이콘 설명, 단축키 표시 등에 적합합니다.
Playground
<Tooltip>
<Tooltip.Trigger asChild>
<Button variant="outline">Hover me</Button>
</Tooltip.Trigger>
<Tooltip.Content>
Tooltip text
</Tooltip.Content>
</Tooltip>Variants
Sizes
smdefault| Size | 폰트 | 패딩 | 용도 | 미리보기 |
|---|---|---|---|---|
sm | 12px (text-xs) | 4px 10px | 간결한 보조 정보 | |
default | 13px (text-sm) | 6px 12px | 표준 (기본값) |
Features
Side Placement
4방향(top, right, bottom, left)에 배치할 수 있습니다. 기본값은 top입니다.
<Tooltip.Content side="top">Top</Tooltip.Content>
<Tooltip.Content side="right">Right</Tooltip.Content>
<Tooltip.Content side="bottom">Bottom</Tooltip.Content>
<Tooltip.Content side="left">Left</Tooltip.Content>Arrow
showArrow로 트리거를 가리키는 화살표 표시를 제어합니다. 기본값은 표시입니다.
{/* With arrow (default) */}
<Tooltip.Content>With arrow</Tooltip.Content>
{/* Without arrow */}
<Tooltip.Content showArrow={false}>No arrow</Tooltip.Content>Alignment
align으로 트리거에 대한 정렬을 조정합니다.
<Tooltip.Content align="start">Start</Tooltip.Content>
<Tooltip.Content align="center">Center</Tooltip.Content>
<Tooltip.Content align="end">End</Tooltip.Content>Provider
Tooltip.Provider로 전역 딜레이 설정을 관리합니다. skipDelayDuration을 통해 연속 호버 시 다음 툴팁이 즉시 표시됩니다.
<Tooltip.Provider delayDuration={400} skipDelayDuration={200}>
{/* All tooltips inside share these delay settings */}
<Tooltip>
<Tooltip.Trigger asChild>
<Button>First</Button>
</Tooltip.Trigger>
<Tooltip.Content>First tooltip</Tooltip.Content>
</Tooltip>
</Tooltip.Provider>API
Component Structure
Tooltip— Radix Tooltip.Trigger호버/포커스 대상.ContentProps툴팁 본체 (variant, size, side, arrow).Arrow화살표 인디케이터 (Content 내장).Portal포털 (Content 내장).ProviderProps전역 딜레이 설정Props
Tooltip (Root)
openundefinedboolean툴팁 표시 상태 (제어 모드)
defaultOpenfalseboolean초기 표시 상태 (비제어 모드)
onOpenChangeundefined(open: boolean) => void표시 상태가 변경될 때의 콜백
delayDuration200number호버에서 표시까지의 딜레이 (ms)
disableHoverableContentfalseboolean콘텐츠 위에 호버해도 표시 유지 안 함
| Name | Type | Default | Description |
|---|---|---|---|
open | boolean | undefined | 툴팁 표시 상태 (제어 모드) |
defaultOpen | boolean | false | 초기 표시 상태 (비제어 모드) |
onOpenChange | (open: boolean) => void | undefined | 표시 상태가 변경될 때의 콜백 |
delayDuration | number | 200 | 호버에서 표시까지의 딜레이 (ms) |
disableHoverableContent | boolean | false | 콘텐츠 위에 호버해도 표시 유지 안 함 |
Tooltip.Content
variant"default""default" | "inverted"외관 variant. default: 어두운 배경+그림자, inverted: 글라스모피즘
size"default""sm" | "default"텍스트 크기
side"top""top" | "right" | "bottom" | "left"표시 방향
sideOffset6number트리거와의 거리 (px)
align"center""start" | "center" | "end"트리거에 대한 정렬
showArrowtrueboolean방향 화살표 표시
| Name | Type | Default | Description |
|---|---|---|---|
variant | "default" | "inverted" | "default" | 외관 variant. default: 어두운 배경+그림자, inverted: 글라스모피즘 |
size | "sm" | "default" | "default" | 텍스트 크기 |
side | "top" | "right" | "bottom" | "left" | "top" | 표시 방향 |
sideOffset | number | 6 | 트리거와의 거리 (px) |
align | "start" | "center" | "end" | "center" | 트리거에 대한 정렬 |
showArrow | boolean | true | 방향 화살표 표시 |
Tooltip.Provider
delayDuration700number전역 호버 딜레이 (ms)
skipDelayDuration300number연속 호버 시 딜레이 스킵 시간 (ms)
disableHoverableContentfalseboolean전역적으로 콘텐츠 호버 유지 비활성화
| Name | Type | Default | Description |
|---|---|---|---|
delayDuration | number | 700 | 전역 호버 딜레이 (ms) |
skipDelayDuration | number | 300 | 연속 호버 시 딜레이 스킵 시간 (ms) |
disableHoverableContent | boolean | false | 전역적으로 콘텐츠 호버 유지 비활성화 |
Anatomy
Best Practices
권장
- ✓아이콘 버튼과 액션의 보조 설명에 Tooltip을 사용합니다
- ✓텍스트는 짧고 간결하게 유지합니다 (1~2줄 이내)
- ✓키보드 단축키 표시에 Tooltip을 활용합니다
- ✓잘린 텍스트의 전체 내용을 표시할 때 Tooltip을 사용합니다
지양
- ✕필수 정보를 Tooltip에만 넣지 않습니다. 항상 표시되는 텍스트에도 작성합니다
- ✕링크, 버튼 등 인터랙티브 콘텐츠를 Tooltip에 넣지 않습니다. Popover를 사용합니다
- ✕긴 단락이나 리치 콘텐츠를 Tooltip에 넣지 않습니다
- ✕터치 기기 사용자에게 필요한 정보를 Tooltip에만 제공하지 않습니다
Tooltip vs Popover
비슷한 플로팅 UI이지만 용도와 인터랙션이 다릅니다.
트리거
Tooltip: 호버 / 포커스
Popover: 클릭
콘텐츠
Tooltip: 텍스트만 (짧은 보조 정보)
Popover: 리치 (폼, 버튼, 링크)
인터랙션
Tooltip: 없음 (읽기만 가능)
Popover: 있음 (조작 가능)
기본 방향
Tooltip: top (읽기 흐름을 방해하지 않음)
Popover: bottom (자연스러운 위→아래 조작)
닫기
Tooltip: 호버 해제 시 자동
Popover: 외부 클릭 / Esc / 닫기 버튼
ARIA
Tooltip: role="tooltip"
Popover: aria-expanded + aria-controls
| 특징 | Tooltip | Popover |
|---|---|---|
| 트리거 | 호버 / 포커스 | 클릭 |
| 콘텐츠 | 텍스트만 (짧은 보조 정보) | 리치 (폼, 버튼, 링크) |
| 인터랙션 | 없음 (읽기만 가능) | 있음 (조작 가능) |
| 기본 방향 | top (읽기 흐름을 방해하지 않음) | bottom (자연스러운 위→아래 조작) |
| 닫기 | 호버 해제 시 자동 | 외부 클릭 / Esc / 닫기 버튼 |
| ARIA | role="tooltip" | aria-expanded + aria-controls |
Tooltip은 호버 시 표시되는 짧은 보조 텍스트에 사용합니다. 링크나 버튼 같은 인터랙티브 콘텐츠가 필요하면 Popover를 사용합니다.
Accessibility
키보드 조작
ARIA / WCAG
role="tooltip"Radix가 자동으로 부여aria-describedby자동 연결- WCAG 1.4.13: 콘텐츠 호버 시 유지
- 자동 충돌 회피 (화면 밖 넘침 방지)