여러 요소를 겹치는 전통적인 방법은 부모에 `position: relative`, 자식마다 `position: absolute; inset: 0`이었습니다. 이 방식은 자식이 부모의 정상적인 문서 흐름에서 완전히 빠져나오기 때문에, 크기를 percentage로 잡으려면 부모 높이를 따로 지정해야 하고 flex·grid 같은 정렬 시스템과도 잘 어울리지 않습니다.
CSS Grid에서는 더 간단한 방법이 있습니다: 부모에 `display: grid`만 주고, 겹치고 싶은 자식마다 똑같은 `grid-area`(또는 똑같은 `grid-row`/`grid-column`) 값을 줍니다. 명시적으로 이름 붙인 영역이 없으면 암묵적으로 첫 번째 칸(`1 / 1`)이 만들어지고, 그 칸에 배정된 자식들은 전부 같은 위치에서 서로 겹칩니다. `position`을 전혀 건드리지 않고도 겹쳐지므로, 각 레이어는 `place-self`·`justify-self` 같은 그리드 정렬 속성을 그대로 쓸 수 있습니다.
쌓이는 순서(어느 게 위로 오는지)는 DOM 순서를 따르며, 필요하면 `z-index`로 뒤집을 수 있습니다. 뱃지가 이미지 위에 얹히는 카드, 아이콘 위에 진행률 링이 도는 위젯처럼 "레이어 몇 개가 정확히 같은 자리에서 정렬돼야 하는" 상황에 이 패턴이 `position: absolute`보다 코드가 적고 반응형에도 더 안전합니다.
언제 쓰나
배지·아이콘·오버레이처럼 몇 개의 레이어가 정확히 같은 위치에서 정렬돼야 할 때 씁니다. 레이어가 서로 다른 위치로 자유롭게 흩어져야 하면 여전히 `position: absolute`가 맞습니다.