
- 프로젝트를 진행하며, 요소를 배치하기 위해 정말 많이 썼던 Position
그런데 막상 Position이 무엇인가, 각 속성은 어떤 역할을 하는가 라고 묻는다면 명확하게 말할 수 없었다.
그래서 다섯 가지 속성에 대한 내용을 정리해보려 한다.
position 속성은 문서 상에 요소를 배치하는 방법을 지정한다.top, right, bottom, left를 통해 요소를 배치할 위치를 결정할 수 있다.position의 계산값이 relative, absolute, fixed, sticky 중 하나인 요소static이 아닌 모든 요소position의 계산값이 relative인 요소top과 bottom은 원래 위치에서 세로축 거리 지정left와 right는 원래 위치에서 가로축 거리 지정position의 계산값이 absolute, fixed인 요소top, right, bottom, left는 요소의 컨테이닝 블록(위치의 기준점이 되는 조상 요소) 모서리로부터의 거리를 지정한다.position의 계산값이 sticky인 요소fixed처럼 화면에 고정한다.공간을 꽉 채우는 경우가 아니라면,
top과 bottom을 지정한 경우(auto가 아닌 경우) top이 우선 적용left와 right를 지정한 경우, direction이 ltr(영어, 한국어 등)이면 left를 우선 적용하고, direction이 rtl(페르시아어, 아랍어, 히브리어 등)이면 right를 우선 적용position: static;top, right, bottom, left, z-index 속성이 아무런 영향을 주지 않는다.position: relative;top, right, bottom, left 값에 따라 오프셋을 적용한다.static일 때와 같다.z-index 값이 auto가 아니면 새로운 쌓임 맥락을 생성한다.position: absolute;top, right, bottom, left 값이 지정한다.position 속성 값이 static이 아닌(fixed, absolute, relative, sticky) 가장 가까운 조상의 내부 여백 영역입니다.z-index 값이 auto가 아니면 새로운 쌓임 맥락을 생성한다.position: fixed;transform, perspective, filter 속성 중 어느 하나라도 none이 아니라면 뷰포트 대신 그 조상을 컨테이닝 블록으로 삼는다.top, right, bottom, left 값이 지정한다.position: sticky;top, right, bottom, left 값에 따라 오프셋을 적용한다.overflow가 hidden, scroll, auto, overlay) 이 존재하는 가장 가까운 조상에 달라붙는다.fixed나 sticky를 포함하는 스크롤 요소가 성능 및 접근성 문제를 유발할 수 있다.fixed나 sticky를 포함하는 요소를 새로운 위치에 페인트 해야 하는데,will-change: transform;
MDN 링크 DaleSeo 링크 해당 링크에서 속성에 대한 다양한 예제를 확인할 수 있다!
문서를 읽으며, 정확히 이해하지 못한 부분에 대해서 알아보려 한다.
absolute 요소에게 바깥 여백을 줬다.

.absolute 클래스에 left: 50px; top: 50px;을 추가한다.
top과 left로 준 만큼 추가되어 초기 컨테이닝 블록에서 떨어진 것을 볼 수 있다. (총 100px씩 떨어져 있다!)sticky 요소를 설정한다..sticky 클래스에 top, bottom, left, right 속성을 주지 않으면, sticky가 작동하지 않는다.
여기에서 부모 요소에게 overflow: scroll; 지정 유무에 따라 다른 것을 확인할 수 있다.
[ scroll-box에 overflow를 지정했을 때 ]

.scroll-box)에 달라붙는다.[ scroll-box에 overflow를 지정하지 않았을 때 ]

gif로 확인하면 다음과 같다.
scroll-box에 overflow를 지정했을 때 |
|---|
![]() |
scroll-box에 overflow를 지정하지 않았을 때 |
|---|
![]() |
position: absolute;
상위 부모의 position: relative; 유무에 따라 달라진다!
[ scroll-box에 position: relative;를 지정했을 때 ]

상위 부모 기준으로 top과 left가 적용된 것을 볼 수 있다.
[ scroll-box에 아무것도 지정하지 않았을 때 ]

상위 부모가 아닌, 초기 컨테이닝 블록을 기준 배치되는 것을 확인할 수 있다.