CSS3 박스 모델
1. CSS3 개요 및 박스 모델
CSS3는 웹 페이지의 스타일과 레이아웃을 정의하는 최신 스타일 시트 언어입니다. W3C에서 개발 중이며, 대부분의 새로운 기능은 이미 여러 브라우저에 구현되어 있습니다.
- 주요 모듈: 선택자(selector), 박스 모델(box model), 배경 및 경계선(background and border), 텍스트 효과(text effect), 2D/3D 변환, 애니메이션, 다중 컬럼 레이아웃, 사용자 인터페이스 등
박스 모델(Box Model) 개념
HTML의 모든 요소는 브라우저 화면에 출력될 때 **박스(Box)**의 개념을 가집니다. 박스 모델은 HTML 요소를 감싸는 가상적인 박스로, 웹 브라우저는 각 요소를 이 박스로 간주하고 화면에 배치합니다. CSS는 각 박스의 배치, 색상, 경계 등 특징을 지정합니다.
박스 모델 구성 요소
- 콘텐츠(content): 박스의 내용물(텍스트, 이미지 등)
- 패딩(padding): 콘텐츠 주위의 영역(투명, 요소의 배경색 영향 받음)
- 경계(border): 패딩과 내용물을 감싸는 경계(두께, 색상 지정 가능)
- 마진(margin): 경계 바깥의 투명 영역
박스 크기 계산: 전체 크기 = 콘텐츠 크기 + 패딩 + 경계선 두께 + 마진
2. 경계선 (Border) 스타일링
- border-style: 경계선 스타일 지정 (none, dotted, dashed, solid, double, groove, ridge, inset, outset 등, groove/ridge/inset/outset은 3D 효과)
- border-width: 경계선 폭(px, thin, medium, thick)
- border-color: 경계선 색상(green, rgb(0,255,0), #00ff00 등)
- border(축약): 한 줄에 border-width, border-style, border-color 순서로 작성 (예:
border: 5px solid green;) - border-radius: 둥근 경계선
- box-shadow: 경계선에 그림자 추가(가로 오프셋, 세로 오프셋, 번짐, 색상)
예시:
div {
border: 2px solid #333;
border-radius: 8px;
box-shadow: 2px 2px 8px #aaa;
}
3. 마진(Margin)과 패딩(Padding)
요소의 크기 및 변경
- width, height: 모든 요소의 크기 지정
- resize: 사용자가 요소의 높이/너비를 변경할 수 있도록 함 (both, horizontal, vertical, none)
마진(Margin)
박스 경계와 외부 박스 경계 간의 간격
- 속성값: auto(브라우저 계산), length(px, pt, cm 등), %(요소 폭의 %), inherit(부모 상속)
- 양수/음수 모두 지정 가능
- 설정 방법:
- 각 변 별도 지정:
margin-top,margin-right등 - 한 줄에 네 변 지정:
margin: 10px 20px 40px 80px;(top, right, bottom, left) margin: 10px;는 네 변 모두 10px
- 각 변 별도 지정:
패딩(Padding)
콘텐츠와 경계 사이의 간격
- 속성값: length(px, pt, cm 등), %(요소 폭의 %)
- 설정 방법: margin과 동일
요소 수평 정렬
- 인라인 요소(텍스트,
<em>,<span>,<img>등):text-align으로 컨테이너 내 정렬 - 블록 요소(
<p>,<div>등):margin: auto로 컨테이너 내 정렬 (HTML5에서는<p align="center">등 align 속성 삭제)
4. 배경 (Background) 스타일링
- background(축약): 한 줄에 모든 배경 속성 지정 (예:
background: #fff url('back.gif') no-repeat right top;) - background-color: 배경색 지정
- background-image: 배경 이미지 지정
- background-repeat: 배경 이미지 반복 여부(repeat-x, no-repeat 등)
- background-attachment: 배경 이미지 부착 방법(scroll, fixed, local)
- background-position: 배경 이미지 시작 위치(px, %, left top, center center 등)
- background-size: 배경 이미지 크기(px, %, cover, contain 등, CSS3에서 추가)