모든 HTML 문서는 다음과 같은 기본 구조를 가집니다.
<!DOCTYPE html> <!-- 이 문서가 HTML5 문서임을 선언 -->
<html>
<head>
<!-- 메타데이터: 문서의 정보 (제목, 인코딩, 외부 파일 연결 등) -->
<meta charset="UTF-8">
<title>Page Title</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<!-- 콘텐츠: 브라우저 화면에 실제로 표시될 내용 -->
<header>
<h1>Main Heading</h1>
</header>
<main>
<p>This is a paragraph.</p>
</main>
<footer>
<p>Copyright © 2025</p>
</footer>
</body>
</html>
주요 태그:
<div>, <h1>~<h6>, <p>, <ul>, <li>, <form>)<span>, <a>, <img>, <input>, <strong>)<div>나 <span>처럼 의미 없이 구역을 나누는 태그와 달리, 태그 자체가 콘텐츠의 의미를 명확하게 설명해주는 태그입니다.<header>, <nav>, <main>, <section>, <article>, <aside>, <footer>| 선택자 종류 | 예시 | 설명 |
|---|---|---|
| 타입 선택자 | p { ... } | 모든 <p> 태그에 적용 |
| 클래스 선택자 | .highlight { ... } | class="highlight" 속성을 가진 모든 요소에 적용 (가장 많이 사용) |
| ID 선택자 | #main-title { ... } | id="main-title" 속성을 가진 유일한 요소에 적용 |
| 전체 선택자 | * { ... } | 모든 요소에 적용 (주로 초기화 시 사용) |
| 자손 선택자 | div p { ... } | <div> 요소의 모든 하위 <p> 요소에 적용 |
| 자식 선택자 | ul > li { ... } | <ul> 요소의 바로 아래 자식인 <li> 요소에만 적용 |
| 가상 클래스 | a:hover { ... } | 마우스를 올렸을 때와 같이 특정 상태에 있는 요소를 선택 |
CSS에서 모든 HTML 요소는 사각형의 "박스(Box)"로 간주됩니다. 이 박스는 4개의 영역으로 구성됩니다.
box-sizing: border-box;: 요소의 width와 height를 설정할 때, Padding과 Border를 포함하여 크기를 계산하도록 만드는 매우 중요한 속성입니다. 이를 사용하면 레이아웃을 예측하기가 훨씬 쉬워집니다.
Flexbox는 1차원(가로 또는 세로) 레이아웃을 쉽고 유연하게 구성하기 위한 현대적인 CSS 레이아웃 모델입니다.
핵심 개념:
display: flex;: 레이아웃을 만들고 싶은 부모 요소(Container)에 이 속성을 적용하는 것으로 시작합니다.flex-direction: 아이템이 정렬될 주 축의 방향을 결정 (row, column).justify-content: 주 축 방향으로 아이템들을 정렬 (flex-start, center, space-between).align-items: 교차 축 방향으로 아이템들을 정렬 (flex-start, center, stretch).box-sizing: border-box;는 레이아웃 설계를 용이하게 합니다.display: flex;를 통해 1차원 레이아웃을 매우 유연하고 간단하게 구성할 수 있는 현대적인 CSS 레이아웃 시스템입니다.