학습
CSS CSS 포지셔닝 기법
CSS CSS 포지셔닝 기법 — 중급
CSS 포지셔닝 기법
1. 도입 (왜 배워야 하는가)
CSS 포지셔닝 기법은 웹 페이지의 레이아웃을 설정하는 데 있어 매우 중요한 역할을 합니다. 웹 개발에서는 사용자의 경험을 극대화하기 위해 요소의 위치를 정교하게 조정해야 합니다. 포지셔닝 기법을 이해하지 못하면, 요소들이 겹치거나 원하는 위치에 배치되지 않아 사용자에게 혼란을 줄 수 있습니다. 예를 들어, 쇼핑몰 웹사이트에서 상품 이미지와 설명이 겹친다면 사용자는 정보를 제대로 인지하지 못하게 됩니다. 따라서 포지셔닝 기법을 숙지하는 것은 성공적인 웹 디자인의 기초입니다.
2. 핵심 개념 설명
CSS의 포지셔닝 기법에는 여러 가지가 있으며, 각각의 용도와 특성이 있습니다.
| 포지셔닝 유형 | 설명 |
|---|---|
| static | 기본값으로, 요소는 문서 흐름에 따라 위치합니다. |
| relative | 요소는 원래 위치를 기준으로 이동합니다. |
| absolute | 가장 가까운 position 속성이 있는 조상 요소를 기준으로 위치합니다. |
| fixed | 뷰포트를 기준으로 고정되어 스크롤해도 위치가 변하지 않습니다. |
| sticky | 스크롤에 따라 상대적 위치에서 고정 위치로 전환됩니다. |
비유하자면, 'static'은 집 안의 가구들이 기본적으로 배치된 상태와 같고, 'relative'는 가구를 조금 이동시키는 것, 'absolute'는 가구를 다른 방으로 옮기는 것, 'fixed'는 가구를 창가에 붙여서 항상 보이게 하는 것, 'sticky'는 가구가 특정 높이에서만 고정되는 것과 비슷합니다.
3. 기본 코드 예제
가장 기본적인 포지셔닝 기법을 살펴보겠습니다.
.box {
position: static; / 기본값, 문서 흐름에 따라 위치 /
width: 100px;
height: 100px;
background-color: blue;
}
위 코드는 .box 클래스를 가진 요소의 기본적인 스타일을 정의합니다.
position: static;: 요소는 문서의 흐름에 따라 위치합니다.width: 100px;: 요소의 너비를 100픽셀로 설정합니다.height: 100px;: 요소의 높이를 100픽셀로 설정합니다.background-color: blue;: 배경색을 파란색으로 설정합니다.
실행 결과: 웹 페이지에 파란색 정사각형이 기본 위치에 표시됩니다.
4. 실전 활용 예제
예제 1: 쇼핑몰의 상품 카드
쇼핑몰에서 상품 카드를 만들 때 absolute 포지셔닝을 사용하여 이미지를 카드의 상단에 고정할 수 있습니다.
.card {
position: relative; / 카드의 기준을 설정 /
width: 200px;
height: 300px;
border: 1px solid #ccc;
}
.card img {
position: absolute; / 카드 내에서 이미지 위치 지정 /
top: 0;
left: 0;
width: 100%;
height: auto;
}
상황 설명: 이 코드는 상품 카드 내에서 이미지를 카드의 상단에 고정하여 사용자가 스크롤해도 카드의 다른 내용은 영향을 받지 않도록 합니다.
예제 2: 고정 네비게이션 바
웹사이트의 네비게이션 바를 고정하려면 fixed 포지셔닝을 사용할 수 있습니다.
.navbar {
position: fixed; / 스크롤해도 위치가 변하지 않음 /
top: 0;
left: 0;
width: 100%;
background-color: white;
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
}
상황 설명: 이 네비게이션 바는 페이지 상단에 고정되어 사용자가 스크롤해도 항상 보이게 하여 탐색을 용이하게 합니다.
5. 흔한 실수와 주의사항
실수 1: 포지셔닝 속성을 잊어버림
.element {
top: 20px; / 포지셔닝 유형이 없으므로 무시됨 /
}
.element {
position: relative; / 포지셔닝 유형을 설정 /
top: 20px; / 이제 위쪽으로 20픽셀 이동 /
}
실수 2: absolute 사용 시 부모 요소 설정 미비
.child {
position: absolute; / 부모 요소가 position을 설정하지 않음 /
}
.parent {
position: relative; / 부모 요소에 position 설정 /
}
.child {
position: absolute; / 부모를 기준으로 위치 결정 /
}
6. 정리
static, relative, absolute, fixed, sticky의 차이점을 이해해야 합니다.