Skip to content
This page has been auto-translated and may contain errors.View in English

텍스트 요소

docs.scrimba.com

방문자가 페이지에서 읽는 내용은 대부분 평범한 글, 즉 제목, 문단, 굵게 강조한 경고문, 인용된 문장, 코드 조각 같은 것들입니다. HTML에는 이런 각각의 역할에 맞는 요소가 따로 마련되어 있고, 알맞은 요소를 고르는 일은 단순히 텍스트의 모양을 바꾸는 것 이상의 의미를 갖습니다. 이를 통해 브라우저와 검색 엔진, 보조 기술에게 각 텍스트가 실제로 어떤 의미를 가지는지 알려줄 수 있습니다.

제목과 위계 구조

HTML은 <h1>부터 <h6>까지 여섯 단계의 **제목(heading)**을 제공합니다. 제목은 페이지 전체 또는 페이지의 한 구획에 붙이는 표제입니다. <h1>은 맨 위에 오는 큰 글씨의 메인 제목입니다. <h2>는 주요 구획을 나타내고, <h3>은 그 안의 하위 구획을, 이런 식으로 <h6>까지 이어집니다.

인쇄된 책을 떠올려 보세요. 표지에 있는 제목이 <h1>입니다. 각 장의 제목은 <h2>이고, 장 안에 있는 소제목들은 <h3>입니다. 이렇게 단계를 이용해서 무엇이 무엇 아래에 속하는지를 나타냅니다.

처음부터 꼭 기억해 둘 것이 있습니다. 원하는 글자 크기를 만들기 위해 제목 태그를 고르면 안 됩니다. <h1>이 크게 보이는 건 사실이지만, 그 역할은 "이 글씨를 크게 만들어라"가 아니라 "이것이 메인 제목이다"라고 말하는 것입니다. 어딘가의 텍스트를 크게 만들고 싶다면, 그건 나중에 배울 CSS가 할 일입니다.

<h1>부터 <h6>까지 여섯 개의 제목 요소는 문서의 위계 구조(hierarchy), 즉 어느 부분이 구획이고 어느 부분이 그 하위 구획인지를 나타냅니다. 숫자는 크기가 아니라 순위를 의미합니다. <h1>이 개요의 최상단에 있고, 그 아래에 <h2>, 그 아래에 <h3>가 옵니다.

초반에 익혀둘 규칙은 순서대로 중첩시키고 단계를 건너뛰지 않는 것입니다. <h2>로 시작하는 구획이라면 그 안에는 <h3> 소제목이 와야지, 곧바로 <h4>로 건너뛰면 안 됩니다. 기본 크기가 조금 더 작다는 이유로 단계를 건너뛰는 것은 대표적인 실수이며, 잘못된 접근입니다. 제목을 특정 모양으로 보이게 하고 싶다면 CSS로 스타일을 입히고, 숫자는 구조상의 순위를 나타내는 용도로만 남겨두세요.

제목 요소는 문서의 개요(outline), 즉 목차가 주제 아래에 하위 주제를 중첩시키는 것과 같은 방식으로 구획들을 순서대로 순위를 매겨 구조화한 것을 정의합니다. 여기서 실무적으로 지켜야 할 규칙이 세 가지 나오는데, 셋 다 겉모습이 아니라 접근성과 검색과 관련된 것들입니다.

첫째, 페이지마다 <h1>은 하나만 사용하고, 그 페이지 콘텐츠의 진짜 제목을 담아야 합니다. 이것이 개요의 최상단이며, 정확히 하나만 존재해야 모든 도구가 이 페이지가 무엇에 관한 것인지 명확하게 판단할 수 있는 하나의 기준점을 갖게 됩니다.

둘째, 아래로 내려가면서 단계를 건너뛰지 마세요. 스크린 리더(눈이 보이지 않는 사람을 위해 페이지 내용을 소리로 읽어주는 소프트웨어)는 사용자가 모든 제목의 목록을 불러와서 그 사이를 이동할 수 있게 해주는데, 이는 눈이 보이는 사람이 원하는 구획을 훑어보며 찾는 것과 같은 역할을 합니다. <h2>에서 <h4>로 건너뛰면 그 목록에서 한 단계가 빠진 것처럼 보이고, 탐색이 앞뒤가 맞지 않게 됩니다.

