HTML이 기대한 대로 동작하게 만드는 필수 태그들

1 week ago 8

  • 웹페이지를 브라우저에서 예상한 대로 표시하려면 몇 가지 기본 HTML 태그를 반드시 포함해야 함
  • <!doctype html>은 표준 모드 렌더링을 보장해 레이아웃 계산 오류를 방지함
  • <html lang="en">은 언어 정보 제공으로 접근성, 검색, 번역 품질을 향상시킴
  • <meta charset="utf-8">과 <meta name="viewport" ...>은 각각 문자 인코딩모바일 표시 비율을 제어함
  • 이런 태그들은 단순한 형식 요소가 아니라, 웹 표준과 사용자 경험의 일관성을 유지하는 핵심 구성요소임

HTML 기본 구조와 필수 태그 개요

  • 글은 Alex Petros의 발표중 “Incantations that make HTML work correctly” 슬라이드에서 영감을 받아 작성된 내용임
    • 저자는 브라우저에서 HTML 파일을 직접 열 때 항상 포함해야 하는 기본 스니펫을 정리함
    • 예시로 제시된 기본 구조는 다음과 같음 <!doctype html> <html lang="en"> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1.0">
  • 각 태그는 브라우저가 HTML을 표준적으로 해석하고 표시하도록 돕는 역할을 함
    • 누락 시 브라우저가 비표준 모드(quirks mode) 로 전환되거나, 문자 깨짐, 모바일 화면 축소 등 문제가 발생함

<!doctype html> — 표준 모드 선언

  • <!doctype html>은 브라우저가 표준 모드(standards mode) 로 렌더링하도록 지시하는 선언임
    • 이 선언이 없으면 브라우저는 quirks mode로 전환되어, 과거 비표준 HTML 동작을 에뮬레이션함
    • 그 결과 레이아웃, 크기, 정렬 계산이 달라져 예기치 않은 표시 오류가 발생함
  • <!doctype html>은 대소문자 구분이 없으며, <!DOCTYPE HTML>이나 <!doCTypE HTml> 등 어떤 형태로도 인식됨
    • 저자는 “1998년식 마크업을 쓰고 싶다면 대문자로 써도 된다”고 농담을 덧붙임

<html lang="en"> — 문서 언어 지정

  • <html lang="en">은 문서의 기본 언어를 명시하는 태그임
    • 이 정보는 브라우저, 검색엔진, 스크린리더 등 다양한 도구가 활용함
  • 주요 활용 예시
    • 스크린리더가 올바른 발음과 음성 톤을 선택
    • 검색엔진이 색인 및 번역 정확도를 향상
    • 맞춤법 검사 등 로케일 기반 기능을 적용
  • 언어 속성을 생략해도 화면상 문제는 없어 보이지만, 주변 도구들이 잘못된 처리를 할 수 있음
    • 따라서 HTML 내부에 명시적으로 포함하는 것이 바람직함
  • 서버 응답 헤더로도 언어 정보를 전달할 수 있으나, 로컬 파일을 직접 열 때는 HTML 내 지정이 더 안전
    • 예시 코드 return new Response( "<!doctype html><h1>Hello world</h1>", { status: 200, headers: { "Content-Type": "text/html; charset=utf-8" }, } );

<meta charset="utf-8"> — 문자 인코딩 지정

  • <meta charset="utf-8">은 브라우저가 문서의 문자 인코딩 방식을 인식하도록 함
    • 이를 통해 é, ü, ñ, ©, ™, ®, …, 👍 등 비ASCII 문자가 올바르게 표시됨
  • 이 태그가 없으면 문서 내 특수문자나 스마트 인용부호가 깨져 보일 수 있음
    • 저자는 자신의 블로그에서 “스마트 인용부호(smart quotes)”가 깨지는 사례를 예로 듦
  • 예시 비교
    • <meta charset="utf-8">이 없는 경우: 특수문자와 이모지가 깨짐
    • 포함한 경우: 모든 문자가 정상 표시
  • 블로그에는 두 경우를 비교한 스크린샷 이미지가 첨부되어 있음

<meta name="viewport" content="width=device-width,initial-scale=1.0"> — 모바일 뷰포트 설정

  • 이 태그는 모바일 브라우저에서 화면 비율과 확대 비율을 제어함
    • 누락 시 모바일 기기에서 페이지가 축소되어 작게 표시
  • 저자는 “데스크톱에서는 잘 보이는데, 모바일에서 열면 모든 게 작게 보인다”며 meta viewport 태그를 잊은 사례를 소개함
    • 왼쪽(태그 없음)과 오른쪽(태그 있음) 비교 스크린샷을 통해 차이를 시각적으로 설명함
  • 따라서 간단한 프로토타입이라도 이 태그를 포함해야 기대한 레이아웃 비율을 유지할 수 있음

마무리 — HTML의 진짜 기본

  • 저자는 마지막에 “가장 중요한 스니펫을 잊었다”며 농담을 던짐
    • 예시로 다음 코드를 제시 <div id="root"></div> <script src="bundle.js"></script>
  • 이는 현대 웹 개발에서 자주 사용하는 JavaScript 기반 앱 구조를 풍자적으로 언급한 것임
  • 전체적으로 글은 HTML의 기초 태그들이 웹 표준 동작을 보장하는 핵심 요소임을 강조함

Read Entire Article