본문 바로가기
디자인

HTML과 CSS 기초: position 속성 완벽 가이드

by designnozzle 2024. 12. 4.
반응형

HTML과 CSS에서 레이아웃을 구성할 때 가장 중요한 속성 중 하나는 position입니다. 이 속성은 요소가 웹 페이지에서 어디에 위치할지를 결정하며, 다른 요소와의 관계에 따라 위치를 조정할 수 있습니다. 이번 글에서는 CSS의 position 속성에 대해 알아보고, 다양한 값의 차이와 실무에서의 활용 방법을 설명합니다.


1. position 속성이란?

position 속성은 HTML 요소의 위치를 제어하는 CSS 속성입니다. 기본적으로 HTML 요소는 문서 흐름에 따라 배치되지만, position 속성을 사용하면 특정 요소를 원하는 위치로 이동시키거나 고정할 수 있습니다.

 

2. position 속성의 값과 특징

1) static (기본값)

- 요소가 문서 흐름에 따라 기본 위치에 배치됩니다.
- 별도로 위치를 설정하지 않은 상태입니다.
- top, right, bottom, left 속성을 사용할 수 없습니다.

.element {
  position: static; /* 기본값 */
}

 

특징:
- 문서의 기본 흐름을 따릅니다.
- 별다른 위치 변경이 필요 없는 요소에 적합.

 

 

 

2) relative (상대 위치)

- 요소를 자기 자신의 원래 위치를 기준으로 이동합니다.
- top, right, bottom, left 속성을 사용하여 이동 가능합니다.

.element {
  position: relative;
  top: 20px; /* 기존 위치에서 아래로 20px 이동 */
  left: 10px; /* 기존 위치에서 오른쪽으로 10px 이동 */
}

 

특징:
- 요소는 원래 자리(문서 흐름)에 남아 있지만, 시각적으로 이동합니다.
- 레이아웃 조정이나 자식 요소의 기준점으로 사용됩니다.

 

 

3) absolute (절대 위치)

- 요소를 가장 가까운 relative, absolute, fixed 조상 요소를 기준으로 위치를 설정합니다.
- 조상 요소가 없으면 문서의 <html> 요소를 기준으로 위치를 계산합니다.

.element {
  position: absolute;
  top: 50px; /* 기준 요소의 위쪽에서 50px 아래로 */
  left: 100px; /* 기준 요소의 왼쪽에서 100px 오른쪽으로 */
}

 

특징:
- 요소는 문서 흐름에서 제거되므로 다른 요소와 겹칠 수 있습니다.
- 버튼, 팝업, 툴팁과 같은 UI 요소에 적합.

 


4) fixed (고정 위치)

- 요소를 뷰포트(화면 자체)를 기준으로 고정합니다.
- 스크롤을 하더라도 요소의 위치가 변하지 않습니다

.element {
  position: fixed;
  top: 0;
  right: 0;
}

 

특징:
- 항상 화면에 고정되어야 하는 요소에 사용됩니다.
예: 헤더, 푸터, 스크롤 버튼..

 

 

5) sticky (고정 및 상대 위치 혼합)

- 요소가 스크롤에 따라 상대적 위치로 움직이다가, 특정 조건에서 고정 위치로 전환됩니다.
- top, left, right, bottom 속성을 사용하여 고정될 기준점을 설정합니다.

.element {
  position: sticky;
  top: 10px; /* 스크롤 시 상단에서 10px 고정 */
}

 

특징:
- 스크롤을 따라 이동하다가, 지정된 위치에 도달하면 고정됩니다.
- 표 머리글(테이블 헤더) 또는 섹션 제목과 같은 요소에 유용.

 

 

3. 실무에서의 활용 예시


1) relative로 기준점 설정

/*html*/

<div class="container">
  <div class="relative-box">
    <p>이 박스는 기준점입니다.</p>
    <div class="absolute-box">절대 위치 요소</div>
  </div>
</div>
/*css*/

.relative-box {
  position: relative;
  width: 200px;
  height: 200px;
  background: lightblue;
}

.absolute-box {
  position: absolute;
  top: 50px;
  left: 50px;
  width: 100px;
  height: 100px;
  background: coral;
}

결과: absolute-box는 relative-box를 기준으로 50px 아래, 50px 오른쪽에 위치합니다.

 

 

2) fixed로 고정된 헤더

<header class="fixed-header">
  고정된 헤더
</header>
<main>
  <p>스크롤을 내려도 헤더는 고정됩니다.</p>
</main>
.fixed-header {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  background: navy;
  color: white;
  text-align: center;
  padding: 10px 0;
}

결과: 헤더는 화면 상단에 고정되어 스크롤해도 계속 보입니다.

 

 

3) sticky로 섹션 제목 고정

<section>
  <h1 class="sticky-title">섹션 제목</h1>
  <p>내용이 많아 스크롤됩니다...</p>
</section>

 

.sticky-title {
  position: sticky;
  top: 0;
  background: lightgray;
}

결과: 제목은 스크롤에 따라 움직이다가 화면 상단에 도달하면 고정됩니다.

 

 

 

4. position 속성 선택 가이드


static: 위치 조정이 필요 없는 기본 요소.
relative: 기준점 설정 또는 간단한 위치 조정.
absolute: 특정 기준 요소를 기준으로 요소 배치.
fixed: 화면에 고정된 요소(스크롤 무관).
sticky: 스크롤과 함께 움직이다가 고정될 필요가 있는 요소.

 

 

position 속성은 CSS 레이아웃 설계의 핵심 도구로, 다양한 값과 특성을 통해 요소의 위치를 정밀하게 제어할 수 있습니다. static에서 시작해 relative, absolute, fixed, sticky의 특성을 이해하고, 프로젝트에 맞는 값을 선택하세요. 이를 잘 활용하면 반응형 웹사이트나 정교한 UI를 설계하는 데 큰 도움이 될 것입니다.

 

 

반응형