부모 요소 또는 가장 가까이 있는 조상 요소(static 제외)를 기준으로 좌표 프로퍼티(top, bottom, left, right)만큼 이동한다. 즉, relative, absolute, fiexed 프로퍼티가 선언되어 있는 부모 또는 조상 요소를 기준으로 위치가 결정된다.
만일 부모 또는 조상 요소가 staitc인 경우, document body를 기준으로 하여 좌표 프로터티대로 위치하게 된다.
absolute 프로퍼티 선언 시, block 레벨 요소의 width는 inline 요소와 같이 content에 맞게 변화되느로 적절한 width를 지정하여야 한다.
relative 프로퍼티는 기본 위치를 기준으로 좌표 프로퍼티(top, bottom, left, right)를 사용하여 위치를 이동시킨다. 하지만 absoulte 프로터피 요소는 부모 요소의 영역을 벗어나 자유롭게 어디든지 위치할 수 있다.
overflow 프로퍼티는 자식 요소가 부모 요소의 영역을 벗어났을 때 처리 방법을 정의한다.
아래는 overflow 프로퍼티 값에 대한 설명이다.
프로퍼티 값
설명
visible
영역을 벗어난 부분을 표시한다. 기본값
hidden
영역을 벗어난 부분을 잘라내어 보이지 않게 한다.
scroll
영역을 벗어난 부분이 없어도 스크롤 표시한다.(현재 대부분 브라우저는 auto와 동일하게 작동한다.)
auto
영역을 벗어난 부분이 있을때만 스크롤 표시한다.
<!DOCTYPE html>
<html>
<head>
<style>
body {
display: flex;
}
div {
background-color: rgb(187, 187, 187);
padding: 10px;
box-sizing: border-box;
width: 200px;
height: 200px;
margin-right: 20px;
}
.visible {
overflow: visible;
}
.hidden {
overflow: hidden;
}
.scroll {
overflow: scroll;
}
.auto {
overflow: auto;
}
</style>
</head>
<body>
<div class="visible">
<h3>Visibel</h3>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Beatae veniam quisquam tenetur architecto amet possimus omnis ullam error, eius dolores aliquid? Eaque recusandae esse quidem. Provident labore id cupiditate ratione.</p>
</div>
<div class="hidden">
<h3>Hidden</h3>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Beatae veniam quisquam tenetur architecto amet possimus omnis ullam error, eius dolores aliquid? Eaque recusandae esse quidem. Provident labore id cupiditate ratione.</p>
</div>
<div class="scroll">
<h3>Scroll</h3>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Beatae veniam quisquam tenetur architecto amet possimus omnis ullam error, eius dolores aliquid? Eaque recusandae esse quidem. Provident labore id cupiditate ratione.</p>
</div>
<div class="auto">
<h3>Auto</h3>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Beatae veniam quisquam tenetur architecto amet possimus omnis ullam error, eius dolores aliquid? Eaque recusandae esse quidem. Provident labore id cupiditate ratione.</p>
</div>
</html>
7. Conclusion
position: relative;를 지금까지는 단지 absolute값을 설정하기 위해 부모요소 중 원하는 요소에 작성해야하는 프로퍼티로 알고 있었다. 하지만 relative만의 특징이 있었고 그 쓰임새가 absolute와 굉장히 비슷하다는 것을 알았다. 단지 바로 위의 부모 요소인지 아닌지의 차이만 있다. 하지만 지금까지 단독으로 relative를 사용하지 않았던 것을 생각하면 해당 프로퍼티 대신하여 padding을 사용할 수 있어서 그런 것이지 않을까 싶다.
그리고 지금까지 컨텐츠 내의 scroll를 사용하기 위해서는 absolute를 적극적으로 사용했는데 굳이 그러지 않고 relative를 사용해도 될 듯 하다~