HTMLHTML 입문 · 2입문

HTML 기본 구조 — head와 body의 역할

HTMLDOCTYPEheadbody구조

집을 짓는 것처럼

집을 지을 때는 설계도가 있어야 합니다. 무턱대고 벽부터 세우면 안 되죠. 기초를 놓고, 골조를 세우고, 그 위에 외장을 입힙니다.

HTML 문서도 마찬가지입니다. 아무 태그나 아무렇게나 쓰면 안 됩니다. 브라우저가 이해할 수 있는 정해진 구조가 있습니다.

지난 편에서 만든 코드를 다시 보면서 각 부분의 역할을 정확히 이해해 봅시다.


전체 구조 한눈에 보기

<!DOCTYPE html>
<html lang="ko">

  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>페이지 제목</title>
  </head>

  <body>
    <!-- 화면에 보이는 내용이 여기에 -->
  </body>

</html>

크게 세 덩어리로 나뉩니다.

부분역할
<!DOCTYPE html>"HTML5 문서입니다" 선언
<head>페이지 정보 (화면에 안 보임)
<body>화면에 보이는 실제 내용

1. <!DOCTYPE html> — 버전 선언

<!DOCTYPE html>

이 한 줄은 "이 파일은 HTML5 형식으로 작성됐습니다" 라고 브라우저에 알려줍니다.

없어도 브라우저가 알아서 해석하지만, 있어야 브라우저가 표준 모드로 페이지를 그립니다. 없으면 브라우저마다 다르게 보일 수 있어서 반드시 첫 줄에 써야 합니다.

태그처럼 생겼지만 태그가 아니라 선언(declaration) 입니다. 닫는 태그가 없어요.


2. <html> — 문서의 시작과 끝

<html lang="ko">
  ...
</html>

모든 HTML 내용을 감싸는 최상위 태그입니다. lang="ko" 속성은 이 페이지가 한국어로 작성됐다는 뜻입니다.

이 속성이 있으면:

  • 스크린 리더(시각 장애인용 보조 도구)가 올바른 언어로 읽어줍니다.
  • 구글 같은 검색 엔진이 언어를 정확히 파악합니다.
  • 브라우저 자동 번역 기능이 더 정확하게 작동합니다.

3. <head> — 눈에 안 보이는 정보들

<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <title>페이지 제목</title>
</head>

<head> 안의 내용은 화면에 직접 표시되지 않습니다. 대신 브라우저와 검색 엔진이 페이지를 이해하는 데 필요한 정보들이 들어갑니다.

<meta charset="UTF-8" />

문자 인코딩 방식을 UTF-8로 설정합니다. UTF-8은 한글, 영어, 일본어, 이모지 등 세계 대부분의 문자를 표현할 수 있는 인코딩입니다.

이 줄이 없으면 한글이 ???ÇÇÇ 같이 깨져서 나옵니다.

<meta name="viewport" content="width=device-width, initial-scale=1.0" />

스마트폰, 태블릿 등 다양한 화면 크기에서 페이지가 올바르게 보이도록 합니다.

이 줄이 없으면 스마트폰에서 화면이 아주 작게 축소되어 글자가 깨알같이 작게 나옵니다.

<title>페이지 제목</title>

브라우저 탭과 즐겨찾기에 표시되는 페이지 제목입니다. 검색 결과에도 이 제목이 나옵니다.

좋은 제목 예시:

<title>내 소개 페이지 — 홍길동</title>
<title>오늘의 일기 | 나의 블로그</title>

4. <body> — 화면에 보이는 모든 것

<body>
  <h1>제목</h1>
  <p>내용</p>
</body>

앞으로 여러분이 작성할 거의 모든 HTML 태그는 <body> 안에 들어갑니다. 글, 이미지, 버튼, 표 등 화면에 실제로 보이는 요소들이 모두 여기에 위치합니다.


주석 달기

코드에 메모를 남기고 싶을 때 주석(comment) 을 사용합니다. 주석은 화면에 표시되지 않습니다.

<!-- 이건 주석입니다. 화면에 보이지 않아요. -->
<h1>안녕하세요!</h1>

<!-- 
  여러 줄 주석도 가능합니다.
  나중에 수정할 때 메모를 남겨두면 편리해요.
-->
<p>내용</p>

코드가 길어지거나 나중에 다시 봤을 때 이해하기 어려울 것 같은 부분에 주석을 달아두는 습관은 아주 좋은 습관입니다.


VSCode 단축키: HTML 기본 구조 자동 완성

VSCode에서 .html 파일을 열고 !를 입력한 뒤 Tab 키를 누르면 기본 구조가 자동으로 생성됩니다. 이걸 Emmet 이라고 합니다.

! + Tab 입력 →
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
</html>

lang="en"lang="ko" 로, <title>Document</title> 를 원하는 제목으로 바꿔 쓰면 됩니다.


직접 해보기 ✏️

아래 요구사항에 맞게 index.html 을 새로 작성해 보세요.

  • DOCTYPE 선언 포함
  • 언어를 한국어로 설정
  • 문자 인코딩 UTF-8
  • 모바일 viewport 설정
  • 탭 제목: "홍길동의 첫 페이지" (이름을 본인 이름으로)
  • body에 자기소개 문장 한 줄 넣기

작성한 후 Live Server로 열어서 탭에 제목이 올바르게 나오는지 확인하세요.


정리

  • <!DOCTYPE html>: HTML5 문서 선언 (항상 첫 줄)
  • <html lang="ko">: 언어 지정 포함 최상위 태그
  • <head>: 화면에 안 보이는 페이지 정보 (charset, viewport, title)
  • <body>: 화면에 보이는 내용 전부
  • <!-- 주석 -->: 화면에 안 보이는 메모

다음 편에서는 <body> 안에서 텍스트를 다루는 다양한 태그들을 배웁니다.

궁금한 점이 있으신가요?

협업·의뢰는 아래로, 가벼운 소통은 인스타그램 @bluefox._.hi도 환영이에요.