본문 바로가기

환영합니다. 이 블로그 번째 방문자입니다.
CS Knowledge

Semantic Markup, 시맨틱 마크업

Semantic   의미론적 

Markup      태그를 사용하는 컴퓨터 언어(HTML과 같은)

Semantic Markup  의미가 있는 태그를 사용하는 컴퓨터 언어

 

먼저 의미가 있는 태그란 무엇인지 알아보자

A : <div>, <span>
B : <form>, <table>

 

A,B는 둘 다 HTML의 태그이다. 하지만, 둘 중 하나는 semantic, 다른 하나는 non-semantic 요소이다. 

어떤 것이 의미가 있는 태그일까?

 

정답은 B이다. <form>태그는 사용자에게 입력받는 "형식"이라는 것을 알 수 있고, <table>은 "표"를 의미한다는 것을 알 수 있다. 반면에 <div>와 <span>은 class나 id를 읽기 전까지는 어떤 컨텐츠를 가지고 있는지 알 수가 없다. 즉, 의미가 있는 태그는 컨텐츠의 목적과 내용을 알 수 있게 해주는 태그를 말한다.

 

semantic tag를 사용하는 이유는 무엇일까?

 

# A : semantic code
<header></header>
<section>
	<article>
    	<figure>
        	<img>
        </figure>
    </article>
</section>
<footer></footer>
# B : non-semantic code
<div id="header"></div>
<div class="section">
	<div class="article">
		<div class="figure">
			<img>
		</div>
	</div>
</div>
<div id="footer"></div>

위의 두 코드는 정확히 같은 내용을 가지고 있다. 만약 A와 B코드 중 하나의 내용을 수정해야 한다면 어떤 것을 선택할 것인가?

 

A가 간결하고 한눈에 파악하기 쉬워 접근하기 쉬운 코드라는 생각이 들 것이다. 예시는 고작 9줄밖에 되지 않는 코드지만 실제 사용하는 훨씬 긴 코드를 본다면 더욱 더 A의 편을 들게 될 것이다.  

 

따라서, semantic 태그를 권장하는 이유는 다음과 같다.

  • 읽기 쉽다
  • 사용자의 이해를 돕고 검색엔진 최적화에 유리한 높은 접근성을 가지고 있다
  • 일관된 코드(consistent code)이기 때문에 모두가 알아볼 수 있다

마지막 줄에 있는 일관성을 설명해보겠다. 우리는 header를 다음과 같은 방법으로 생성할 수 있다.

<div class="header">, <div id="header">, <div class="head">

하지만, 표준 semantic 태그로는 <header> 하나로 일관되어 누구나 알아볼 수 있게 된다.

 

결국, Semantic Markup이라는 것은 의미를 간결하게 전달하는 태그를 사용해 HTML 문서를 작성하는 것을 말한다.

사실 나는 div 애호가인데 이제는 semantic 태그로 프로그램을 짜야겠다. 껄껄

 

 

👇🏻 HTML5에 추가된 새로운 semantic tag들을 확인하기 바란다.

https://www.w3schools.com/html/html5_semantic_elements.asp

 

HTML Semantic Elements

W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.

www.w3schools.com

 

👇🏻 요소들의 주기율표

https://bradfrost.com/blog/post/atomic-web-design/

 

 

 

 

 

'CS Knowledge' 카테고리의 다른 글

XMLHttpRequest  (0) 2022.04.25
DOM & BOM  (0) 2022.04.19
Prototype, 프로토타입  (0) 2022.04.14