본문 바로가기

웹 개념/css개념 끄적끄적

[css] position: relative, absolute의 차이점 (질&답 형식)

728x90

position: relative 의미?


ChatGPT
"position: relative"는 CSS (Cascading Style Sheets)의 속성으로, HTML 요소의 위치를 상대적으로 설정하는 데 사용됩니다. 이 속성은 해당 요소를 기본 흐름에서 상대적으로 이동시킬 수 있게 해주며, 다른 요소들과의 상호작용을 가능하게 합니다.

"position: relative"를 사용하면 해당 요소는 원래 위치를 기준으로 상대적으로 이동됩니다. 이동은 "top", "bottom", "left", "right" 속성을 사용하여 지정할 수 있습니다. 예를 들어, 다음과 같은 CSS 코드를 사용하면 요소가 원래 위치에서 오른쪽으로 20픽셀, 아래로 10픽셀 이동합니다.

css
Copy code
.element {
  position: relative;
  top: 10px;
  left: 20px;
}
"position: relative"를 사용하면 요소가 다른 요소들에 대해 겹칠 수도 있습니다. 겹치는 순서는 요소들이 HTML 문서의 순서에 따라 결정됩니다. 따라서, HTML 문서에서 먼저 나타나는 요소가 다른 요소 위에 겹치게 됩니다.

또한, "position: relative"를 설정한 요소에 대해서는 "z-index" 속성을 사용하여 요소들의 쌓임 순서를 조절할 수 있습니다. "z-index" 값이 더 높은 요소가 다른 요소 위에 나타납니다.

"position: relative"는 주로 다른 위치 속성인 "static"의 기본값을 변경하고자 할 때 사용됩니다.





User
position: absolute 도 마찬가지로 상위 컨테이너를 기준으로 움직일 수 있지 않나?
ChatGPT
예, "position: absolute"도 상위 컨테이너를 기준으로 요소를 움직일 수 있습니다.

"position: absolute"는 요소를 문서 흐름에서 제거하고, 가장 가까운 "position: relative", "position: absolute" 또는 "position: fixed"가 설정된 부모 요소를 기준으로 위치를 결정합니다. 만약 부모 요소 중에서 이러한 위치 속성이 적용된 요소가 없다면, 문서의 최상위 요소(body)를 기준으로 위치가 결정됩니다.

다음은 "position: absolute"를 사용하여 요소를 이동하는 예제입니다:

html
Copy code
<style>
  .parent {
    position: relative;
    width: 200px;
    height: 200px;
    background-color: lightgray;
  }

  .child {
    position: absolute;
    top: 50px;
    left: 50px;
    width: 100px;
    height: 100px;
    background-color: blue;
  }
</style>

<div class="parent">
  <div class="child"></div>
</div>
위의 예제에서 .parent는 position: relative로 설정되어 있으므로 .child는 .parent를 기준으로 상대적인 위치를 가집니다. .child의 top과 left 속성은 .parent로부터 50픽셀씩 떨어진 위치로 지정되어 있습니다.

"position: absolute"를 사용하면 요소가 문서 흐름에서 제거되기 때문에, 다른 요소들이 이동하여 해당 요소의 위치와 겹칠 수 있습니다. 이를 조정하기 위해 "z-index" 속성을 사용하여 쌓임 순서를 조절할 수 있습니다.

요약하면, "position: absolute"는 가장 가까운 상위 "position: relative" 또는 "position: absolute"가 설정된 부모 요소를 기준으로 위치를 결정하며, 만약 이러한 요소가 없다면 문서의 최상위 요소(body)를 기준으로 위치가 결정됩니다.





User
그런데 굳이 position: relative 를 쓰는 이유가 있을까?
ChatGPT
"position: relative"를 사용하는 이유는 주로 다음과 같은 경우입니다:

상대적인 위치 조정: "position: relative"를 사용하면 해당 요소를 상대적으로 이동시킬 수 있습니다. 예를 들어, "top", "bottom", "left", "right" 속성을 사용하여 요소를 특정 방향으로 이동시킬 수 있습니다. 이는 레이아웃을 조정하거나 다른 요소와의 상호작용을 위해 유용합니다.

자식 요소의 위치 설정: "position: relative"를 부모 요소에 적용하면, 그 부모 요소 내의 "position: absolute"로 설정된 자식 요소들의 위치를 결정하는 기준이 됩니다. 부모 요소에 "position: relative"를 적용하지 않으면, 자식 요소들은 문서의 최상위 요소(body)를 기준으로 위치가 결정됩니다. "position: relative"를 사용하여 부모 요소를 기준으로 자식 요소들을 배치할 수 있습니다.

