본문 바로가기
HTML, CSS

[CSS] postion 종류

by jeuwol 2023. 9. 20.

[CSS] postion 종류

문서 상에 요소를 배치하는 방법을 지정한다.

 

 

1. position: static

요소를 일반적인 문서 흐름에 따라 배치한다.
기준이 없고 좌표적용이 안된다. (top, bottom, right, left, z-index)

<style>
    .child {
        border: 0.5px solid;
        height: 50px;
    }
    .box {
        display: inline-block;
        position: static;
        border: 0.5px solid;
        height: 50px;
        width: 50px;
    }
</style>

<div class="container" style="width: 300px;">
    <div class="element" style="border: 1px solid;">
        <div class="child"></div>
        <div class="child">
            <div class="box">ONE</div>
            <div class="box">TWO</div>
            <div class="box">THREE</div>
        </div>
        <div class="child"></div>
    </div>
</div>

position: static

 

 

2. position: relative

요소를 일반적인 문서 흐름에 따라 배치한다.
자기자신을 기준으로 좌표를 설정한다.

<style>
    .child {
        border: 0.5px solid;
        height: 50px;
    }
    .box {
        display: inline-block;
        position: relative;
        border: 0.5px solid;
        height: 50px;
        width: 50px;
    }
    .position {
        top: 20px;
        left: 20px;
    }
</style>

<div class="container" style="width: 300px;">
    <div class="element" style="border: 1px solid;">
        <div class="child"></div>
        <div class="child">
            <div class="box">ONE</div>
            <div class="box position">TWO</div>
            <div class="box">THREE</div>
        </div>
        <div class="child"></div>
    </div>
</div>

position: relative

 

 

3. position: absolute

가장 가까운 위치 지정 부모 요소에 대해 상대적으로 배치한다.
단, 부모 요소는 static이 아닌 위치가 설정 되어 있어야 한다. (relative, fixed, absolute)

해당 부모 요소가 없으면 body를 기준으로 한다.

<style>
    .element {
        position: relative;
    }

    .child {
        border: 0.5px solid;
        height: 50px;
    }

    .box {
        display: inline-block;
        position: static;
        border: 0.5px solid;
        height: 50px;
        width: 50px;
    }

    .position {
        position: absolute;
        top: 5px;
        left: 5px;
    }
</style>

<body>
    <div class="container" style="width: 300px;">
        <div class="element" style="border: 1px solid;">
            <div class="child"></div>
            <div class="child">
                <div class="box">ONE</div>
                <div class="box position">TWO</div>
                <div class="box">THREE</div>
            </div>
            <div class="child"></div>
        </div>
    </div>
</body>

position: absolute

 

4. position: fixed

기준이 브라우저 창 (viewport)

<style>
    .child {
        border: 0.5px solid;
        height: 50px;
    }

    .box {
        display: inline-block;
        position: static;
        border: 0.5px solid;
        height: 50px;
        width: 50px;
    }

    .position {
        position: fixed;
        top: 5px;
        left: 5px;
    }
</style>

<body>
    <div class="container" style="width: 300px;">
        <div class="element" style="border: 1px solid;">
            <div class="child"></div>
            <div class="child">
                <div class="box">ONE</div>
                <div class="box position">TWO</div>
                <div class="box">THREE</div>
            </div>
            <div class="child"></div>
        </div>
    </div>
</body>

position: fixed

 

 

5. position: sticky

fixed와 유사한데, 스크롤 시 해당 요소가 화면에 나오면 고정 시킨다.
 - 스크롤을 할 부모 박스가 있어야 한다.
 - top 등 좌표 속성과 함께 써야 제대로 보인다.

<style>
    .box {
        display: inline-block;
        position: static;
        border: 0.5px solid;
        height: 50px;
        width: 50px;
    }

    .position {
        position: sticky;
        top: 5px;
    }
</style>

<body>
    <div class="container" style="width: 300px;">
        <div class="element" style="border: 1px solid; height: 1500px; position: relative;">
            <div class="box">ONE</div>
            <div class="box position">TWO</div>
            <div class="box">THREE</div>
        </div>
    </div>
</body>

position: sticky 스크롤 전
position: sticky 스크롤 후

 

참조

https://codingapple.com/course/html-basics/

https://tcpschool.com/css/css_position_position

'HTML, CSS' 카테고리의 다른 글

[CSS] display 종류  (0) 2023.08.29
[CSS] 가운데 정렬 하기  (0) 2023.08.28