Use when implementing expand and collapse content sections.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Use when you need to switch between different views.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
설치 방법 보기설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.
Switch between different views
Tabs organize content into multiple panels that share the same space, allowing users to switch between views without leaving the page. Only one tab panel is visible at a time, while the tab list provides persistent indicators of all available sections. Tabs reduce information overload by letting users focus on one content section at a time while keeping the full set of options visible and reachable with a single click or keyboard press.
Use Tabs to organize related content into parallel sections at the same hierarchy level where users benefit from switching between views. Common scenarios include:
references/pattern.md, then choose the smallest viable variation.Do's ✅
role="tablist" on the tab container, role="tab" on each tab, and role="tabpanel" on each panelaria-selected="true" on the active tab and aria-selected="false" on inactive tabsaria-controls (on tab) and aria-labelledby (on panel)tabindex: active tab gets 0, inactive tabs get -1tabindex="0" to the active panel so users can Tab into the content
Don'ts ❌<a>) for tabs unless they navigate to a different URLKeep All Panels in DOM (Hidden)
<!-- Better than removing from DOM — preserves state -->
<div role="tabpanel" hidden>...</div>
The Problem:
Making each tab focusable with tabindex="0" forces keyboard users to Tab through every tab before reaching the content.
How to Fix It:
Use tabindex="-1" on inactive tabs and tabindex="0" only on the active tab. Navigate between tabs with Arrow Left/Right keys.
The Problem:
Using <div> or <button> without role="tab", role="tablist", or role="tabpanel" makes the tab interface invisible to screen readers.
How to Fix It:
Apply the full ARIA tab pattern: role="tablist" on the container, role="tab" on each trigger, role="tabpanel" on each content area, with aria-controls and aria-labelledby connections.
The Problem: Using tabs for page-level navigation causes full page reloads, breaking the instant-switch expectation of tab interfaces.
How to Fix It: Use a navigation menu for page-level navigation. Tabs should switch in-page content without a page load. If URL sync is needed, use hash fragments.
For full implementation detail, examples, and testing notes, see references/pattern.md.
Pattern page: https://uxpatterns.dev/patterns/navigation/tabs
아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.
로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.
아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.
Use when implementing expand and collapse content sections.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Use when implementing user account configuration and preferences.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Use when implementing social activity and updates stream.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Use when implementing conversational AI chat interfaces.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Use when implementing handling AI-specific errors.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Use when implementing loading states for AI operations.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.