일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- JavaScript
- 프로그래머스
- 기술면접
- 자바스크립트
- 완전탐색
- 코딩테스트
- 해시
- 알고리즘
- 정렬
- 정규표현식
- CSS
- hash
- 최소공배수
- 리액트
- 백준
- state
- node.js
- sort
- 병합 정렬
- 브루트포스
- JS
- Node
- react
- 합병 정렬
- 코테
- 딥다이브
- BOJ
- useState
- 연결리스트
- 자료구조
- Today
- Total
가치투자자
[HTML] 시멘틱 태그(semantic tag)란? 본문
시멘틱 태그 (Semantic Tag)
1. 시멘틱 태그란?
혹시 여러분은 검색의 원리가 어떻게 되는지 알고 있나요?
검색엔진(Search Engine)은 매일 여러 웹 페이지의 정보를 크롤링하여 수집하고, 그 정보에다가 이용자들이 검색할 만한 키워드에 맞게 인덱스(index)를 붙여주는 인덱싱 작업을 한다. 이때 이용자들이 검색하는 사이트들이 HTML 문서이기에 검색 엔진은 HTML 코드를 기반으로 웹 사이트의 컨텐츠를 분석하고 인덱싱한다.
예시를 통해 좀 더 이해도를 높여보자.
아래 두 코드 모두 제목을 만들기 위한 코드고, 겉으로 보이는 결과물도 유사하지만 검색 엔진은 서로 다르게 인식한다.
첫 번째 코드는 제목 요소(h1 태그)로 인식되지만, 두 번째 코드는 32px 크기의 요소로 받아들여진다.
<h1>Hello</h1>
<head>
<style>
.big {
font-size: 32px;
</style>
</head>
<body>
<span class="big">Hello<span>
</body>
가장 상위 레벨의 제목(header)이라는 의미를 가지는 h1 태그처럼 의미를 가진 태그를 시멘틱 테그(Semantic Tag) 라고 한다.
* 기술면접 질문은 맨 아래에 적혀 있습니다
2. 시멘틱 태그의 장점
1. SEO (검색엔진 최적화, Search Engine Optimization)
HTML4까지는 div 태그에 id를 사용하여 header, nav, main, footer 등을 구분했다. 그러나 앞서 예시를 통해 살펴봤듯이 이 방식으로는 어디가 제목인지, 본문인지, 하단인지 알 수 없다. 이러한 문제를 개선하여 특정 키워드로 검색했을 때 그에 맞는 글이 잘 노출되도록 해주는 것이 시멘틱 태그다.
2. 웹 접근성 (Accessibility)
시멘틱 태그로 코드를 짜면 음성으로 웹 페이지 문서를 읽어주는 스크린리더나 키보드를 이용해서 웹 페이지를 파악할 수 있다. 이로 인해 시각 장애인들이 웹을 더 편리하게 이용할 수 있다.
웹 접근성의 예시는 4-3과 4-4를 참고하길 바란다.
3. 유지보수 (Maintainability)
만약 HTML4때처럼 모든 코드를 div 태그로 짜면 어떨까?
아래 두 코드를 봤을 때, 시멘틱 태그를 사용한 HTML5 문서가 더 명확하게 구조를 파악하기 쉽다. 이로 인해 개발자들은 코드를 수정하고 유지보수하는 데 더 편해질 수 있다.
<!-- HTML4 -->
<div>
<div id="header">헤더</div>
<div>
<div id="nav">네비게이션 바</div>
<div>
<div>컨텐츠1</div>
<div>컨텐츠2</div>
</div>
<div id="aside">사이드바</div>
</div>
</div>
<!-- HTML5 -->
<main>
<header>헤더</header>
<section>
<nav>네비게이션 바</nav>
<article>
<section>컨텐츠1</section>
<section>컨텐츠2</section>
</article>
<aside>사이드바</aside>
</section>
</main>
3. 시멘틱 태그의 종류
3-1. non-semantic 태그
non-semantic 태그에는 div, span 등이 있으며, 요소에 대한 그 어떠한 설명도 해주지 않는다.
3-2. semantic 태그
시멘틱 태그의 대표적 예시에는 다음과 같은 것이 있다.
- header : 제목, 로고, 검색 폼, 작성자 이름 등이 포함된다
- main : 문서의 주요 콘텐츠 영역
- nav : 다른 페이지로의 링크를 보여주는 영역으로, 주로 메뉴, 목차, 색인 등으로 쓰인다
- aside : 문서의 좌측과 우측 사이드 위치 영역으로, 주로 사이드바나 광고, 부수적인 내용이 차지한다
- footer : 바닥글, 문서 하단의 정보가 들어가는 영역
좀 더 다양한 태그에 대하 알고 싶으면 아래 링크를 참고하길 바란다.
https://developer.mozilla.org/ko/docs/Web/HTML/Element
4. 태그들의 차이점
4-1. article 태그와 section 태그
main 태그 내에서 div 태그를 대신해 각 요소의 용도에 따라 article과 section 태그를 사용할 수 있다.
- <article>
: 문서 내에서 독립적인 내용 영역을 구분할 때 사용하는 태그
: 게시판과 블로그 글, 매거진이나 뉴스 기사 등 - <section>
: 카테고리별로 연관 있는 내용들을 묶어주고 싶을 때 사용하는 태그
4-2. button 태그와 a 태그
- <button>
: 클릭 가능한 버튼을 생성하는 태그
: 로그인, 구매, 추천 버튼 등 특정 액션을 하기 위한 버튼 - <a>
: 어디론가 이동할 때 사용하는 태그
: href 특성을 통해 다른 페이지나 같은 페이지 내 특정 위치로 이동할 수 있도록 하는 하이퍼링크를 만들 수 있다
button 태그는 버튼을 만들고, a 태그는 링크 태그를 만들기에 전혀 다른 것이라 생각할 수 있다. 그러나 아래의 코드처럼 a 태그를 버튼처럼 만들 수도 있다. 거기다 CSS로 a 태그를 버튼처럼 꾸민다면 겉으로 보기에는 다를 것이 없다. 그러나 검색 엔진은 이를 버튼이 아닌 a 태그로 인식하기에 좋은 코드가 아니다. 각 시멘틱 태그의 의미에 맞게 사용해야 검색엔진에 최적화할 수 있다.
<form id="myForm">
<input type="text" name="username" placeholder="Username" required>
<input type="password" name="password" placeholder="Password" required>
<a href="#" class="button" onSubmit="handleSubmit()">Submit</a>
</form>
<script>
function handleSubmit() {
// 제출 이벤트
}
</script>
4-3. i 태그와 em 태그
- <i>
: 시각적으로 이탤릭체(기울임)로 텍스트를 쓰고 싶을 때 사용하는 태그 - <em>
: 시각적인 이탤릭체뿐만 아니라, 스크린리더에 강조하고 싶을 때 사용하는 태그
<p>나의 주 언어는 <i>JavaScript</i>이고, 가장 자신있는 프레임워크는 <em>React</em>이다.</p>
4-4. b 태그와 strong 태그
- <b>
: 시각적으로 글자를 강조(bold)하고 싶을 때 사용하는 태그 - <strong>
: 시각적인 글자 강조뿐만 아니라, 스크린리더에서도 강조하고 싶을 때 사용하는 태그
<p>나의 주 언어는 <b>JavaScript</b>이고, 가장 자신있는 프레임워크는 <strong>React</strong>이다.</p>
4-5. img 태그와 background-image
- <img>
: 문서에서의 이미지가 하나의 중요한 요소로 자리잡고 있을 때
- css에서 background-image 스타일링
: 이미지가 없어도 웹 페이지를 읽고 이용하는데 문제가 없는 경우
🌟 기술면접 질문
1. 시멘틱 태그의 장점은 무엇인가요?
먼저, 시멘틱 태그를 사용하여 문서를 구성한다면 검색엔진 최적화가 되어 특정 키워드로 검색했을 때 그 문서가 웹 사이트에 잘 노출될 수 있다. 또한, 스크린리더나 키보드만으로도 웹 페이지를 파악하기 용이해져 웹 접근성도 높아진다. 마지막으로, div 태그로만 문서를 구성했을 때보다 코드의 가독성이 높아져 개발자가 문서의 구조와 각 태그의 기능을 파악하기 쉬워서 유지보수하는 데 큰 도움이 된다.
2. button 태그와 a 태그의 차이점이 무엇인가요?
button 태그는 특정 액션을 하기 위한 버튼을 생성할 때 사용하는 태그이고, a 태그는 어디론가 이동하기 위한 링크 버튼을 만들기 위한 태그다. a 태그에도 이벤트를 주고 스타일링을 하면 겉으로 보기에 button 태그처럼 될 수 있지만, 검색엔진은 이를 button 태그로 인식하지 못한다. 따라서 각 시멘틱 태그의 의미에 맞게 태그를 사용하는 것이 좋다.
</> 끊임없이 성장하기 위해 공부한 내용을 글로 작성하고 있습니다. 틀린 부분이나 추가해야 할 부분이 있다면 언제든 댓글로 남겨주세요❗️
References
- https://developer.mozilla.org/ko/docs/Web/HTML/Element
- https://poiemaweb.com/html5-semantic-web
- https://youtu.be/T7h8O7dpJIg
'Programming > HTML, CSS' 카테고리의 다른 글
[CSS] position (0) | 2023.06.04 |
---|---|
[CSS] display (0) | 2023.06.03 |
[CSS] 선택자 : 가상 클래스 & 가상 요소 (0) | 2023.04.21 |
[CSS] 선택자 (1) | 2023.04.19 |
[CSS] Flexbox 레이아웃 (0) | 2023.04.17 |