컨테이너(div, span)
- div 태그는 특정 구역이나 구획을 분할하는데 쓰는 태그임, css가 없으면 아무 내용이 없으면 안 보임
- 순수 컨테이너로 아무것도 표현하지 않음, 의미를 가지고 있지 않은 것이 특징임(즉, 해당 태그에는 별다른 의미가 없다는 것)
- 아이템을 묶어서 그룹화하려는 목적임(대부분 스타일링의 목적이 큼 혹은 구역별로 다른 언어임을 표현하기 위해)
- 전역 특성만 포함함, 의미가 없을때만 써야함
- span 태그도 컨테이너 역할이지만 구문 콘텐츠를 담고 인라인 컨테이너임. 대부분 텍스트를 꾸밀 때 묶어서 씀
- 본질적으로 의미가 없는것은 마찬가지임
- 아래 예시를 보면 div는 블록 요소의 특징을 가지고 있으므로 한 줄을 채움(이때 여백이 생기는 경우는 body 태그의 기본 여백으로 인한 것임)
- 나중에 스타일링을 해도 오른쪽에 다른 요소를 둘 수 없음
- span의 경우는 인라인 요소의 특징을 가지고 있음, 브라우저 크기 조정시 알아서 크기를 조절함
- 예시
<h2>div</h2>
<div>Lorem ipsum</div>
<h2>span</h2>
<span>Lorem ipsum</span>
시멘틱 웹이란
- div를 활용한 경우(non-semantic)
<body>
<div></div>
<div></div>
<div>
<div></div>
<div></div>
</div>
<div></div>
</body>
<body>
<header></header>
<nav></nav>
<main>
<article></article>
<aside></aside>
</main>
<footer></footer>
</body>
- div와 동일하게 동작하지만 시멘틱 태그들의 경우 의미가 있음
- 이를 통해 요소의 의미를 고려하여 구조를 설계하고 코드를 작성할 수 있는 것
- 이렇게 쓰는 이유는 검색 엔진이 검색 랭킹에 영향을 줄 수 있는 중요한 키워드임
- 웹 접근성 측면에서도 페이지 탐색시 의미론적 마크업을 푯말로 사용가능함
- 그리고 의미있는 코드 블록을 찾고 인지하는데도 유리함 또한 구역을 나눌 경우 태그 안에 채워질 데이터 유형을 인지하기도 편함
- 딱 맞는 의미가 없더라도 최대한 의미 있는 적절한 네이밍을 반영해서 하는게 좋음
- header 태그의 경우 소개 및 탐색에 도움을 주는 콘텐츠를 나타냄, 제목, 로고, 검색 폼, 작성자 이름 등, 하나만 써야함
- 어느곳에 있어도 동일하게 보여질 것임
- 예시
<header>
<h1>Main Page Title</h1>
<img src="mdn-logo-sm.png" alt="MDN logo" />
</header>
<article>
<header>
<h2>The Planet Earth</h2>
<p>
Posted on Wednesday, <time datetime="2017-10-04">4 October 2017</time> by
Jane Smith
</p>
</header>
<p>
We live on a planet that's blue and green, with so many things still unseen.
</p>
<p>
<a href="https://janesmith.com/the-planet-earth/">Continue reading....</a>
</p>
</article>
- footer 태그의 경우, 웹 페이지 정보, 연관된 사이트, 제작자의 연락처나 저작권 정보를 주로 나타냄
- 예시
<footer>
Some copyright info or perhaps some author info for an <article>?
</footer>
nav
- 네비게이션 바, 현재 페이지가 어딨는지 다른 곳으로 이동하면 어떻게 해야하는지, 전체 홈페이지에서 어딘지 알려주는 태그
- 일종의 메뉴, 목차, 색인으로 활용, 목록 태그로 많이 활용함
- 예시
<nav>
<ul>
<li><a href="#">Home</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Contact</a></li>
</ul>
</nav>
aside
- 사이드바를 만들 때 많이 쓰는 태그, 문서의 주요 내용과 간접적으로만 연관된 부분을 나타냄, 콜아웃 박스라고도 부름
- 네비와는 다르게 부가적인 정보 없어도 무리가 없는 정보 느낌(없다고 본문을 이해 못하는 것은 아니라)
- 그렇게 중요한 내용은 아닌
- 예시
<article>
<p>디즈니 만화영화 <em>인어 공주</em>는 1989년 처음 개봉했습니다.</p>
<aside>인어 공주는 첫 개봉 당시 8700만불의 흥행을 기록했습니다.</aside>
<p>영화에 대한 정보...</p>
</article>
main
- 주요 콘텐츠가 들어가는 영역, body내에서 주요 콘텐츠를 나타낼 때 쓰는 시멘틱 태그
- 하나보다 많은 요소가 있으면 안됨, 모든 콘텐츠를 아우르는 태그이므로
- 참고로 인터넷 익스플로러에서는 호환이 안되므로 그에 맞게 처리해야함
- 예시
<main>
<h1>Apples</h1>
<p>The apple is the pomaceous fruit of the apple tree.</p>
<article>
<h2>Red Delicious</h2>
<p>
These bright red apples are the most common found in many supermarkets.
</p>
<p>...</p>
<p>...</p>
</article>
<article>
<h2>Granny Smith</h2>
<p>These juicy, green apples make a great filling for apple pies.</p>
<p>...</p>
<p>...</p>
</article>
</main>
article
- 하나의 웹페이지에 여러개 쓰일 수 있음
- 독립적으로 구분해 배포하거나 재사용할 수 있는 구획을 나타냄
- 블로그 글, 매거진이나 뉴스 기사 등, 내용을 이해하는데 독립적으로 봐도 무방한 것들
- 단독적으로 콘텐츠가 될 수 있으면서도 각각의 글이 article 요소가 되며, 그 안에는 또 여러 개의 section이 존재할 수 있음
- 아래 예시와 같이 단독으로 존재할 수 있기에 header와 다른 요소들도 들어가 있음, 이 article에 대해 제목을 통해서 나타내곤 함
- 예시
<article class="film_review">
<header>
<h2>Jurassic Park</h2>
</header>
<section class="main_review">
<p>Dinos were great!</p>
</section>
<section class="user_reviews">
<article class="user_review">
<p>Way too scary for me.</p>
<footer>
<p>
Posted on <time datetime="2015-05-16 19:00">May 16</time> by Lisa.
</p>
</footer>
</article>
<article class="user_review">
<p>I agree, dinos are my favorite.</p>
<footer>
<p>Posted on <time datetime="2015-05-17 19:00">May 17</time> by Tom.</p>
</footer>
</article>
</section>
<footer>
<p>Posted on <time datetime="2015-05-15 19:00">May 15</time> by Staff.</p>
</footer>
</article>
section
- section의 경우 독립적인 구획 즉 article이 될 경우 article을 쓰지만 그렇게 되지 못한 것에 대해서 section 태그를 활용함
- section의 경우도 제목을 가질 수 있음, 이 요소를 일반 스타일링 목적으로 컨테이너르 쓰면 안됨 그럴 땐 div 태그 사용
- 단, 문서 요약에 해당하는 구획이 논리적으로 나타나야 하면 써도 좋음
- 예시
<h1>Choosing an Apple</h1>
<section>
<h2>Introduction</h2>
<p>This document provides a guide to help with the important task of choosing the correct Apple.</p>
</section>
<section>
<h2>Criteria</h2>
<p>
There are many different criteria to be considered when choosing an Apple — size, color, firmness, sweetness,
tartness...
</p>
</section>