2023년 5월 13일 작성
CSS Position - 요소 배치하기
CSS의 position 속성은 문서 상에 요소를 배치하는 방법을 지정합니다.
position 속성
- 문서 상에 요소를 배치하는 방법을 지정합니다.
top,right,bottom,left속성이 요소를 배치할 최종 위치를 결정합니다.
position: static
- 기본값입니다.
- 요소를 일반적인 문서 흐름에 따라 배치합니다.
top,right,bottom,left,z-index속성이 아무런 영향도 주지 않습니다.
position: relative
- 요소를 일반적인 문서 흐름에 따라 배치합니다.
top,right,bottom,left속성으로 offset을 적용합니다.- offset은 자기 자신을 기준으로 하며, 다른 요소에는 영향을 주지 않습니다.
- offset을 적용해도 page layout에서 요소가 차지하는 공간은
static일 때와 같습니다.relative요소가 offset에 의해 다른 요소의 공간을 침범해도, 다른 요소는 밀려나지 않고 겹쳐집니다.
z-index의 값이auto가 아니라면, 새로운 쌓임 맥락을 생성합니다.
position: absolute
- 요소를 일반적인 문서 흐름에서 제거하고, page layout에 공간도 배정하지 않습니다.
- 따라서
absolute요소 아래에 쌓인 요소들이absolute요소의 위치를 차지하며 위로 올라오게 됩니다.
- 따라서
absolute요소의 배치는 위치가 지정된 조상 요소들 중에서 가장 가까운 요소를 기준으로 합니다.- 기준 요소에 상대적으로 배치됩니다.
- 최종 위치는
top,right,bottom,left이 지정합니다. - 조상 중 위치 지정 요소가 없다면 초기 Containing Block을 기준으로 삼습니다.
-
z-index의 값이auto가 아니라면 새로운 쌓임 맥락을 생성합니다. absolute요소의margin은 서로 상쇄되지 않습니다.- 일반적으로 인접한 형제 요소 간의
margin은 서로 상쇄됩니다.
- 일반적으로 인접한 형제 요소 간의
position: fixed
- 요소를 일반적인 문서 흐름에서 제거하고, page layout에 공간도 배정하지 않습니다.
- viewport의 초기 Containing Block을 기준으로 삼아 배치합니다.
- viewport : 현재 화면에 보여지고 있는 다각형(보통 직사각형)의 영역입니다.
- Web browser에서는 현재 창에서 문서를 볼 수 있는 부분을 말합니다.
- viewport 바깥의 content는 scroll 하기 전엔 보이지 않습니다.
- Web browser에서는 현재 창에서 문서를 볼 수 있는 부분을 말합니다.
- 최종 위치는
top,right,bottom,left이 지정합니다. - 요소의 조상 중 하나가
transform,perspective,filter속성 중 어느 하나라도none이 아니라면, viewport 대신 그 조상을 Containing Block으로 삼습니다.
- viewport : 현재 화면에 보여지고 있는 다각형(보통 직사각형)의 영역입니다.
fixed요소는 항상 새로운 쌓임 맥락을 생성합니다.
position: sticky
- 요소를 일반적인 문서 흐름에 따라 배치합니다.
- scroll하기 전에는
static요소와 같이 일반적인 흐름에 따릅니다. - scroll 위치가 임계점에 이르면,
fixed요소처럼 viewport에 고정합니다.
- scroll하기 전에는
- scroll 요소를 기준으로
top,right,bottom,left의 값에 따라 offset을 적용합니다.- offset의 기준이 되는 scroll 요소는
overflow: auto또는overflow: scroll속성을 적용한 가장 가까운 조상 요소입니다. - offset은 다른 요소에는 영향을 주지 않습니다.
- offset의 기준이 되는 scroll 요소는
sticky요소는 항상 새로운 쌓임 맥락을 생성합니다.