본문 바로가기

개발/HTML

[HTML] 시맨틱 태그 (Semantic Tag) : h1 & header

반응형

시맨틱 태그에는 아주 많은 종류가 있어요.

그 중 이번 글에서는 <h1>과 <header> 에 대해 알아봅시다!

 

 


<h1>

태그가 속해있는 섹션의 제목을 나타냅니다.

<section>
  <!-- 이 섹션의 주요 키워드는 "제목1"입니다. -->
  <h1> 제목1 </h1>
  
  <!-- 
    <p>에 포함되어있는 내용도 <h1>과 같은 섹션으로 묶여있기 때문에
    "제목1"에 관한 내용으로 분석되어요. 
  -->
  <p>내용1</p>
  <p>내용2</p>
</section>

 

`<h1>` 부터 `<h6>` 까지 있으며, 뒤의 레벨(1~6)는 제목의 위계를 의미해요.

`<h1>`은 가장 최상위 섹션의 제목,

`<h2>`는 서브 섹션의 제목,

`<h3>`는 서브 섹션의 부제목 등의 순서로 사용됩니다.

 

제목 요소는 하위에 따라오는 내용을 하나의 섹션으로 묶어요. 

자신보다 높은 위계의 제목 요소를 만나기 전까지 하나의 섹션으로 구분해요.

<body>
  <h1>시맨틱 태그 공부하는 방법</h1>
  <h2>학습하기</h2>
  <p>MDN에 나와있는 시맨틱 태그 정의를 학습한다.</p>
  <h2>예시 찾아보기</h2>
  <h2>직접 구현해보기</h2>
  <h3>MDN 클론코딩</h3>
</body>

<!-- 위의 코드는 아래의 코드와 동일한 의미를 갖습니다. -->
<body>
  <!-- 시맨틱 태그 공부하는 방법 섹션 -->
  <h1>시맨틱 태그 공부하는 방법</h1>
  
  <section>
    <!-- 학습하기 섹션-->
    <h2>학습하기</h2>      
    <p>MDN에 나와있는 시맨틱 태그 정의를 학습한다.</p>
  </section>
  
  <section>
    <!-- 예시 찾아보기 섹션-->
    <h2>예시 찾아보기</h2>
  </section>
  <section>
    <!-- 직접 구현해보기 섹션 --> 
    <h2>직접 구현해보기</h2>
    <section>
      <!-- MDN 클론코딩 섹션 -->
      <h3>MDN 클론코딩</h3>
    </section>
  </section>
</body>

 

두 개 이상의 `<h1>`를 사용할 수 있습니다.

여러 개의 최상위 태그가 올 수 있어요. 

다만, 최상위 태그가 정말로 동일한 위계(중요도)인지 고려가 필요합니다.

 

다른 위계라면 다른 레벨을 사용해야합니다.

<!-- ❌ --> 
<div>
  <!-- 제목1과 부제목2는 위계가 같지 않다. 따라서 구분을 해야한다. -->
  <h1> 제목1 </h1>
  <h1> 제목2 </h1> 
</div>

<!-- ⭕️ --> 
<div>
  <!-- 제목1과 제목2는 동일한 위계이기 때문에 h1으로 선언해도 괜찮다.. -->
  <h1> 제목1 </h1>
  <h1> 제목2 </h1> 
</div>

 

위계를 어기면 안됩니다.

레벨의 숫자가 작을수록 더 큰 카테고리를 의미하고,

레벨의 숫자가 클 수록 하위 카테고리를 의미해요.

 

만약 태그를 사용할 때 역순으로 사용하게 된다면

검색엔진이 페이지를 의도한대로 분석하지 못하게 되어요.

<!-- ❌ -->
<h3>예제</h3>
<section>
  <h2>예제1</h2>
  <h2>예제2</h2>
  <!-- h3의 하위섹션에 h2이 왔다. -->
</section>

<!-- ⭕️ -->
<h2>예제</h2>
<section>
  <h3>예제1</h3>
  <h3>예제2</h3>
  <!-- h2의 하위섹션에 h3이 왔다. -->
</section>

 

위계를 건너뛰면 안됩니다.

`<h1>` 부터 `<h6>`까지 건너뛰는 순서없이 순서대로 사용해야 합니다.

만약 순서를 건너뛴다면 검색엔진이 페이지를 분석할 때 혼란을 야기할 수 있어요.

<!-- ❌ -->
<body>
  <h3>예제</h3>
  <h5>고려사항</h5> <!-- h4태그 없이 h5가 왔다 -->
</body>

<!-- ⭕️ -->
<body>
  <h1>예제</h1>
  <h2>고려사항</h2>
</body>

<header>

제목, 로고 등 페이지의 소개 및 탐색에 도움을 주는 콘텐츠를 포함합니다.

일반적으로 제목 요소 (`<h1>` ~ `<h6>`)를 포함하지만 필수는 아닙니다.

<header>
  <h1>Shelly log</h1>
  <p> 반갑습니다!! </p>
  <img src="images/shelly_logo.jpg">
</header>

 

`<header>`는 섹션을 구분하는 용도가 아닙니다.

`<h1>`태그를 사용하면 그 하위의 내용은 하나의 섹션으로 인식되었습니다.

이것이 섹션을 구분한다는 의미예요!

 

하지만 `<header>`는 여러 태그들을 감싸고 있긴 하지만,

섹션을 구분하는 역할을 하진 않습니다.

<main>
  <header>
    <h1>Shelly Log</h1>
    <h2>소개글</h2>
    <p>포기할 수 없는 경험을 주고싶은 개발자 Shelly 입니다.</p>
    <h2>사용 기술</h2>
  </header>
  <p>React + Typescript</p>
</main>
<!-- 위의 코드와 아래 코드는 동일한 의미로 간주됩니다.-->
<main>
  <!-- Shelly Log 색션-->
  <h1>Shelly Log</h1>
      
  <section>
    <!-- 소개글 섹션-->
    <h2>소개글</h2>
    <p>포기할 수 없는 경험을 주고싶은 개발자 Shelly 입니다.</p>
  </section>
    
  <section>
    <!-- 사용기술 섹션 -->
    <h2>사용 기술</h2>
    <p>React + Typescript</p>
  </section>
</main>

 

`<header>` 하위에는 `<header>`, `<footer>` 태그가 올 수 없습니다.

<!-- ❌ -->
<main>
  <header>
    <header>중첩된 header는 올 수 없습니다.</header>
    <footer>header 내부에 footer가 올 수 없습니다.</footer>
  </header>
</main>

추천글

 

[HTML] 시맨틱 태그(Semantic Tag) 가볍게 알아보기

시맨틱 태그 설명 시맨틱 태그란 의미 있는 태그를 뜻합니다. 평소에 어떻게 마크업을 작성하시나요?만약 아래와 같은 페이지를 구현한다고 할 때, 어떻게 마크업 하실 건가요? div만 사용한

shelly-log.tistory.com

 

 

반응형