CSS 위치 설정 완벽 가이드: Static, Relative, Absolute, Fixed, Sticky

반응형


웹 페이지의 요소를 정확히 원하는 위치에 배치하려면 CSS의 위치 지정(position) 속성을 제대로 이해해야 합니다. 이 글에서는 position 속성의 다섯 가지 유형을 자세히 설명하고, 실무에서 유용한 예제와 함께 활용법을 알려드립니다.

1. CSS position 속성이란?


position 속성은 HTML 요소의 위치를 제어하는 데 사용됩니다. 기본값은 static이며, 이 외에도 relative, absolute, fixed, sticky 등의 값을 설정할 수 있습니다. 이 속성은 다른 레이아웃 속성과 결합해 웹 페이지 디자인의 유연성을 제공합니다.

2. position 속성의 값

2-1. Static (기본값)


• 요소는 HTML 문서의 기본 흐름에 따라 배치됩니다.
• 별도의 위치 조정이 불가능합니다.

div {
    position: static;
}


예시: <div>는 문서의 기본 레이아웃에 따라 자동으로 배치됩니다.

2-2. Relative (상대 위치)


• 요소는 기본 위치에서 상대적으로 이동합니다.
• top, right, bottom, left 값을 사용해 조정 가능합니다.

div {
    position: relative;
    top: 20px;
    left: 10px;
}


예시: 요소는 원래 위치에서 아래로 20px, 오른쪽으로 10px 이동합니다.

2-3. Absolute (절대 위치)


• 요소는 가장 가까운 position이 설정된 부모를 기준으로 배치됩니다.
• 부모 요소에 position이 없으면 전체 문서를 기준으로 배치됩니다.

div {
    position: absolute;
    top: 50px;
    left: 30px;
}


예시: 요소는 기준 요소에서 위쪽으로 50px, 왼쪽으로 30px 이동합니다.

2-4. Fixed (고정 위치)


• 요소는 **뷰포트(화면)**를 기준으로 배치됩니다.
• 스크롤해도 요소가 항상 같은 위치에 고정됩니다.

div {
    position: fixed;
    top: 0;
    right: 0;
}


예시: 요소는 화면의 오른쪽 상단에 고정됩니다.

2-5. Sticky (접착 위치)


• 요소는 특정 스크롤 지점에서 고정됩니다.
• top, left, right, bottom 값을 지정해 고정 위치를 설정합니다.

div {
    position: sticky;
    top: 10px;
}


예시: 스크롤하다가 요소가 뷰포트 상단에서 10px 지점에 도달하면 고정됩니다.

3. CSS z-index 속성


z-index는 요소의 쌓임 순서를 정의합니다. 숫자가 클수록 위쪽에 배치됩니다.
예시:

div {
    position: absolute;
    z-index: 10;
}

4. 실전 예제: 위치 속성 활용하기


HTML

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>CSS 위치 설정</title>
    <link rel="stylesheet" href="styles.css">
</head>
<body>
    <div class="static">Static</div>
    <div class="relative">Relative</div>
    <div class="absolute">Absolute</div>
    <div class="fixed">Fixed</div>
    <div class="sticky-container">
        <div class="sticky">Sticky</div>
    </div>
</body>
</html>


CSS

/* 공통 스타일 */
div {
    width: 100px;
    height: 50px;
    margin: 10px;
    text-align: center;
    line-height: 50px;
    color: white;
    font-weight: bold;
}

/* Static */
.static {
    background-color: gray;
    position: static;
}

/* Relative */
.relative {
    background-color: blue;
    position: relative;
    top: 10px;
    left: 10px;
}

/* Absolute */
.absolute {
    background-color: red;
    position: absolute;
    top: 50px;
    left: 50px;
}

/* Fixed */
.fixed {
    background-color: green;
    position: fixed;
    bottom: 10px;
    right: 10px;
}

/* Sticky */
.sticky-container {
    height: 200px;
    background-color: lightgray;
    margin-bottom: 50px;
}
.sticky {
    background-color: orange;
    position: sticky;
    top: 20px;
}

5. 위치 속성 활용 팁


1. Relative로 배치 후 Absolute 사용:
relative 부모 요소와 absolute 자식 요소를 조합하면 특정 기준으로 배치가 가능합니다.

2. Fixed로 고정 메뉴 만들기:
position: fixed를 활용해 헤더나 네비게이션 바를 스크롤에도 고정시킬 수 있습니다.

3. Sticky로 가독성 개선:
중요한 정보가 포함된 박스를 sticky로 설정해 스크롤 중에도 화면에 표시되도록 합니다.

CSS position 속성은 웹 페이지의 디자인과 사용자 경험을 좌우하는 핵심 요소입니다. relative, absolute, fixed, sticky 등 다양한 값을 조합하면 창의적이고 효율적인 레이아웃을 구현할 수 있습니다. 이 글에서 다룬 개념과 예제를 활용해 실전 프로젝트에서 응용해 보세요.

다음 글에서는 CSS Flexbox와 Grid를 활용한 레이아웃 설계를 다룰 예정입니다.

반응형