프로그래밍/HTML&CSS

[HTML & CSS] position : relative , absolute

삐제제 2020. 11. 8. 19:25

안녕하세요. 오늘은 저번 글에서 설명했던 position 속성의 fixed에 이어서 relative, absolute에 대해서도 기록해보려고 합니다.

 

position : relative 속성은 엘리먼트의 위치를 약간씩 조절할때 유용한 속성입니다.

 

<!DOCTYPE html>
<html>
    <head>
        <title>HTML & CSS</title>
        <style>
            body{
                height: 1000vh;
                margin: 50px;
            }

            div {
                width: 300px;
                height: 300px;
                background-color: wheat;
            }

            .blue{
                background-color: blue;
                width: 100px;
                height: 100px;
            }




        </style>
    </head>
    <body>
        <div>
            <div class="blue"></div>
        </div>
    </body>
</html>

하나의 박스를 만들고 그 안에 작은 파란색 박스를 만들었습니다. 문서에는 이렇게 표시된 상태입니다.

 

이 상태에서 안에있는 작은blue박스의 위치를 조금 움직이고 싶습니다.

이럴때 position : relative를 이용할 수 있습니다. position : relative를 해주게되면, top, bottom, left, right 속성값도 조절할 수 있습니다. 이 값을 이용하여 저희는 작은 blue박스의 위치를 조절하게 되는 겁니다.

 

<!DOCTYPE html>
<html>
    <head>
        <title>HTML & CSS</title>
        <style>
            body{
                height: 1000vh;
                margin: 50px;
            }

            div {
                width: 300px;
                height: 300px;
                background-color: wheat;
            }

            .blue{
                background-color: blue;
                width: 100px;
                height: 100px;
                position: relative;
                top : -10px;
            }




        </style>
    </head>
    <body>
        <div>
            <div class="blue"></div>
        </div>
    </body>
</html>

아래와 같은 사진처럼 됩니다.

파란색 박스가 처음 만들어진 위치 ( 왼쪽 위 ) 에서 위쪽으로 살짝 올라간걸 확인 할 수 있습니다.

여기서 왜 top : -10px 인데 위쪽으로 올라가는지에 대한 의문이 생길 수 있습니다.

그 이유는 top을 기준으로 뺄셈을 하기 때문입니다. 그렇기때문에 - 를 하면 top을 기준으로 생각했을때 작은 박스가 당겨져 오게 되는것이고 그냥 10px를 한다면 밀게 되는것이다.. 라고 이해를 하면 될 것 같습니다.

 

position : relative는 처음 위치한 곳을 기준으로 위치를 수정합니다.

 

relative에 대한 설명은 여기까지 하고,

 

position : absolute에 대해서 설명해보겠습니다.

 

<!DOCTYPE html>
<html>
    <head>
        <title>HTML & CSS</title>
        <style>
            body{
                height: 1000vh;
                margin: 50px;
            }

            div {
                width: 300px;
                height: 300px;
                background-color: wheat;
            }

            .blue{
                background-color: blue;
                width: 100px;
                height: 100px;
                position: absolute;
                right: 10px;
            }




        </style>
    </head>
    <body>
        <div>
            <div class="blue"></div>
        </div>
    </body>
</html>

위와 같이 코드를 작성하면 웹 문서는 아래사진과 같은 형태를 가집니다.

 

 

right : 10px 값을 주었는데 맨 오른쪽으로 가출을 해버렸습니다. 왜 작은 파란색 박스는 저 멀리 떠나버린걸까요?

그리고 right 뿐만 아니라 top, left, bottom 값도 마찬가지로 값을 주면 부모 div 박스를 떠나 저 만치 멀리 떠나버리는 모습을 보여줍니다.

 

이것은 position : absolute 의 성질과 관련이 있습니다.

 

absolute는 가장 가까운 relative 속성을 가진 부모를 기준으로 이동하는 성질을 가지고있습니다.

 

자신의 부모인 살색박스는 relative 속성을 가지고 있지않죠. 그래서 떠나버린것입니다.

그래서 이를 방지하려면 살색박스에게 position : relative를 주는 방법이 있습니다.

그러면 가출했던 작은 파란색박스는 다시 살색박스의 품 안에 들어오게되고, 살색박스의 품 안에서

top, right, left, bottom으로 움직이게 됩니다.

 

여기서 알 수 있는점은 body태그는 기본적으로 relative 속성을 가지고 있다는것입니다.

그렇기때문에 body 기준으로 움직였던 것입니다.

 

이만 설명을 마치겠습니다. 감사합니다. 

'프로그래밍 > HTML&CSS' 카테고리의 다른 글

CSS transition 사용할때 유용한 사이트  (0) 2020.12.08
CSS states MDN  (0) 2020.12.06
[HTML & CSS] position : fixed  (0) 2020.11.08
[HTML&CSS]Flex box  (0) 2020.11.04
HTML & CSS Class 와 id  (0) 2020.10.18