셋째, 순위는 의미를 나타내는 것이며 절대 크기를 나타내는 것이 아닙니다. 검색 엔진은 페이지가 어떻게 구성되어 있는지 파악하기 위해 제목 구조를 읽어들이므로, 실제로는 세 번째 단계의 구획이 아닌데 기본 크기가 마음에 든다는 이유로 <h3>을 고르면 크롤러와 스크린 리더 모두에게 은근히 잘못된 정보를 전달하게 됩니다. 크기는 CSS로 정하고, 숫자에는 의미를 담아두세요.

html
<h1>Sourdough for beginners</h1>

<h2>Building a starter</h2>
<p>A starter is a living culture of flour and water.</p>

<h3>Day one to three</h3>
<p>Mix equal weights of flour and water, then wait.</p>

<h2>Baking your first loaf</h2>
<p>Once the starter is active, you are ready to bake.</p>

<h1> 하나가 페이지 전체의 제목을 나타냅니다. 두 개의 <h2> 제목이 주요 구획을 표시하고, <h3>는 그중 첫 번째 구획 안에 깔끔하게 자리 잡고 있습니다. 본문을 한 글자도 읽지 않아도 제목의 숫자만 보면 글의 전체 구조가 눈에 들어옵니다.

Juno제목과 위계 구조 제목은 총 여섯 단계이고, <h1>부터 <h6>까지입니다. 그중 <h1>이 맨 위에 오는 유일한 메인 제목입니다. 나머지는 구획과 소구획에 이름을 붙이는 역할을 합니다. 저도 초반에 걸려들었던 함정인데, 그냥 크게 보인다는 이유로 제목 태그를 고르면 안 됩니다. 그건 CSS가 할 일입니다. 숫자는 그것이 무엇인지를 나타내는 것이지, 크기를 나타내는 게 아닙니다.
Juno제목과 위계 구조 제목은 콘텐츠의 순위를 나타내는 것이지, 크기를 정하는 게 아닙니다. 순서대로 중첩시키고, 더 작은 기본 크기를 얻으려고 단계를 건너뛰지 마세요. 이게 사람들이 가장 많이 걸려드는 부분입니다. 제목을 특정한 모양으로 보이게 하고 싶다면 CSS로 스타일을 입히고, 숫자는 구조를 나타내는 용도로만 남겨두세요.
Juno제목과 위계 구조 페이지마다 <h1>은 하나만, 아래로 내려가면서 단계를 건너뛰지 않기, 그리고 크기 때문에 순위를 고르지 않기가 핵심입니다. 스크린 리더 사용자는 목차처럼 제목 사이를 이동하고, 검색 엔진도 같은 개요를 읽기 때문에, 겉모습만 보고 고른 제목은 둘 다에게 잘못된 정보를 줍니다. 숫자는 의미를 담게 하고, 겉모습은 CSS로 처리하세요.

문단과 줄바꿈

평범한 텍스트 묶음은 문단(paragraph), 즉 <p> 요소 안에 넣습니다. 각 문단을 개별적인 <p>...</p>로 감싸면 브라우저가 위아래로 약간의 공백을 넣어주기 때문에, 책에서처럼 문단끼리 서로 떨어져 보이게 됩니다.

html
<p>Bread needs four things: flour, water, salt, and time.</p>
<p>Get those right and the rest is patience.</p>

HTML 파일에서 Enter 키를 누르는 것은 페이지에 아무런 영향을 주지 않는다는 점에 주의하세요. 브라우저는 여러분이 입력한 줄바꿈이나 추가 공백을 무시하고, 오직 태그만 신경 씁니다. 그래서 문단을 구분하려면 그냥 줄을 나눠 입력하는 게 아니라 <p>를 사용해야 합니다.

