본문 바로가기
코드 정리/CSS

CSS 기본 속성(5) 요소의 배치와 쌓임 순서

by rien_d 2022. 11. 24.

 

 


 

 

< 배치 >

 

position

- 요소의 위치 지정 기준

- 기본값 static : 기준 없음

 

- relative : 요소 자신을 기준

  - 요소를 옮겼을 때 배치 전 자리는 시각적으로만 비어 있음

  - absolute를 위한 사용

 

- absolute : 위치 상 부모 요소를 기준

  - 사용 시 형제 요소와의 상호 작용이 무너지고 요소가 위로 뜨면서 요소가 겹침.

  - 위치상 부모 요소를 relative로 지정 필요

  - 부모/상위 요소에 position값이 없다면 뷰포트를 기준으로 함.

 

-fixed : 뷰포트를 기준 (화면에 고정)

  - 스크롤을 해도 위치가 변하지 않음.

 

=> absolute와 fixed는 display 속성이 block으로 변경됨.

 

위치 지정

top, bottom, left, right -> 음수 사용 가능

단위 : px em rem

기본값 auto (브라우저가 계산)

 

 

<예시>

<body>
  <div class="parent">
    <div class="child">1</div>
    <div class="child">2</div>
    <div class="child">3</div>
  </div>
</body>
.parent {
  width: 400px;
  background-color: royalblue;
  text-align: center;
}
.child {
  width: 100px;
  height: 100px;
  border: 1px solid red;
  background-color: orange;
}

 

2번 요소에 position relative 적용 후 위치 변경 시

.parent .child:nth-child(2) {
  position: relative;
  left: 200px;
  top: 50px;
}

 

=> 원래 있던 자리는 시각적으로만 비어 있게 된다.

=> 원래 자신이 있던 자리를 기준으로 움직임.

=> 부모 요소를 벗어나는 배치가 가능해짐.

 

2번 요소에  position absolute 적용 시

 

.parent .child:nth-child(2) {
  position: absolute;
}

=> absolute 적용으로 주변 형제 요소와의 상호작용이 무너지게 되며 요소가 위로 뜬다.

=> 기존에 2번 요소가 있던 자리에 3번 요소가 올라가면서 요소가 겹치게 된다.

 

 

.parent .child:nth-child(2) {
  position: absolute;
  right: 200px;
}

=> 여기서 바로 위치 값을 적용하면 부모 요소에 position 값이 없으므로 뷰포트를 위치상 부모 요소로 인식하여 움직인다.

 

 

=> 부모 요소에 position 값을 relative로 지정해 주면

=> 이제 부모 요소 내부를 기준으로 요소가 배치된다.

 

 

요소 쌓임 순서 (stack order)

- 어떤 요소가 사용자와 더 가깝게 있는지 결정

 

  1. 요소에 position 속성의 값이 있는 경우 위에 쌓임 (static 제외)
  2. 1번 조건이 같은 경우 z-index 속성의 값이 높을수록 위에 쌓임
  3. 1번 1번 조건이 같은 경우 html의 다음 구조일수록 위에 쌓임

 

** z-index

  - 요소의 쌓임 정도를 지정

  - 기본값 auto

  - 숫자가 높을수록 위에 쌓임 ( -1도 가능)