Z-index
요소 종류별 쌓임 순서(z-index) 토큰
z-index는 요소가 서로 겹칠 때 무엇이 위에 표시될지를 정합니다. 요소 종류별로 정해진 토큰만 사용하면 그 순서가 예측 가능하게 유지됩니다.
개요
각 토큰은 UI 요소의 종류를 나타내며, 값이 클수록 다른 요소보다 위에 표시됩니다. 예를 들어 값이 가장 큰 tooltip은 modal·drawer보다 위에 놓입니다.
토큰은 두 묶음으로 나뉩니다.
- 일반 UI 레이어: 일반적인 UI 요소에 사용하는
1000~1500 - 특수 레이어: 모든 요소보다 위에 표시되어야 하는
syncBorder(10000)
전체 구조
아래 그림은 각 토큰이 놓이는 순서를 보여줍니다.
오른쪽 아래로 갈수록 값이 크고 앞쪽에 놓이며, 모든 레이어의 최상위에 있는 syncBorder는 점선으로 구분했습니다.
mobileStepper1000
fab1050
speedDial1050
appBar1100
drawer1200
modal1300
popoverOverModal1310
snackbar1400
tooltip1500
syncBorder10000최상위
일반 UI 레이어
일반적인 UI 요소가 겹칠 때의 순서는 이 토큰으로 지정합니다. 값은 1000부터 1500까지입니다.
| 토큰 | 값 | 용도 |
|---|---|---|
| mobileStepper | 1000 | 모바일 화면 하단에 고정되는 단계 인디케이터(스텝퍼) |
| fab | 1050 | 콘텐츠 위에 떠 있는 주요 액션 버튼(FAB) |
| speedDial | 1050 | FAB를 눌러 펼쳐지는 액션 메뉴 |
| appBar | 1100 | 상단에 고정되는 앱 바·헤더 |
| drawer | 1200 | 화면 옆에서 밀려 나오는 드로어·사이드 패널 |
| modal | 1300 | 배경(scrim)을 덮고 뜨는 모달·다이얼로그 |
| popoverOverModal | 1310 | 모달 위에 겹쳐 떠야 하는 팝오버·드롭다운 |
| snackbar | 1400 | 일시적으로 표시되는 스낵바·토스트 알림 |
| tooltip | 1500 | 요소에 포커스·호버 시 표시되는 툴팁 |
speedDial은fab를 눌러 펼치는 메뉴라, 둘은 같은 자리에 함께 떠 서로 겹치지 않으므로 같은 값(1050)을 공유합니다.
특수 레이어
syncBorder는 일반 UI 레이어(1000~1500) 위에 항상 표시되어야 하는 특수 용도입니다. 값을
10000으로 크게 두어 일반 레이어와 겹치지 않도록 분리했으며, 일반 UI 요소에는 사용하지 않습니다.
| 토큰 | 값 | 용도 |
|---|---|---|
| syncBorder | 10000 | 모든 UI 위에 항상 떠 있어야 하는 특수 오버레이 |
사용법
앱에서 직접 지정할 때는 z-index 토큰을 CSS 변수로 참조합니다.
css
.overlay {
z-index: var(--ids-z-index-modal);
}mildang-frontend 저장소에서 DS 소스를 직접 사용하는 경우에는 shorthand zIndex="modal"도 사용할 수 있습니다.
권장 사항
| 구분 | 내용 |
|---|---|
| 권장 | 요소의 종류에 맞는 토큰을 사용합니다(모달은 modal, 툴팁은 tooltip). |
| 권장 | 모달 위에 겹쳐야 하는 팝오버·드롭다운에는 popoverOverModal을 사용합니다. |
| 지양 | 스케일에 없는 임의의 z-index 값(9999 등)을 하드코딩하지 않습니다. |
| 지양 | syncBorder는 특수 용도이므로 일반 UI 레이어에는 사용하지 않습니다. |
개요
전체 구조
일반 UI 레이어
특수 레이어
사용법
권장 사항