주소나 짧은 시의 행처럼 문단 안에서 정말로 줄을 바꿔야 할 때가 있다면, 그럴 때 쓰는 <br> 요소가 있습니다. 이 요소는 단 한 번의 줄바꿈만을 강제로 만들 뿐, 그 이상의 역할은 하지 않습니다.

<p> 요소는 이어지는 텍스트로 된 문단을 담으며, 본문 콘텐츠가 기본적으로 자리 잡는 곳입니다. 브라우저는 소스에 있는 연속된 공백, 탭, 줄바꿈을 모두 하나의 공백으로 축약해버리기 때문에, 페이지에서 텍스트가 어떻게 배치되는지는 파일을 어떻게 포맷했는지가 아니라 태그가 결정합니다.

<br> 요소는 텍스트 블록 안에서 줄바꿈을 강제로 만듭니다. 이것은 닫는 태그가 없는 **빈 요소(void element)**이며, 줄바꿈 자체가 콘텐츠의 일부일 때만 사용하는 것이 맞습니다. 예를 들면 우편 주소, 시의 행, 서명란 같은 경우입니다.

html
<p>
  김민준<br>
  오크로 14<br>
  서울 04524
</p>

<br>을 잘못 쓰는 경우는 공백을 만드는 용도로 쓸 때입니다. 두 문단을 떼어놓으려고 <br><br>을 겹쳐 쓰면 보기에는 괜찮아 보이지만 잘못된 습관입니다. 그것들은 두 개의 문단이니 두 개의 <p> 요소여야 하고, 그 사이의 간격은 표현(presentation)의 영역이므로 CSS에서 다뤄야 합니다. 공간을 만들려고 <br>에 손을 대는 것은 구조와 스타일을 섞어버리는 일이며, 초반에 꼭 버려야 할 습관입니다.

<p>블록 레벨(block-level) 요소입니다. 즉 새 줄에서 시작해서 사용 가능한 전체 너비를 차지하고, 주변의 다른 문단들과 세로로 쌓입니다. 이는 이어지는 글을 담기에 적합한 컨테이너이며, 브라우저는 그 내용에 **공백 축약(whitespace collapsing)**을 적용합니다. 즉 소스에 있는 공백, 탭, 줄바꿈이 연속되어 있으면 렌더링된 결과에서는 하나의 공백으로 바뀝니다. 그래서 소스 파일의 서식은 여러분이 읽기 편한 대로 자유롭게 정해도 됩니다.

<br>은 레이아웃상의 간격이 아니라 콘텐츠 자체에 의미가 있는 줄바꿈을 나타냅니다. 이 구분에는 구체적인 접근성 비용이 따릅니다. 스크린 리더는 <p>의 경계를 문단의 끝으로 인식하고 그에 맞춰 잠시 멈추는데, 이를 통해 사용자는 한 생각이 끝나고 다음 생각이 시작되는 지점을 알 수 있습니다. <br>을 여러 개 겹쳐 놓으면 이런 경계가 전혀 생기지 않아서, 소프트웨어는 그냥 죽 이어서 읽어버리고, 눈이 보이는 사람이 공백을 통해 보는 구조는 듣는 사람에게는 보이지 않습니다. 공백을 만들기 위한 빈 문단도 같은 문제를 가지고 있는데, 어떤 스크린 리더는 이를 '빈 문단'이라고 알려주고 어떤 스크린 리더는 그냥 건너뛰어버리며, 어느 쪽이든 여러분이 의도한 간격은 제대로 전달되지 않습니다.

실제 프로젝트에서도 통하는 규칙은 이렇습니다. 줄바꿈이 데이터 자체의 일부일 때만(주소, 시구절, 폼 레이블의 한 줄 등) <br>을 쓰고, 블록 사이의 세로 간격은 항상 CSS의 margin으로 처리하세요. 구조는 의미를 담고 스타일은 겉모습을 담는데, 이 둘을 분리해 두어야 페이지가 유지보수하기 쉽고 접근성도 좋아집니다.

