Frontend/CSS
CSS Layout 마스터: Position 속성 완벽 정리
미니임
2026. 2. 28. 20:32

웹 디자인에서 요소의 위치를 결정하는 position 속성은 레이아웃의 뼈대를 만드는 핵심 도구입니다. 각 속성의 특징과 실제 활용 사례를 통해 원리를 파악해 보겠습니다.
1. static (기본값)
모든 HTML 요소의 기본값입니다. 요소를 HTML 코드 순서대로 일반적인 문서 흐름(Normal Flow)에 따라 배치합니다.
- 특징: top, bottom, left, right, z-index 속성이 무시됩니다.
- 예시: 별도의 설정을 하지 않은 모든 div, p, h1 태그 등.
.box {
position: static;
/* 아래 속성들은 적용되지 않음 */
top: 20px;
left: 50px;
}
2. relative (상대 위치)
요소를 자신이 원래 있어야 할 위치를 기준으로 이동시킵니다.
- 특징: 요소를 이동시켜도 원래 차지하던 공간은 그대로 유지됩니다. 따라서 주변 요소의 배치에 영향을 주지 않고 자신만 살짝 옮기고 싶을 때 유용합니다.
- 주요 용도: absolute 자식 요소의 기준점(부모) 역할을 할 때 가장 많이 사용됩니다.
코드 예제
<div class="parent">
<div class="box-relative">나의 원래 위치에서 이동합니다.</div>
</div>
.box-relative {
position: relative;
top: 20px; /* 원래 위치에서 아래로 20px */
left: 30px; /* 원래 위치에서 오른쪽으로 30px */
background-color: #ffd700;
}
3. absolute (절대 위치)
가장 가까운 'Position이 설정된(static이 아닌)' 조상 요소를 기준으로 위치를 잡습니다.
- 특징: 문서 흐름에서 완전히 제거되어 공중에 뜬 상태가 됩니다. 원래 차지하던 공간도 사라지므로 주변 요소들이 그 자리를 메우게 됩니다.
- 주의사항: 조상 중 position이 설정된 요소가 없다면 브라우저 창(html 태그)을 기준으로 배치됩니다.
실전 예제: 이미지 위의 뱃지 만들기
<div class="card">
<img src="product.jpg" alt="상품 이미지">
<span class="badge">HOT</span>
</div>
.card {
position: relative; /* 자식인 badge의 기준점이 됨 */
width: 200px;
}
.badge {
position: absolute;
top: 10px;
right: 10px;
background-color: red;
color: white;
padding: 5px 10px;
border-radius: 5px;
}
4. fixed (고정 위치)
요소를 **뷰포트(브라우저 화면)**를 기준으로 고정합니다.
- 특징: 페이지를 스크롤해도 항상 화면의 같은 위치에 남아 있습니다. absolute와 마찬가지로 문서 흐름에서 제외됩니다.
- 주요 용도: 상단 네비게이션 바, 우측 하단의 'Top' 버튼, 팝업 배너 등.
예제: 화면 하단 고정 버튼
.top-button {
position: fixed;
bottom: 20px;
right: 20px;
width: 50px;
height: 50px;
background-color: #333;
color: #fff;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
}
5. sticky (임계점 고정)
relative와 fixed의 특징을 동시에 가집니다. 일반적인 흐름에 있다가 스크롤이 특정 지점에 도달하면 화면에 고정됩니다.
- 특징: 부모 요소 안에서만 갇혀서 고정됩니다. 부모 요소가 화면 밖으로 사라지면 sticky 요소도 함께 따라 올라갑니다.
- 주요 용도: 표의 헤더(th), 리스트의 카테고리 제목 등.
예제: 스크롤 시 상단에 붙는 메뉴
.header-menu {
position: sticky;
top: 0; /* 스크롤이 상단 0에 닿는 순간 고정됨 */
background-color: #f8f9fa;
padding: 15px;
border-bottom: 1px solid #ddd;
}
요약 및 비교표
속성기준점문서 흐름 차지 여부주요 특징
| static | 문서 흐름 | Yes | 기본값, 좌표 이동 불가 |
| relative | 본래 위치 | Yes | 자기 자신 기준 이동, 부모 기준점으로 활용 |
| absolute | 위치가 설정된 부모 | No | 부모를 기준으로 자유롭게 배치 |
| fixed | 브라우저 화면 | No | 스크롤과 무관하게 화면에 박제 |
| sticky | 부모 요소 내부 | Yes | 특정 스크롤 지점에서 고정 |
CSS Position 속성은 개념만 보면 간단해 보이지만, 실제 프로젝트에서 각 속성들이 어떻게 상호작용하는지 직접 코드를 작성해 보는 것이 중요합니다. 특히 relative 부모와 absolute 자식 관계를 완벽히 이해한다면 대부분의 복잡한 레이아웃을 구현할 수 있을 것입니다.
반응형