
알고 보면 HTML에는 굉장히 다양한 태그들이 있습니다. 태그는 기능적으로 분류되어 있는 것 외에도 의미론적으로 사용되는 것들도 있기 때문에, 사전에 알고 있지 않다면 막상 사용하지 않게 되고 본인이 알고 있는 태그로만 작성하게 될 수 있습니다. 이번 기회에 여러가지 태그의 역할에 대해서 살펴보겠습니다.
<h1> ~ <h6><h1>h1</h1>
<h2>h2</h2>
<h3>h3</h3>
<h4>h4</h4>
<h5>h5</h5>
<h6>h6</h6>
<h1>은 페이지 당 가장 중요한 제목을 나타내기 위해 하나만 사용되어야 합니다.<p><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc velit metus, tincidunt semper consectetur a, mattis id augue. Mauris ac enim non ipsum molestie viverra a vel augue. Vestibulum et vulputate ipsum.</p>
<p>Etiam congue tempor magna. Etiam pellentesque erat in turpis tempus, vel vestibulum ante luctus. Sed commodo dapibus hendrerit. Nullam aliquet consectetur commodo. Maecenas dapibus vel risus sit amet molestie.</p>

<br><p>
첫번째 줄 <br />두번째 줄<br />세번째 줄<br />
</p>

<blockquote>, <q><blockquote cite="https://www.naver.com">
죽느냐 사느냐 그것이 문제로다.
</blockquote>

<blockquote>는 긴 인용문에서 사용하고, q는 줄 바꿈이 없는 짧은 인용문에서 사용합니다.cite 속성을 통해 인용문의 출처를 표시해줄 수 있지만, 화면에는 보이지 않습니다.<pre><pre>
이렇게 아무렇게나 써도
알아서 작성한 서식에 맞춰서
화면에도 반영이되는 pre태그
</pre>

<figure>, <figcaption><figure>
<img src="https://i.guim.co.uk/img/media/26392d05302e02f7bf4eb143bb84c8097d09144b/446_167_3683_2210/master/3683.jpg?width=1200&height=1200&quality=85&auto=format&fit=crop&s=49ed3252c0b2ffb49cf8b508892e452d"
alt="cute cat"/>
<figcaption>cute cat</figcaption>
</figure>

<figure>는 독립적인 콘텐츠를 표시할 때 사용합니다.<figcaption>은 <figure> 내의 콘텐츠를 설명하기 위해 사용합니다.<hr>위에
<hr />
아래

<abbr><abbr title="world wide web">www</abbr>

<abbr>은 약어나 줄임말을 표현하기 위해 사용합니다. 요소의 내용에는 점으로 된 밑줄이 생기고, title속성을 사용하면 해당 요소에 커서를 위치했을 때 title 속성의 값이 생깁니다. 사실 title속성은 모든 태그에서 사용이 가능하지만, <abbr>의 역할과 잘 어울리므로 함께 사용하기에 적합해보입니다.<address><address>서울시 강남구 삼성동</address>

<address>는 주소를 나타날 때 사용합니다. 별도의 효과보다는 검색엔진이나 스크린리더에게 의미를 전달해주기 때문에 주소 의외의 정보는 내용에 포함시키지 않는 것이 좋습니다.<cite><q>천재는 99%의 노력과 1%의 영감으로 이루어진다.
<cite>- 에디슨</cite>
</q>

<cite>는 위에서 <blockquote>와 <q>의 속성으로 인용문의 출처를 밝힐 때 사용한다고 이야기 했습니다. 하지만 속성이 아닌 태그의 이름으로 사용하면 화면에도 출처에 대해 나오게 됩니다.<bdo> - bidirectional override<p>가나다라마바사</p>
<p><bdo dir="rtl">가나다라마바사</bdo></p>

<bdo>는 요소 내용의 방향을 변경할 때 사용합니다.<strong>, <b><p>내일 수업 - 국어, <b>영어</b>, 수학</p>
<p>내일은 시험입니다. <strong>반드시 컴퓨터 싸인펜을 챙겨오세요.</strong></p>