Juno문단과 줄바꿈 텍스트 블록마다 각자의 <p>...</p> 안에 넣으면, 그게 바로 문단 사이에 간격을 만들어줍니다. 브라우저는 여러분이 입력한 Enter나 공백을 무시하니까, 태그가 그 일을 대신합니다. <br>은 주소처럼 문단 중간에서 정말로 줄을 바꿔야 할 때만 쓰세요.
Juno문단과 줄바꿈 문단은 <p>를 쓰고, 브라우저가 소스의 공백을 축약해버리기 때문에 파일 포맷을 바꿔도 페이지에는 아무 변화가 없습니다. <br>은 주소처럼 콘텐츠 자체에 속하는 줄바꿈을 위한 것이지, 뭔가를 떼어놓기 위한 게 아닙니다. 간격을 만들려고 <br>을 두 번 쓰는 건 간격 관리가 CSS 밖으로 새어나갔다는 신호입니다.
Juno문단과 줄바꿈<p>는 스크린 리더에게 잠시 멈출 수 있는 진짜 문단 경계를 제공하는 블록입니다. 반면 <br>을 여러 개 겹쳐 놓으면 아무 경계도 만들어지지 않아서, 듣는 사람에게는 구조가 사라져버립니다. 그러니 줄바꿈이 데이터 자체의 일부일 때만 <br>을 쓰고, 세로 간격은 전부 CSS의 margin으로 처리하세요. 간격을 만들려고 빈 문단을 쓰는 것도 똑같은 접근성 문제가 있으니 그 역시 피하세요.

강조: <strong><b>, <em><i>

텍스트를 굵게 만드는 요소가 두 개, 기울임으로 만드는 요소가 두 개 있습니다. <strong><b>는 둘 다 굵게 표시되고, <em><i>는 둘 다 기울임으로 표시됩니다. 즉 네 개의 태그가 두 가지 모양을 만들어냅니다.

html
<p><strong>Warning:</strong> the oven is very hot.</p>
<p>You need to knead the dough <em>thoroughly</em>.</p>

지금 단계에서는 경고처럼 중요한 텍스트에는 **<strong>**을 쓰고, 소리 내어 읽을 때 목소리에 힘을 주고 싶은 단어에는 <em>을 쓰세요. 대부분의 경우 이 둘만으로 충분하고, 브라우저가 알아서 굵게, 기울임으로 표시해 줍니다.

이 네 요소는 두 쌍으로 나뉘는데, 그 기준은 의미냐 겉모습이냐입니다. <strong><em>시맨틱합니다. 즉 텍스트에 대해 어떤 의미를 전달합니다. <b><i>는 표현용으로, 그저 보이는 모양만 바꿀 뿐입니다.

콘텐츠가 **중요성(importance)**이나 심각함, 긴급함을 담고 있을 때, 예를 들어 경고나 중요한 지시사항에는 <strong>을 쓰세요. 문장을 소리 내어 읽을 때 힘주어 말하게 되는 단어, 즉 그 강세에 따라 의미가 달라질 수 있는 단어에는 <em>을 써서 **강조(stress emphasis)**를 표현하세요. 둘 다 각각 굵게, 기울임으로 표시되긴 하지만, 여러분이 이 태그를 고르는 이유는 그 의미 때문입니다.

<b><i>는 굵게나 기울임을 원하지만 그 뒤에 중요성이나 강세가 없는 경우에 씁니다. 시선을 끌고 싶은 키워드에는 <b>을, 배의 이름이나 외국어 문구에는 <i>를 씁니다. 이 태그들은 텍스트를 스타일상으로 구별해 표시할 뿐, 그것이 더 중요하다고 주장하지는 않습니다.

html
<p><strong>Do not</strong> open the valve while the system is pressurised.</p>
<p>She whispered that it was <em>her</em> idea, not his.</p>
<p>The keyboard shortcut is <b>Ctrl</b> plus <b>S</b>.</p>
<p>We took the ferry across on the <i>Lady Marion</i>.</p>

