HTML5 이전의 HTML에서는 태그를 Block Level Element (<div>
,<p>
,<h1>
...), Inline Element (<input>
,<b>
,<img>
...)로 구분하여 사용했다.
HTML5에서는 이런 태그들도 물론 쓰이지만 Content Model이라는 새로운 개념을 추가했다.
Each element defined in this specification has a content model: a description of the element's expected contents. An HTML element must have contents that match the requirements described in the element's content model. The contents of an element are its children in the DOM.
... 각각의 엘리먼트들은 content model을 가진다. Content Model이란, 엘리먼트에 포함될 것으로 예상되는 내용(콘텐츠) 대한 설명이다. HTML 엘리먼트는 반드시 해당 엘리먼트의 content model 조건에 부합하는 콘텐츠를 포함해야 한다. DOM에서 엘리먼트의 콘텐츠는 해당 엘리먼트의 자식이 된다.
HTML5에는 조건에 맞는 콘텐츠를 추가해야하는, 즉 콘텐츠의 의미에 맞게 사용할 수 있는 태그가 추가되었다.
따라서 Content model을 통해 기존의 HTML보다 Semantic한 Web을 구성할 수 있게 되었다.
HTML 엘리먼트는 여러가지 카테고리에 중복될 수 있다.
<base>
,<link>
,<meta>
,<noscript>
,<script>
,<style>
,<template>
,<title>
문서의 body에서 사용되는 거의 대부분의 엘리먼트가 flow contents로 분류됨
<article>
,<aside>
,<nav>
,<section>
<h1>
,<h2>
,<h3>
,<h4>
,<h5>
,<h6>
,<hgroup>
<a>
,<area>
,<br>
,<strong>
,<span>
등
<audio>
,<canvas>
,<embed>
,<iframe>
,<img>
, <math>
,<object>
,<picture>
,<svg>
,<video>
<a>
,<audio>
,<button>
,<details>
,<embed>
,<iframe>
,<img>
,<input>
,<label>
,<select>
,<textarea>
,<video>
https://html.spec.whatwg.org/multipage/dom.html
https://direct.co.kr/cs/HTML5.pdf