<strong>과 <b>는 모두 화면에 굵은 글씨로 나타나지만, 둘의 용도는 비슷하면서 다릅니다. <b>는 단순히 이용자의 이목을 집중시키기 위해서 사용하지만, <strong>은 내용 중에 굉장히 중요한 부분을 표현합니다.<i>, <em><p>지금 가장 먹고 싶은 것은 <i>김치</i> 입니다.</p>
<p><em>지금</em> 가장 먹고 싶은 것은 김치입니다.</p>

<i>와 <em>도 모두 화면에는 글씨가 기울어져 나오기 때문에 같은 효과로 인식될 수 있지만 둘의 역할은 다릅니다. <i>는 요소의 주변 내용과 다른 경우 사용하고, <strong>은 강조하려는 부분에 사용합니다. 위의 예시에서 <i>의 내용인 김치는 주변과는 다르지만 강조를 하려고 사용하지 않는 반면에, <strong>의 내용인 지금은 지금이라는 특정 시점을 강조하기 위해 사용했습니다.<mark><p>수컷 <mark>늑대</mark>는 평생 한마리의 암컷 <mark>늑대</mark>와만 짝짓기를 합니다.</p>

<mark>도 원래 목적이 아닌 단순히 마킹하는 용도로 사용하면 안됩니다.<mark>는 연관된 부분을 나타내고, <strong>은 강조하는 부분을 나타냅니다. 두 요소를 사용할 때 차이점을 알고 사용하는 것이 중요합니다.<small><p>어쩌구 저쩌구 어쩌구 저쩌구 <br />
<small>위의 내용은 저작권법에 의해 보호됩니다.</small>
</p>

<sub>, <sup>H<sub>2</sub>O <br />
2<sup>2</sup> x 2<sup>3</sup> = 2<sup>5</sup>

<sub>는 특정 글자를 아래로 내리고, <sup>는 특정 글자를 위로 올리기 위해 사용합니다.<del>, <ins>오늘 사야할 것은 <del>계란</del>, 가지, 호박, <ins>카레</ins> 입니다.

<del>은 요소는 제거된 텍스트를 나타내고, <ins>는 추가된 텍스트를 나타냅니다. 두 요소는 같이 사용할 수도 있고, 별도로 사용해도 됩니다.<code>함수 <code>handleClick()</code>는 확인 버튼을 클릭했을 때 동작하는 함수입니다.

<pre>와 달리 요소 내에서 인라인 요소로 코드를 중간에 넣을 때 사용합니다.<kbd>엔터 - <kbd>Enter</kbd>
스페이스 - <kbd>Space</kbd>

<a><a href="https://www.naver.com">네이버</a> <br /> <!-- 절대경로 -->
<a href="templates/myprofile.html">내가 만든 파일</a> <!-- 상대경로 -->
<a href="mailto:abc@defg.com">메일 전송</a> <br />
<a href="tel:1234-5678">전화 걸기</a>


href속성 안에는 주소를 작성하면 되는데, 위와 같이 절대 경로와 상대 경로 모두 가능합니다. mailto를 사용하면 메일을 작성하고, tel을 사용하면 전화를 거는 프로그램을 연결해줍니다._self를 사용하고 있는데, 그러면 현재 브라우저에 이동하는 페이지가 뜹니다. _blank속성을 추가하면 새로운 창에 이동하는 페이지가 나오게 됩니다.<entity><span>가짜태그</span> <br />
<span>진짜태그</span>

html내에서는 >, <, ", ', &등은 사용할 수 없습니다. html내에서 요소를 표현하기 위해 사용되는 예약어이기 때문입니다. 그래서 보통의 목적이 아닌 별도의 목적으로 사용하기 위해서 entity를 사용합니다. < = <> = >" = "' = '& = &<div>, <span><div>
안녕하세요 안녕 안녕하세요
</div>
<div>
안녕하세요2 안녕 안녕하세요2
</div>
<span>
어서오세요 어서 어서오세요
</span>
<span>
어서오세요2 어서 어서오세요2
</span>

