마크다운으로 복사링크 공유

밑줄 탭

상단 주 탭이에요. 밑줄이 고른 탭으로 미끄러지며 옮겨 가요.

모바일PCTossTabs관련 카드 골격 · 알약 탭 · 칩
플랫폼
폰 브라우저·홈 화면 앱(767px 이하)

고르기#

  • 이 이름은 알약 탭(TabsBar)에 합쳤어요. 모양은 그대로이고, 새로 쓸 때는 정본을 써요.

알약 탭 문서 보기 →

사용 예제#

할 일마다 실물과 코드예요. 편집을 누르면 코드를 고쳐 바로 볼 수 있어요.

보는 내용 바꾸기#

눌러 보세요. 밑줄이 고른 탭으로 미끄러져요.

탭 패널과 잇기#

tabId를 주면 탭과 패널이 서로를 가리켜요. 화면 읽기 프로그램이 둘을 함께 읽어요.

해부도#

  1. 1

    탭 목록

    아래 1px 선 위에 탭이 놓여요.

  2. 2

    고른 탭

    굵은 검정 글자예요.

  3. 3

    밑줄

    고른 탭 아래로 300ms 동안 미끄러져요.

속성#

State#

고른 탭은 굵은 검정, 나머지는 옅은 회색이에요.

인터페이스#

타입에서 자동으로 뽑은 표예요.

TossTabs#

속성기본값타입설명
value*-T지금 값이에요.
onChange*-(v: T) => void값이 바뀌면 새 값으로 불러요.
options*-readonly (readonly [T, string])[][값, 이름] 목록이에요.
className-string배치용 클래스예요. 모양(색·크기)은 덮어쓰지 않아요.
tabId-string주면 탭 버튼에 id=`${tabId}-${값}`·aria-controls=`${tabId}-panel`을 단다 - 패널 쪽이 role=tabpanel·aria-labelledby로 받는다.

* 필수예요. 표는 타입에서 자동으로 뽑았어요.

스펙#

상태 · 슬롯마다 실제로 그려지는 값이에요.

TossTabs#

base

상태슬롯속성값
enabledtab줄바꿈안 함
좌우 여백14px
아래 여백10px
위 여백4px
글자 크기t-body-lg
행간1
자간-0.025em
전환 대상색·눌림 크기
indicator포인터받지 않음
높이1px
배경색line
span포인터받지 않음
높이1.5px
배경색ink
전환 대상left·width
시간300ms
이징ease-out(브라우저 기본)
enabled · 폰(767px 이하)tab최소 높이44px
pressedtab크기 배율(기본)0.975 · 버튼 공통 규칙

selected=true

상태슬롯속성값
enabledtab굵기700
글자색ink

selected=false

상태슬롯속성값
enabledtab굵기500
글자색dim
hovertab글자색sub

값은 컴포넌트 코드에서 뽑았고, 토큰 이름을 누르면 파운데이션으로 가요. 토큰이 없는 값만 숫자로 적었어요.

접근성#

역할과 속성#

요소역할 · 속성
목록tablist · aria-orientation="horizontal"
탭tab · aria-selected
tabIdid · aria-controls → 패널의 tabpanel · aria-labelledby

키보드#

키동작
Tab고른 탭 하나에만 들어가요
← →옆 탭으로 옮기며 바로 열어요
Home · End처음 · 마지막 탭

화면 읽기 프로그램#

  • 고른 탭은 "선택됨"으로 읽혀요.

초점#

  • 고른 탭만 Tab 순서에 들어요(roving tabindex). 화살표로 옮기면 초점도 따라가요.

가이드라인#

이렇게 써요#

쓰는 규칙#

이렇게 써요

  • 탭은 2~5개로 둬요.
  • 라벨은 내용의 이름으로 짧게 적어요.

이렇게 하지 않아요

  • 탭 안에 또 탭을 두지 않아요.

문구#

  • 탭 이름은 내용의 이름으로, 짧은 명사로 적어요.

플랫폼별 차이#

플랫폼별 차이
플랫폼차이
모바일

767px 이하에서 누르는 칸과 여백이 커져요(손가락 기준).

PC

마우스가 있는 기기에서만 hover가 켜지고, 키보드 초점 링이 보여요.