HTML의 의미를 강조하는 시맨틱 HTML 이해하기

GoGoComputer·2024년 11월 6일

HTML CSS study

목록 보기
14/20
post-thumbnail

의미 중심 HTML, 즉 시맨틱 HTML에 대해 쉽고 자세하게 알아보겠습니다. 마지막에는 작동 가능한 전체 실습 코드를 제공해 드릴게요.


1. 시맨틱 HTML이란 무엇인가요?

시맨틱 HTML은 HTML 요소가 단순히 웹 페이지에 어떻게 보이는지를 넘어서, 그 요소가 어떤 의미를 가지고 있는지를 강조하는 것입니다. 즉, 각 HTML 요소가 그 자체로 의미나 목적을 전달하도록 설계된 것입니다.

예시:

  • <nav>: 내비게이션 메뉴를 나타냅니다.
  • <header>: 페이지나 섹션의 머리글을 나타냅니다.
  • <footer>: 페이지나 섹션의 바닥글을 나타냅니다.
  • <article>: 독립적으로 구분되는 콘텐츠를 나타냅니다.
  • <section>: 콘텐츠의 일반적인 섹션을 나타냅니다.

2. 왜 시맨틱 HTML을 사용해야 할까요?

2.1. 가독성 향상

코드를 읽는 사람이 요소의 의미를 바로 이해할 수 있어 코드의 가독성이 높아집니다.

2.2. SEO(검색 엔진 최적화)

검색 엔진은 시맨틱 HTML을 통해 페이지의 구조와 콘텐츠를 더 잘 이해할 수 있어, 검색 결과에서의 노출이 향상됩니다.

2.3. 접근성 향상

스크린 리더 등 보조 기술을 사용하는 사용자들이 페이지의 구조를 더 명확하게 파악할 수 있어, 웹 접근성이 개선됩니다.

3. 시맨틱 요소와 비시맨틱 요소

3.1. 시맨틱 요소

  • 의미를 가진 요소로, 콘텐츠의 구조와 목적을 나타냅니다.
    • 예: <header>, <footer>, <nav>, <main>, <section>, <article>, <aside>

3.2. 비시맨틱 요소

  • 특별한 의미 없이 단순히 레이아웃을 구성하는 데 사용됩니다.
    • 예: <div>, <span>

4. 예제를 통한 이해

4.1. 비시맨틱한 코드

<div>
  <div></div>
  <div>소개</div>
  <div>서비스</div>
  <div>연락처</div>
</div>

위 코드는 <div> 요소만 사용하여 내비게이션 메뉴를 구성했습니다. 하지만 이 코드만 봐서는 이 <div>들이 내비게이션을 위한 것인지 알 수 없습니다.

4.2. 시맨틱한 코드

<nav>
  <ul>
    <li></li>
    <li>소개</li>
    <li>서비스</li>
    <li>연락처</li>
  </ul>
</nav>

이 코드는 <nav> 요소를 사용하여 내비게이션임을 명확히 나타냈습니다. 또한 <ul><li>를 사용하여 목록 구조를 표현했습니다.

5. 시맨틱 요소의 실제 사용 예

5.1. 헤더와 푸터

<header>
  <h1>내 웹사이트</h1>
</header>

<!-- 본문 내용 -->

<footer>
  <p>&copy; 2023 내 웹사이트</p>
</footer>

5.2. 메인 콘텐츠와 사이드바

<main>
  <article>
    <h2>기사 제목</h2>
    <p>기사 내용...</p>
  </article>
</main>

<aside>
  <h3>관련 기사</h3>
  <ul>
    <li>기사 1</li>
    <li>기사 2</li>
  </ul>
</aside>

6. 시맨틱 HTML이 가져오는 변화

6.1. 스타일링의 분리

시맨틱 HTML은 콘텐츠의 의미를 강조하고, 디자인과 레이아웃은 CSS로 처리합니다. 따라서 HTML은 구조와 의미를, CSS는 스타일을 담당하게 됩니다.

6.2. 유지보수의 용이성

코드의 구조가 명확해져서 유지보수가 쉬워집니다. 새로운 개발자가 프로젝트에 참여하더라도 코드의 의미를 빠르게 파악할 수 있습니다.

7. 전체 실습 코드

아래는 시맨틱 HTML을 사용하여 간단한 웹 페이지를 구성한 예제입니다.

<!DOCTYPE html>
<html lang="ko">
<head>
  <meta charset="UTF-8">
  <title>시맨틱 HTML 예제</title>
  <style>
    /* 스타일은 여기에서 작성합니다 */
    body {
      font-family: Arial, sans-serif;
      margin: 0;
    }
    header, nav, main, aside, footer {
      padding: 20px;
    }
    nav ul {
      list-style-type: none;
      padding: 0;
    }
    nav li {
      display: inline;
      margin-right: 15px;
    }
    main {
      float: left;
      width: 70%;
    }
    aside {
      float: right;
      width: 25%;
    }
    footer {
      clear: both;
      text-align: center;
      background-color: #f1f1f1;
    }
  </style>
</head>
<body>

  <header>
    <h1>내 웹사이트</h1>
  </header>

  <nav>
    <ul>
      <li><a href="#"></a></li>
      <li><a href="#">소개</a></li>
      <li><a href="#">서비스</a></li>
      <li><a href="#">연락처</a></li>
    </ul>
  </nav>

  <main>
    <article>
      <h2>첫 번째 기사</h2>
      <p>이것은 첫 번째 기사 내용입니다.</p>
    </article>
    <article>
      <h2>두 번째 기사</h2>
      <p>이것은 두 번째 기사 내용입니다.</p>
    </article>
  </main>

  <aside>
    <h3>사이드바</h3>
    <p>여기는 사이드바 내용이 들어갑니다.</p>
  </aside>

  <footer>
    <p>&copy; 2023 내 웹사이트</p>
  </footer>

</body>
</html>

코드 설명

  • <!DOCTYPE html>: 문서가 HTML5임을 선언합니다.
  • <html lang="ko">: 문서의 언어를 한국어로 설정합니다.
  • <head>: 문서에 대한 메타데이터를 포함합니다.
    • <meta charset="UTF-8">: 문자의 인코딩을 UTF-8로 설정합니다.
    • <title>: 브라우저 탭에 표시될 제목을 설정합니다.
    • <style>: 간단한 CSS 스타일을 정의합니다.
  • <body>: 실제 화면에 보이는 콘텐츠를 포함합니다.
    • <header>: 페이지의 머리글로, 사이트의 제목을 포함합니다.
    • <nav>: 내비게이션 메뉴를 포함합니다.
      • <ul><li>를 사용하여 메뉴 항목을 리스트로 구성합니다.
    • <main>: 주요 콘텐츠 영역입니다.
      • <article>: 독립적인 기사나 글을 나타냅니다.
    • <aside>: 사이드바로, 부가적인 정보를 포함합니다.
    • <footer>: 페이지의 바닥글로, 저작권 정보 등을 포함합니다.

이렇게 시맨틱 HTML을 사용하면 코드의 구조와 의미가 명확해져서 여러 가지 이점을 누릴 수 있습니다. 위의 코드를 직접 실행해 보시고, 각 요소가 어떻게 동작하는지 확인해 보세요!

profile
IT를 좋아합니다.

0개의 댓글