딱 하나만 기억한다면 이것입니다. <strong><em>은 의미를 담고, <b><i>는 그저 보여주기만 합니다. 텍스트가 정말로 중요하다면 시맨틱 쌍을 쓰세요.

네 요소 모두 브라우저가 기본적으로 렌더링하는 방식은 똑같이 굵게 또는 기울임 둘 중 하나이므로, 화면상으로는 서로 바꿔써도 차이가 없습니다. 진짜 차이는 픽셀을 보지 않는 대상에게 무엇을 전달하느냐에 있고, 실제로 선택이 중요해지는 지점도 바로 거기입니다.

<strong>은 **중요성(importance)**을 나타냅니다. 심각하거나 긴급하거나, 절대 놓치면 안 되는 콘텐츠를 뜻합니다. <em>은 **강세 강조(stress emphasis)**를 나타냅니다. 문장의 의미를 바꾸는, 무게가 실린 단어를 가리킵니다("내일 나한테 전화해"와 "내일 나한테 전화해"를 비교해 보세요). 스크린 리더는 이런 정보를 실제로 활용할 수 있습니다. 많은 스크린 리더가 강조된 텍스트에서 어조나 속도를 바꾸고, <strong>은 일반 텍스트와 다르게 표현될 수 있어서, 여러분이 부여한 중요성이 굵은 글씨를 보지 못하는 사람에게도 실제로 전달됩니다. 정도를 나타내려면 중첩시키면 됩니다. <strong> 안에 <strong>을 넣으면 더 큰 중요성을, <em> 안에 <em>을 넣으면 더 강한 강세를 나타냅니다.

<b><i>는 표현용 쌍이고, "가급적 쓰지 말라"는 조언이 암시하는 것보다 실제로는 더 자주 올바른 선택이 됩니다. 이 둘의 실제 정의는 꽤 좁습니다. <b>는 추가적인 중요성 없이 실용적인 이유로 텍스트에 시선을 끌게 합니다. 요약문 속의 키워드, 리뷰 속의 제품명 같은 경우입니다. <i>다른 어조나 분위기로 된 텍스트를 나타냅니다. 처음 등장하는 전문 용어, Homo sapiens 같은 분류학적 이름, 다른 언어로 된 문구, 등장인물의 속마음 같은 것들입니다. 더 구체적인 요소가 있다면(작품 제목에는 <cite>, 정의에는 <dfn>, 코드에는 <code>) 그것을 대신 쓰고, <b><i>는 텍스트가 구별되긴 하지만 더 강한 의미가 적용되지 않을 때 쓰는 대체용입니다.

피해야 할 실수는 <strong>을 써야 할 곳에 <b>를 쓰거나, <em>을 써야 할 곳에 <i>를 쓰는 것입니다. 둘은 겉보기에 똑같아서 화면상으로는 잘못됐다는 신호가 전혀 없지만, 보조 기술이 의존하는 중요성이나 강조를 잃어버리게 됩니다. 텍스트가 어떤 모양이어야 하는지가 아니라 무엇을 의미하는지를 물어보세요. 중요하다면 <strong>이나 <em>을, 그저 구별되는 정도라면 <b><i>를 쓰세요.

Juno강조: strong과 b, em과 i<strong><b>는 둘 다 굵게 표시되고, <em><i>는 둘 다 기울임으로 표시됩니다. 처음에는 경고처럼 중요한 것에는 <strong>을, 목소리에 힘을 주고 싶은 단어에는 <em>을 쓰세요. 이 두 개만으로 여러분이 쓰는 글의 거의 전부를 감당할 수 있습니다.
Juno강조: strong과 b, em과 i<strong>은 중요함을, <em>은 강세를 의미하며, 둘 다 의미를 담고 있습니다. <b><i>는 뒤에 아무 의미도 없이 그냥 텍스트를 구별하고 싶을 때 쓰는, 똑같이 굵게·기울임으로 표시되는 태그입니다. 어차피 겉모습은 똑같으니, 어떻게 보여야 하는지가 아니라 텍스트가 어떤 의미인지에 따라 쌍을 고르세요.
Juno강조: strong과 b, em과 i 화면에서는 네 요소 모두 그냥 굵게 또는 기울임일 뿐이고, 차이는 스크린 리더가 무엇을 듣느냐에 있습니다. <strong><em>은 중요성과 강세를 담고 있어서 다르게 안내될 수 있으므로, 그 의미로 써야 할 곳에 <b><i>를 쓰면 그 의미가 조용히 사라져버립니다. <b><i>는 더 구체적인 요소가 없을 때, 단순히 구별만 필요한 키워드나 용어에 알맞습니다.