<div>와 <span>은 순수 컨테이너로서 화면에서 달라지는 것이 없습니다. 컨테이너는 다른 요소들과 분리시켜 영역을 구분합니다.<div>는 블록요소여서 화면의 모든 너비를 차지하고, <span>은 인라인요소여서 요소의 내용만큼만 공간을 차지합니다.사실 html의 구조는 div만 사용해도 구현이 가능합니다. 하지만, 모든 요소를 div로만 구성한다면 화면에서는 같게 보일지 모르지만, 코드 상에서는 구조를 구분하고 이해하기 힘들 것입니다. 그래서 용도에 맞게 의미있는 태그를 사용해서 구조를 설계하는 것을 시맨틱 웹이라고 합니다. 웹의 구조를 의미있게 설계했을 때, 검색 엔진은 용도에 맞는 태그를 분석하여 랭킹에 반영할 것이고, 스크린 리더를 사용하는 분들은 웹 접근성을 높일 수 있습니다. 다른 사람들과 협업을 할 경우에도, 훨씬 구조를 파악하기 용이할 것입니다.

<header>, <footer><header>는 웹 페이지를 소개하고, 탐색에 도움을 주는 콘텐츠를 나타냅니다. 제목, 로고, 검색 폼 등이 요소의 내용으로 적합합니다.<footer>는 웹 페이지의 제작자에 대한 정보의 내용을 담기에 적합합니다.<nav><aside><main><body>의 주요 콘텐츠를 나타내는 영역이므로, 한번만 사용되어야 합니다.<article>뉴스 기사나 블로그 글 등을 표현하기에 적합합니다.<section>article과 section은 상황에 따라 상호 간에 요소를 포함시킬 수 있는 관계입니다.<ol>, <ul>, <li><ol>
<li>김치찌개</li>
<li>된장찌개</li>
<li>비빔밥</li>
</ol>
<ul>
<li>한국</li>
<li>중국</li>
<li>일본</li>
</ul>

<ol> (ordered list)을, 중요하지 않은 경우에는 <ul> (unordered list)을 사용합니다.<li>로 감싸줘야 합니다.reversed속성은 항목을 역순으로 표현할 수 있게 해줍니다.start속성은 시작하는 번호의 숫자를 변경해줍니다.type속성은 각 항목 앞을 어떻게 표현할지 정해줍니다. (ex: 'a', 'A', 'i', 'I')<ul>과 <ol>은 서로 중첩해서 사용할 수 있는데, 중첩할 때 마다 요소들은 한칸씩 들여써집니다.<dl>, <dt>, <dd><p>동물 백과사전</p>
<dl>
<dt>사자</dt>
<dd>대형 고양이과의 육식동물</dd>
<dt>기린</dt>
<dd>목이 긴 초식동물</dd>
</dl>

<table>, <tr>, <th>, <td>, <caption><thead>, <tbody>, <tfoot><table>
<caption>표에 대한 설명</caption>
<thead>
<tr>
<th>thead-th</th>
<th>thead-th</td>
<th>thead-th</td>
</tr>
</thead>
<tbody>
<tr>
<th>tbody-th</td>
<td>tbody-td</td>
<td>tbody-td</td>
</tr>
<tr>
<th>tbody-th</td>
<td>tbody-td</td>
<td>tbody-td</td>
</tr>
</tbody>
<tfoot>
<tr>
<th>tfoot-th</td>
<td colspan="2">tfoot-td</td>
</tr>
</tfoot>
</table>


table은 요소의 내용을 표의 형태로 보여주기 위해 사용합니다. 나머지 모든 태그들은 table태그 내에서만 사용할 수 있습니다.thead, tbody, tfoot은 table태그의 첫 번째 자식 요소로 사용해야 합니다. thead는 표의 가장 첫 줄, tfoot는 가장 아랫 줄을 나타냅니다. tfoot은 때에 따라 사용하지 않기도 합니다. tbody는 나머지 모든 영역들을 포함하는데, 내용에 따라 여러 개로 나눌 수 있습니다.tr은 표의 가로줄 한줄을 나타냅니다. th, td는 tr의 하위요소로 사용해야 합니다. th가 아닌 td 로만 구성하더라도 화면에 보여지는 것은 같지만, 의미론적으로 th를 사용하는 것이 좋습니다.th의 scope속성은 화면에 보여지는 것은 없지만, 해당되는 셀을 지정하여 활용할 수 있습니다.th와 td는 colspan속성을 활용하여 몇 칸의 공간을 차지할지 선택할 수 있습니다.caption은 table의 첫번째 하위 요소로 사용하여 table에 대한 설명을 기재할 수 있습니다.