고정 그리드 레이아웃 — px로 짠 2단 구조의 한계
2010년대 초반 웹 표준 학습의 출발점이었던 고정폭 레이아웃이다. #wrapper를 960px 고정폭으로 잡고, 그 안에 헤더(120px) → 본문(600px float-left) + 사이드바(300px float-right) → 푸터를 배치한다. 창 너비가 960px보다 좁아지면 가로 스크롤이 생긴다 — 즉 모바일·작은 노트북에선 깨진다.
#wrapper는 전체 페이지 폭을 통제하는 단 하나의 박스다. margin: 0 auto를 줘서 화면이 넓을 때(예: 1920px 모니터) 가운데 960px만 콘텐츠로 쓰고 양옆은 빈 공간으로 비워둔다. 만약 wrapper가 없다면 콘텐츠가 화면 끝까지 늘어나서 줄바꿈이 너무 길어지고 가독성이 떨어진다.
"위·아래 0, 좌·우 자동"이다. 좌·우 auto는 "남은 공간을 양쪽으로 균등 분배"하므로 결과적으로 박스가 가운데로 온다. 이 트릭이 작동하려면 두 가지 조건이 필요하다.
- 너비(width)가 명시되어 있을 것 — 그래야 "남은 공간"이 계산됨
- display가 block이거나 그에 준할 것 — inline은 너비 자체가 없음
- 이번 코드:
#wrapper { width:960px }라 두 조건 만족
옛날 CSS는 좌우 2단 레이아웃을 만들 직접적인 도구가 없었다. float를 활용해 "본문은 왼쪽으로 띄우고, 사이드바는 오른쪽으로 띄우기"로 같은 가로 줄에 두 박스를 놓았다.
clear:both가 footer를 아래로 밀어내 다음 영역과 겹치는 것을 막는다.
이번 코드의 .content는 width:600px + padding:15px다. 기본 box-sizing(content-box)에서는 width가 콘텐츠 영역만의 너비라, 실제 박스가 차지하는 가로 = width + 좌우 padding + 좌우 border다.
| 요소 | width | padding | 실제 차지 폭 |
|---|---|---|---|
| .content | 600px | 좌우 15px+15px | 630px |
| .right-side | 300px | 좌우 15px+15px | 330px |
| 합 | — | — | 960px ✓ |
- 현대식:
* { box-sizing: border-box; }한 줄 - 이러면
width:600px에 padding이 포함되어 항상 600px 박스 - 너비 계산이 직관적이라 실무 표준
이 구조의 가장 큰 약점은 화면이 960px보다 좁을 때 콘텐츠가 잘린다는 점이다. 모바일은 보통 360~430px이라, 폭의 1/3만 보이고 옆은 가로 스크롤로 봐야 한다.
- 모바일에서 가로 스크롤 발생
- 큰 모니터에선 양옆이 비어 빈 공간
- 2010년대 초까진 이게 표준이었음
- %·em·vw 단위로 화면 크기에 따라 비율 조정
- 모바일·태블릿·PC 모두 자연스러움
- 현대 웹의 기본 — 곧 이어 fluid 패턴 학습
| 실수 | 증상 | 해결 |
|---|---|---|
| wrapper width 빠뜨림 | margin:auto 가운데 정렬 안 됨 | width 명시 |
| content + sidebar 합 > wrapper | 사이드바가 아래로 떨어짐 | 너비 합 + padding + border 검산 |
| footer에 clear 누락 | footer가 본문·사이드바 옆으로 들어감 | clear:both |
| viewport meta 누락 | 모바일에서 PC 보기로 축소 표시 | <meta name="viewport" ...> |
| 고정 레이아웃 + 모바일 | 가로 스크롤·잘림 | 가변 단위(%·em) 또는 미디어쿼리 |
| box-sizing 안 정함 | 너비 계산 헷갈림 | * { box-sizing: border-box } |
핵심 한 줄 요약
Tags
'php' 카테고리의 다른 글
| 가변 폰트 심화 — 부모 font-size 기준점 정하기 완전 정리 (0) | 2026.06.21 |
|---|---|
| 가변 그리드 + 가변 폰트 — % 너비와 em 글자 크기 완전 정리 (0) | 2026.06.21 |
| 포트폴리오 — 학술(mstudy.html) 완전 정리 (0) | 2026.06.20 |
| 포트폴리오 — 경력(mcareer.html) 완전 정리 (0) | 2026.06.20 |
| 포트폴리오 — 인적사항(minfo.html) 완전 정리 (0) | 2026.06.20 |
왕진 블로그

댓글