쌓임 순서 조절: "position: relative"를 사용한 요소들은 다른 "position" 값 (예: "position: absolute" 또는 "position: fixed")을 가진 요소들과 겹칠 때, 쌓임 순서를 조절할 수 있습니다. "z-index" 속성을 사용하여 요소들의 쌓임 순서를 지정할 수 있습니다.

이와 같은 이유로 "position: relative"를 사용하여 요소의 위치를 상대적으로 조정하거나 자식 요소들의 위치를 설정할 수 있습니다. 그러나 모든 경우에 "position: relative"를 사용해야 하는 것은 아니며, 요구사항에 따라 다른 위치 속성 (예: "position: absolute" 또는 "position: fixed")을 선택할 수도 있습니다.





User
position: absolute 는 1번의 동작이 불가능한가?
ChatGPT
죄송합니다, 이전 답변에서 잘못된 정보를 제공한 것 같습니다. "position: absolute"를 사용하면 요소를 상위 컨테이너를 기준으로 이동시키는 것이 가능합니다. 따라서 "position: absolute"를 사용하면 상대적인 위치 조정도 가능합니다.

요소에 "position: absolute"를 적용하고, 부모 요소에 "position: relative"를 적용하면 해당 요소는 부모 요소를 기준으로 위치가 조정됩니다. 이렇게 하면 부모 요소의 상대적인 위치에 따라 요소가 이동합니다. 부모 요소의 위치가 변경되면 요소도 같이 이동하게 됩니다.

따라서, "position: absolute"를 사용하면 상대적인 위치 조정과 함께 부모 요소를 기준으로 요소를 이동시킬 수 있습니다. 이는 "position: relative"를 사용하지 않고도 가능합니다. "position: absolute"를 사용하면 요소의 위치를 부모 요소 대신 문서의 최상위 요소(body)를 기준으로 설정할 수도 있습니다.

다시 한 번 이해에 혼동을 드려 죄송합니다. "position: absolute"를 사용하면 요소를 상위 컨테이너를 기준으로 이동시킬 수 있습니다.





User
그러니까 position: relative 써서 해당위치를 기준으로 상대적으로 운용하는데, 그 상황에서 position: absolute를 쓴다고 달라지는건 없잔아 또한 너가 말한 position: relative 의 장점중 1번의 경우

absolute를 쓴다고 안되는게 아니자

그렇다면 둘의 결정적이 차이와 운용의 차이를 알려달라고 존재의 이유가 있을 것이 그차이가 명확하게 있을거 아녀
ChatGPT
맞습니다, "position: relative"를 사용하여 해당 위치를 기준으로 상대적으로 운용하고, 이후에 "position: absolute"를 사용하여 요소를 배치하는 것은 가능합니다. 두 속성은 각각 다른 목적과 운용 방식을 가지고 있습니다.

"position: relative"의 목적은 요소를 상대적으로 이동시키는 것입니다. 이는 해당 요소를 원래 위치를 기준으로 상하좌우로 이동시킴으로써 레이아웃을 조정하거나 다른 요소와의 상호작용을 가능하게 합니다. "position: relative"를 사용하면 다른 요소들과의 위치 관계를 유지하며, 요소의 기본 흐름에서의 위치를 변경합니다.

"position: absolute"의 목적은 요소를 문서 흐름에서 제거하고, 가장 가까운 "position: relative", "position: absolute" 또는 "position: fixed"가 설정된 부모 요소를 기준으로 위치를 결정하는 것입니다. 이를 통해 요소를 자유롭게 원하는 위치에 배치할 수 있습니다. "position: absolute"를 사용하면 다른 요소들과의 위치 관계에 대한 영향을 받지 않으며, 요소가 문서의 최상위 요소(body)를 기준으로 위치가 결정됩니다.

따라서, "position: relative"은 요소의 위치를 기준으로 상대적인 이동과 다른 요소들과의 위치 관계 유지를 위해 사용되고, "position: absolute"는 요소의 위치를 부모 요소를 기준으로 자유롭게 배치하기 위해 사용됩니다.

이러한 차이점으로 인해 "position: relative"와 "position: absolute"는 서로 보완적으로 사용될 수 있으며, 요구되는 레이아웃과 배치의 목적에 따라 유연하게 선택하여 사용할 수 있습니다.



결론

position: relative는 현재 위치를 기준으로 상대적으로 표현할 때 사용
position: absolute는 부모 컨테이너 기준으로 표현할 때 사용
서로 기능이 겹치는 경우 당연히 존재함.
하지만, 그렇다고 둘에 차이가 없는건 아님.

728x90