외부 CSS와 float 레이아웃 —
2단·3단 구조 완전 정리
HTML 페이지를 만들 때 가장 먼저 마주치는 두 가지 문제가 있다. (1) CSS를 어디에 둘 것인가 — head 안에 직접? 아니면 별도 .css 파일로 분리? (2) 화면을 어떻게 나눌 것인가 — 헤더/본문/사이드바/푸터 같은 영역을 어떤 방식으로 배치할 것인가? 이 글에서는 외부 CSS 연결법과 float 기반 2단/3단 레이아웃 만드는 법, 그리고 박스에 테두리·라운드를 적용하는 방법까지 한번에 정리한다.
CSS를 <style> 태그로 head 안에 직접 작성하는 것을 "내부 스타일 시트"라고 한다. 이 방법은 페이지가 1개일 때는 편하지만, 여러 페이지가 같은 디자인을 공유해야 할 때 모든 페이지마다 같은 CSS를 반복해서 써야 한다. 외부 CSS 파일로 분리하면 CSS 한 번만 수정해도 모든 페이지에 반영된다.
| 속성 | 값 | 의미 |
|---|---|---|
href |
"layout.css" | 연결할 CSS 파일 경로 |
rel |
"stylesheet" | 이 파일이 스타일시트라는 표시 |
type |
"text/css" | 파일의 MIME 타입 (HTML5에서 생략 가능) |
- 여러 페이지가 같은 CSS를 공유 → 디자인 통일성 유지
- 수정은 한 곳에서, 반영은 전체 페이지에
- HTML 코드가 깔끔해져서 가독성 ↑
- 브라우저가 CSS 파일을 캐시 → 두 번째 페이지부터 로딩 빠름
대부분의 블로그·게시판 사이트가 사용하는 가장 흔한 구조다. 위에 헤더, 가운데 본문 + 옆에 사이드바, 아래에 푸터. 이 구조를 만들려면 본문은 left float, 사이드바는 right float를 쓰고, 푸터에서 clear:both로 float을 해제한다.
3단은 왼쪽 사이드바 - 본문 - 오른쪽 사이드바 구조다. 좌 사이드바는 float:left, 본문도 float:left(좌측에 자연스럽게 붙도록), 우 사이드바만 float:right로 처리한다.
- 본문(왼쪽 float) + 사이드바(오른쪽 float)
- 가장 흔한 블로그 구조
- 본문 영역이 넓어 가독성 좋음
- 좌 사이드 + 본문 + 우 사이드
- 포털·뉴스 사이트에 많음
- 한 화면에 정보 밀도 ↑
float을 이해하는 가장 쉬운 방법은 작은 박스 여러 개를 한 줄에 늘어놓는 연습이다. 각 박스에 float:left를 주면 위에서부터 순서대로 좌측에 붙고, 마지막 박스만 float:right를 주면 같은 줄의 우측 끝에 붙는다.
- 부모가 float 자식의 높이를 인식하지 못해 부모가 0 높이가 됨 → "clearfix" 트릭 필요
- 다음 요소가 float 옆에 따라 붙어버림 →
clear: both로 끊기 - 전체 너비가 컨테이너를 넘으면 다음 줄로 떨어짐 → 너비 계산 정확히
float의 또 다른 흔한 용도는 이미지 옆에 텍스트가 자연스럽게 감기게 하는 것. 신문이나 잡지의 그림 옆 본문 같은 효과다.
float:left + 텍스트의 line-height를 넉넉히 주면 잡지처럼 깔끔한 비주얼이 나온다.<div> 대신 의미 있는 태그를 쓰면 검색엔진과 스크린리더가 페이지 구조를 이해할 수 있다. 주요 시맨틱 태그를 정리하면:
| 태그 | 역할 | 예시 위치 |
|---|---|---|
<header> |
페이지·섹션 머리 | 로고·내비게이션 |
<nav> |
주요 메뉴 링크 | 상단 메뉴 |
<section> |
주제별 영역 | 본문 영역 |
<article> |
독립적인 콘텐츠 단위 | 게시글·카드 |
<aside> |
본문 보조 정보 | 사이드바·관련글 |
<footer> |
페이지 하단 | 저작권·연락처 |
| 속성 | 의미 |
|---|---|
border-radius: 10px |
네 모서리 모두 동일하게 둥글게 |
border-top-left-radius |
좌상단 모서리만 |
border-top-right-radius |
우상단 모서리만 |
border-bottom-left-radius |
좌하단 모서리만 |
border-bottom-right-radius |
우하단 모서리만 |
border: 1px solid |
실선 / dotted(점선) / dashed(파선) / double(이중선) |
| 실수 | 증상 | 해결 |
|---|---|---|
| 너비 합이 컨테이너 초과 | 사이드바가 다음 줄로 떨어짐 | 본문 + 사이드바 + padding 합 ≤ 컨테이너 너비 |
| footer에 clear 안 줌 | 푸터가 사이드바 옆에 붙음 | clear: both 추가 |
| 외부 CSS 경로 오류 | 스타일이 전혀 안 먹힘 | HTML 파일 기준 상대경로 확인 |
| link 태그 self-closing 누락 | 대부분 동작은 함, 하지만 검사기 오류 | HTML5에서는 >로 닫음 (XHTML은 />) |
| float 후 부모 높이 0 | 배경·테두리가 사라져 보임 | clearfix 또는 부모에 overflow: hidden |
외부 CSS · 레이아웃 · float 핵심
Tags
'php' 카테고리의 다른 글
| float — 박스 4개를 좌·우로 배치하기 완전 정리 (0) | 2026.05.04 |
|---|---|
| CSS 3단 레이아웃 — 좌측 사이드 · 본문 · 우측 사이드 완전 정리 (0) | 2026.05.04 |
| HTML 이벤트 메일 — table 레이아웃 · 인라인 스타일 완전 정리 (0) | 2026.05.04 |
| CSS Background — clip · origin · position 완전 정리 (0) | 2026.05.04 |
| CSS display — block · inline · inline-block 완전 정리 (0) | 2026.05.04 |
댓글