의미론적 HTML

두 페이지는 똑같이 보일 수 있지만 내부적으로는 완전히 다르게 만들어질 수 있습니다. 하나는 요소를 담은 내용에 따라 이름을 붙인 요소들을 사용합니다: 헤더, 네비게이션, 메인 영역. 다른 하나는 모든 것을 같은 익명의 박스로 감싸고 클래스 이름에 의존합니다. 화면에 표시되는 방식은 동일하지만, 다른 모든 측면에서는 완전히 다른 페이지입니다. 요소를 의미에 따라 선택하는 것이 의미론적 HTML의 핵심입니다.
의미론적이란 무엇인가
**의미론적**은 "의미와 관련된"을 뜻합니다. 의미론적 요소는 그 이름이 담은 내용을 설명하는 요소입니다. 문단은 <p>에 들어갑니다. 네비게이션 메뉴는 <nav>에 들어갑니다. 태그 이름이 그것이 무엇인지를 나타냅니다.
거의 모든 페이지를 하나의 다목적 박스로 만들고 스타일링으로 올바르게 보이게 할 수 있습니다. 하지만 그렇게 하면 페이지의 어떤 것도 그것이 무엇인지 알려주지 않습니다. 내용에 이름을 붙이는 요소를 선택하는 것은 이사할 때 상자에 라벨을 붙이는 것과 같습니다. 모든 것이 라벨이 없는 평범한 상자에 들어갈 수 있지만, 라벨이 있어야 다른 사람이나 브라우저가 모든 상자를 열어보지 않고도 안에 무엇이 들어있는지 이해할 수 있습니다.
<p>에, 메뉴는 <nav>에. 모든 것을 평범한 박스에 넣고 동일하게 보이도록 스타일링할 수 있지만, 그렇게 하면 그것이 무엇인지 아무것도 말해주지 않습니다. 이사할 때 박스에 라벨을 붙여서 누구나 안에 무엇이 있는지 알 수 있도록 하는 것 같습니다. 랜드마크 요소
소수의 요소들은 페이지의 큰 영역을 표시하기 위해 존재합니다. 이것들이 당신이 처음 선택하는 요소들입니다:
<header>는 페이지 또는 섹션의 상단입니다: 로고, 제목, 소개.<nav>는 네비게이션 링크의 집합입니다, 예를 들어 메인 메뉴.<main>은 메인 콘텐츠이고, 페이지가 존재하는 이유입니다.<section>은 관련된 내용의 그룹화된 덩어리입니다, 보통 자신의 제목이 있습니다.<article>은 자체 포함된 조각이며, 혼자 있어도 여전히 의미가 있을 것입니다, 블로그 게시물이나 뉴스 기사처럼.<aside>는 옆에 있는 콘텐츠입니다: 관련 링크, 메모, 광고.<footer>는 페이지 또는 섹션의 하단입니다: 저작권, 연락처, 작은 글씨.
규칙은 매번 동일합니다. 영역이 네비게이션이면 <div>가 아닌 <nav>에 들어갑니다. 푸터이면 <footer>에 들어갑니다. 요소를 영역과 일치하는 것으로 이름 지으세요.
<header>
<h1>민준의 주방</h1>
<nav>
<a href="/recipes">레시피</a>
<a href="/about">소개</a>
</nav>
</header>
<main>
<h2>평일 저녁</h2>
<p>퇴근 후 할 수 있는 빠른 식사.</p>
</main>
<footer>
<p>서울에서 만들어졌습니다.</p>
</footer><header>, <nav>, <main>, <section>, <article>, <aside>, 그리고 <footer>. 각각은 페이지의 일부를 이름 지으면, 당신이 만들고 있는 영역과 일치하는 것을 선택합니다. 오늘 그들을 암기할 필요는 없습니다, 그들은 계속 나타나고 익숙해질 때까지 반복됩니다. div와 span, 의미론적이지 않은 폴백
페이지의 모든 부분이 이름 지을 만한 의미를 가지고 있지 않습니다. 때때로 당신은 스타일링할 수 있도록 것들을 그룹화하거나 몇 글자를 색칠하기 위해 감싸기 위해 박스가 필요합니다. 그를 위해 자신의 의미가 없는 두 개의 평범한 요소가 있습니다.
<div>는 일반적인 블록입니다: 다른 요소가 맞지 않을 때 사용하는 빈 컨테이너. <span>은 행 내의 작은 텍스트에 대한 동일한 개념입니다. 둘 다 내용에 대해 아무것도 말하지 않습니다. 그들은 순전히 스타일링과 그룹화를 위한 훅으로 존재합니다.
<p>오늘 합계는 <span class="price">₩42,000</span>입니다.</p>
<div class="card">
<h2>특가</h2>
<p>모든 파스타에서 2개 구입시 1개 무료.</p>
</div><span>은 가격을 색칠할 수 있도록 감싼다. <div>는 테두리를 둘 수 있도록 카드를 그룹화합니다. 더 의미 있는 것이 맞지 않을 때만 이것들을 선택하세요. 브라우저에게 안에 무엇이 있는지 아무것도 말해주지 않기 때문입니다.
<div>는 평범한 박스이고 <span>은 몇 글자를 위한 평범한 래퍼이며, 둘 다 아무것도 의미하지 않습니다. 어떤 것만 그룹화하거나 스타일링할 필요가 있고 이름 지어진 요소가 맞지 않을 때만 사용하세요. 메뉴나 버튼처럼 의미가 있다면, 대신 그것을 위한 요소를 사용하세요. 올바른 요소 선택하기
어떤 요소를 사용할지 확실하지 않을 때, 하나의 단순한 질문을 하세요: 이것은 무엇인가? 어떻게 보이는지가 아니라, 그것은 무엇인가. 대답은 보통 요소의 이름을 당신에게 말해줍니다. 상단에 걸쳐있는 링크 행은 네비게이션이므로, 그것은 <nav>입니다. 하단의 작은 글씨 블록은 푸터이므로, 그것은 <footer>입니다. 색칠하길 원하는 가격은 정말로 아무것도 아니므로, 그것은 <span>입니다.
의미에서 시작하고, 실제 답변이 "그것은 단지 박스이다"일 때만 <div> 또는 <span>으로 폴백하세요. 이 습관을 일찍부터 들이면 당신의 페이지는 자신을 설명하고, 그것은 당신이나 다른 누구든 다시 마크업을 읽어야 할 순간부터 보상됩니다.
<nav>이고, 작은 글씨는 <footer>이며, 스타일링하길 원하는 평범한 박스는 <div>입니다. 매번 의미에서 시작하고, 당신의 페이지는 자신을 설명하는 것으로 끝납니다. 