그 외의 인라인 텍스트 (인용문, <code>, <abbr> 등)

굵게, 기울임 말고도 HTML에는 자주 쓰이는 텍스트 조각을 위한 작은 요소들이 있습니다. 짧은 인용문은 <q>에 넣으면 브라우저가 인용 부호를 알아서 붙여줍니다. 명령어 이름 같은 코드 조각은 **<code>**에 넣으면 브라우저가 고정폭(monospace) 글꼴로 보여줘서 일반 글과 구별됩니다.

html
<p>My gran always said <q>a watched pot never boils</q>.</p>
<p>Save the file with the <code>Ctrl S</code> shortcut.</p>

이런 요소가 몇 개 더 있지만, 짧은 인용문에는 <q>, 코드에는 <code>가 가장 많이 등장하는 두 가지입니다. 각각의 요소는 작은 텍스트 조각을 감싸고 그것이 무엇인지 브라우저에게 알려줍니다.

이것들은 인라인(inline) 요소입니다. <p> 같은 블록과 달리 자기만의 줄로 나뉘지 않고, 문단 안에서 텍스트 한 조각을 감쌉니다. 각 요소는 텍스트 조각이 무엇인지 이름을 붙여주므로, 평범한 <span>에 스타일만 입혀서 흉내내는 대신 구체적인 요소를 쓰세요.

알아둘 만한 것들은 다음과 같습니다:

html
<p>The report cites <cite>The Pragmatic Programmer</cite> twice.</p>
<p>Run <code>npm install</code>, then press <kbd>Enter</kbd>.</p>
<p>The room is <strong>24m<sup>2</sup></strong> of floor space.</p>
<p>The old total was <del>£40</del> <ins>£32</ins>.</p>
<p>As <abbr title="HyperText Markup Language">HTML</abbr> matures, the tags settle.</p>

<cite>는 작품의 제목을 나타냅니다. <code>는 코드를, <kbd>는 키보드 입력을, <samp>는 프로그램의 출력을 나타냅니다. <sup><sub>는 위첨자와 아래첨자로, 지수나 화학식 같은 것에 씁니다. 도(degree) 기호는 위첨자가 아니라 별도의 문자인 °를 씁니다. <del><ins>는 삭제된 텍스트와 삽입된 텍스트를 나타내는데, 수정 내용이나 가격 변동을 보여줄 때 유용합니다. <abbr>는 약어를 나타내고, title 속성에 전체 풀네임을 담습니다.

<q>는 짧은 인라인 인용문을 위한 것이며 인용 부호를 자동으로 붙여줍니다. 더 길고 독립적인 인용문에는 대신 블록 요소인 <blockquote>를 씁니다.

이것들은 인라인(inline) 요소로, 자기만의 블록을 만드는 대신 한 줄의 텍스트 흐름 안에 놓입니다. 이런 요소가 존재하는 이유는 텍스트 조각이 마크업 안에서 자신의 의미를 지닐 수 있게 하기 위해서이고, 그래야 그 의미가 보조 기술, 검색 엔진, 그리고 여러분이 직접 작성하는 스타일과 스크립트에서도 활용될 수 있습니다. 실무적인 지침은 상황에 맞는 가장 구체적인 요소를 쓰고, 어느 것도 맞지 않을 때만 중립적인 <span>으로 물러나는 것입니다.

실제로 쓰게 될 요소들은 다음과 같습니다:

html
<p>See <cite>Designing Data-Intensive Applications</cite>, chapter three.</p>
<p>Type <kbd>git status</kbd> to see <samp>nothing to commit</samp>.</p>
<p>The sample used <abbr title="Cascading Style Sheets">CSS</abbr> variables throughout.</p>
<p>Revised figure: <del>1,200</del> <ins>1,450</ins> entries.</p>

<cite>는 인용된 작품(책, 영화, 논문 등)의 제목을 나타내는 것이지, 사람의 이름을 나타내는 게 아닙니다. 이는 사람들이 끊임없이 틀리는 부분입니다. <code>는 컴퓨터 코드 조각이고 <kbd>는 사용자가 키보드로 입력한 내용인데, 둘 다 흔히 고정폭 글꼴로 표시되지만 상호작용의 방향은 정반대를 의미합니다. <samp>는 프로그램에서 나온 샘플 출력입니다. <abbr>는 **약어(abbreviation)**를 나타내며 전체 풀네임을 담는 title 속성을 가집니다. 스크린 리더는 이 풀네임을 안내하거나 제공할 수 있고, 마우스를 올렸을 때 툴팁으로도 나타나므로, 읽는 사람이 그 글자들이 무엇을 뜻하는지 추측할 필요가 없어집니다. <del><ins>는 수정 내용, 즉 삭제된 텍스트와 추가된 텍스트를 나타내고 그렇게 안내되는데, 가격 정정이나 수정 표시처럼 변경 자체가 핵심인 경우에 중요합니다.

인용문의 경우, <q>는 인라인 요소이고 CSS를 통해 지역(locale)에 맞는 인용 부호를 삽입해줍니다(그래서 여러분이 직접 부호를 입력하지 않아도 됩니다). <blockquote>는 긴 인용문을 위한 블록 레벨 요소이고, 둘 다 출처의 URL을 담는 선택적 속성인 cite를 가질 수 있습니다. 이 모든 것을 관통하는 원칙은 요소가 의미를 담당하고, 겉모습은 CSS에서 별도로 설정하는 계층이라는 점입니다. 고정폭이나 기울임 같은 겉모습이 아니라 텍스트가 실제로 무엇인지에 따라 태그를 고르는 것이, 페이지를 볼 수 없는 도구들에게도 계속 읽을 수 있게 유지하는 방법입니다.

Juno그 외의 인라인 텍스트 (인용문, code, abbr 등)<q>는 짧은 인용문을 감싸고 인용 부호를 알아서 붙여주고, <code>는 코드를 고정폭 글꼴로 보여줘서 눈에 띄게 만들어줍니다. 이런 작은 태그가 몇 개 더 있지만, 이 둘이 가장 자주 등장합니다. 각각은 그냥 텍스트 조각을 감싸고 그게 무엇인지 알려줄 뿐입니다.
Juno그 외의 인라인 텍스트 (인용문, code, abbr 등) 이 인라인 태그들은 각각 텍스트 조각이 무엇인지 이름을 붙여줍니다. 코드에는 <code>, 누른 키에는 <kbd>, 작품 제목에는 <cite>, 전체 풀네임을 담은 title과 함께 쓰는 <abbr>가 있습니다. 평범한 <span>에 스타일만 입히는 대신 구체적인 태그를 쓰세요. 그리고 짧은 인용문에는 <q>, 독립된 인용문에는 <blockquote>를 씁니다.
Juno그 외의 인라인 텍스트 (인용문, code, abbr 등) 가장 구체적인 인라인 요소를 쓰고, 아무것도 맞지 않을 때만 <span>으로 물러나세요. 사람들이 자주 잘못 쓰는 것들을 조심하세요. <cite>는 사람이 아니라 작품의 제목을 나타내고, <code><kbd>는 겉보기엔 비슷해도 상호작용의 정반대 방향을 의미합니다. <abbr>title은 보조 기술이 읽어주고, <q>는 자체적으로 인용 부호를 붙여주니 직접 입력하지 마세요.