본문으로 건너뛰기

단원 연습 문제

HTML·CSS 목차글을 담는 태그문제 14개

2단원 '글을 담는 태그'의 일곱 레슨에서 11문제를 내고, 1단원 '웹 페이지와 첫 HTML 파일'에서 3문제를 섞었습니다. 1단원 문제가 어느 레슨인지는 정답을 펼치면 보입니다. 화면에 보일 글이나 고친 줄은 종이에 끝까지 쓴 뒤 정답을 펼치세요. 막히면 정답 앞의 힌트를 먼저 펼칩니다. 점수는 매기지 않습니다.

결과를 묻는 문제의 결과 화면과 잰 값은 정답을 펼치면 보입니다. 컴퓨터가 있으면 문제 코드를 hello.html의 body 안에 붙여 저장하고, 브라우저로 열어 개발자 도구 Elements 패널과 함께 맞춰 봅니다. 결과는 모두 크롬 기준입니다.

이 단원을 이미 안다면 1 · 3 · 5 · 7 · 9 · 10번을 먼저 풀어 보세요. 건너뛸지 볼 때는 힌트를 펴지 않고 풉니다. 다 맞히면 이 단원은 건너뛰어도 됩니다. 틀린 문제와 힌트를 펴고 맞힌 문제는 정답 끝의 '다시 볼 레슨'으로 갑니다. 끝의 두 문제(13 · 14번)는 직접 만들어 보는 문제라, 건너뛸지 가릴 때는 풀지 않아도 됩니다. 12번까지 풀고 쉬었다가 13번부터 이어 풀어도 됩니다. ⟨컴퓨터⟩가 붙은 문제는 컴퓨터에서 파일을 만들어 풉니다. 폰으로만 본다면 그 문제 끝의 폰 물음 하나로 대신합니다.

문제 1

플로우 카페의 공지 두 줄입니다. 첫 줄에서 </strong>을 쓰려다 /를 빠뜨렸습니다. 이 코드는 화면에 어떻게 보일까요? 보기 셋 가운데 고르세요.

<p>추천: <strong>라테<strong></p>
<p>커피 4000원</p>
힌트

첫 줄의 둘째 <strong>을 </p>와 견주어 보세요. 그 태그가 여는 태그인지 닫는 태그인지부터 가립니다.

정답

① — 윗줄 끝 낱말과 아랫줄 전체가 굵습니다.

결과 화면
  • /가 빠진 <strong>은 닫는 태그가 아니라 strong을 하나 더 여는 태그입니다. 첫 줄에서 strong 둘이 열린 채 </p>를 만납니다.
  • 브라우저는 오류 없이 나무를 고쳐 짓습니다. 문단은 </p>에서 strong과 함께 닫고, 닫지 않은 strong 둘을 다시 열어 아래 문단까지 감쌉니다(브라우저 규칙 2). 그래서 '커피 4000원'도 굵게 그려집니다.
  • ② 닫는 태그의 / 하나쯤 빠져도 화면은 그대로라고 본 것입니다. /가 없으면 여는 태그입니다.
  • ③ 태그가 틀린 곳에서 브라우저가 그리기를 멈춘다고 본 것입니다(틀리면 멈춘다는 생각). 브라우저는 고쳐 지어 끝까지 그립니다.

다시 볼 레슨: 요소·태그·속성 · 요소 안의 요소

문제 2

하고 싶은 일마다 쓸 요소나 특수 문자를 쓰세요. 요소는 이름만 써도 됩니다.

  • (가) 문단은 하나로 두고, 그 안에서 줄만 바꾸고 싶다
  • (나) 차례에 뜻이 없는 준비물을 점을 붙여 늘어놓고 싶다
  • (다) 문장 속 꼭 알아야 할 낱말에 '중요하다'는 뜻을 달고 싶다
  • (라) 글 속에 꺾쇠 <를 태그의 시작이 아니라 글자로 보이고 싶다
힌트

(가)는 닫는 태그가 없는 요소 가운데에서, (라)는 &로 시작하는 특수 문자 가운데에서 찾습니다.

정답

받는 답: (가) br · (나) ul · (다) strong · (라) &lt;

같은 답으로 치는 꼴: <br> · <br /> · <ul> · <strong> — 꺾쇠와 /는 꼴만 다릅니다. BR처럼 대문자로 써도 브라우저는 같게 읽지만, 이 과목은 소문자로 씁니다.

틀리는 꼴 — 까닭:

  • (나) ol — 번호가 붙는 목록이라 차례가 뜻일 때 씁니다. li는 목록의 한 줄입니다.
  • (다) b — 화면의 굵기는 같지만 '중요하다'는 뜻이 나무에 남지 않습니다. em은 힘주어 읽는 자리입니다.
  • (라) &gt; — 반대쪽 꺾쇠 >입니다.

다시 볼 레슨: 요소·태그·속성 · 목록 ul·ol·li · 문단과 강조 · 공백 규칙과 특수 문자

문제 3

</li>를 하나도 쓰지 않은 여행 준비물 목록입니다. 브라우저가 지은 나무에서 바깥 ul의 자식인 li를 모두 고르세요. 기호를 다 쓰세요.

<ul>
  <li>여권
  <li>옷
    <ul>
      <li>잠옷
    </ul>
  <li>충전기
</ul>
  • ㉠ li 여권
  • ㉡ li 옷
  • ㉢ li 잠옷
  • ㉣ li 충전기
힌트

줄마다 그 줄까지 열려 있는 요소를 바깥부터 차례로 적어 보세요.

힌트 둘

<li>가 새로 시작될 때마다 그 앞의 li가 어떻게 되는지, 안쪽 <ul>이 나올 때 아직 열려 있던 li가 무엇인지 보세요.

정답

㉠ ㉡ ㉣ — 여권 · 옷 · 충전기의 li입니다.

결과 화면
잰 값개발자 도구에서 본 값
  • body > ul > li의 고른 글여권 · 옷 · 충전기
  • body의 나무<ul><li>여권 </li><li>옷 <ul><li>잠옷 </li></ul></li><li>충전기 </li></ul>

잰 값의 body > ul > li는 'body 바로 안의 ul, 그 바로 안의 li'라는 뜻입니다.

  • li는 다음 <li>가 시작되는 자리에서 저절로 닫힙니다(브라우저 규칙 2). '여권'은 '옷' 앞에서, '옷'은 '충전기' 앞에서 닫힙니다.
  • 안쪽 <ul>은 '옷'이 닫히기 전에 나왔으니 '옷'의 li 안에 듭니다. '잠옷'의 li는 그 안쪽 ul의 자식이고, </ul>에서 함께 닫힙니다.
  • 흔한 오답은 ㉠ 하나입니다. 닫지 않은 li 안에 다음 li가 차례로 들어간다고 본 것입니다.
  • ㉠ ㉡ ㉢ ㉣ 넷을 고른 것도 흔합니다. li는 모두 바깥 목록의 줄이라고 본 것입니다. '잠옷'은 '옷'에 딸린 안쪽 목록의 줄이라 화면에서 ◦ 점으로 그려집니다.

다시 볼 레슨: 요소 안의 요소 · 목록 ul·ol·li

문제 4

카페 메뉴판 menu.html을 크롬으로 열어 두고 아래 차례로 했습니다. 다 하고 나면 화면의 제목과 라테 값은 어떻게 보일까요?

  1. 개발자 도구 Elements 패널에서 제목 글 '카페 메뉴'를 '플로우 카페'로 바꿨다.
  2. 편집기에서 menu.html의 '라테 4500원'을 '라테 4800원'으로 고치고 저장했다.
  3. 브라우저에서 새로고침했다.
  • ① 플로우 카페 · 라테 4500원
  • ② 플로우 카페 · 라테 4800원
  • ③ 카페 메뉴 · 라테 4800원
힌트

새로고침하면 브라우저가 무엇을 다시 읽는지, 1번과 2번에서 바꾼 것이 각각 어디에 남았는지 보세요.

정답

③ — 제목은 '카페 메뉴', 라테는 4800원입니다.

  • 새로고침하면 브라우저는 저장된 파일을 다시 받아 읽고 나무를 새로 짓습니다(브라우저 규칙 1 · 2). 파일에는 2번에서 저장한 '4800원'이 있고, 제목은 처음 그대로 '카페 메뉴'입니다.
  • Elements 패널의 나무는 브라우저가 지은 나무를 보여 주는 사본입니다. 그래서 문제 3처럼 고쳐 지은 나무도 Elements에서는 고친 꼴로 보이고, 거기서 바꾼 글은 파일에 남지 않습니다.
  • ① 새로고침해도 화면이 그대로라고 본 것입니다. 새로고침은 파일을 다시 읽어 처음부터 다시 그립니다.
  • ② Elements에서 바꾼 것도 파일에 남는다고 본 것입니다(사본을 파일로 보는 생각). 고친 것을 남기려면 편집기에서 파일을 고쳐 저장합니다.

다시 볼 레슨: 개발자 도구로 요소 나무 보기 · 고친다 → 저장한다 → 새로고침한다

문제 5

미역국 페이지의 제목 넷을 나오는 차례대로 적습니다 — 미역국 · 재료 · 불리는 법 · 끓이는 순서. '미역국'은 페이지 전체의 제목이고, '재료'와 '끓이는 순서'는 큰 갈래, '불리는 법'은 '재료'에 딸린 작은 제목입니다. 하위 목표 '1. 제목 단계 정하기'의 ____ 자리를 통째로 쓰세요.

<!-- 1. 제목 단계 정하기 -->
____

나와야 할 결과는 둘입니다.

  • 화면에서 '불리는 법'이 '재료'보다 작은 제목으로 보인다.
  • 검사기에 넣으면 Error가 없다.
힌트

제목마다 바로 위 제목보다 몇 단계 아래인지 세어 보세요. '끓이는 순서'의 바로 위 갈래는 무엇인가요?

정답

받는 답:

<!-- 1. 제목 단계 정하기 -->
<h1>미역국</h1>
<h2>재료</h2>
<h3>불리는 법</h3>
<h2>끓이는 순서</h2>
결과 화면

검사기 Error · Warning은 0입니다. 제목만 모은 차례는 아래와 같습니다.

  • 미역국

    • 재료
      • 불리는 법
    • 끓이는 순서
  • 제목의 숫자는 글자 크기가 아니라 단계입니다(브라우저 규칙 3). '불리는 법'은 '재료'보다 한 단계 아래라 h3이고, 기본 크기도 h2보다 작아 첫째 결과가 저절로 맞습니다.

  • '끓이는 순서'는 '재료'와 나란한 갈래라 h2로 돌아옵니다. 올라올 때는 여러 단계를 한 번에 올라와도 됩니다.

  • 흔한 오답은 '불리는 법'을 h4로 쓴 것입니다. 작은 제목을 작은 글자로 보이려고 고른 것입니다(태그가 모양이라는 생각). 화면은 멀쩡해도 제목 차례에 3단계가 비고, 검사기가 그 줄을 Error로 잡습니다.

<h1>미역국</h1>
<h2>재료</h2>
<h4>불리는 법</h4>
<h2>끓이는 순서</h2>
결과 화면
검사기Error 1개
  • Error3줄The heading “h4” (with computed level 4) follows the heading “h2” (with computed level 2), skipping 1 heading level.
  • '끓이는 순서'를 h3로 쓴 것도 흔합니다. 바로 앞 '불리는 법'과 같은 단계라고 본 것입니다. 그러면 '끓이는 순서'가 '재료' 아래 작은 제목으로 들어갑니다.

다시 볼 레슨: 제목 h1~h6 · 검사기로 틀린 HTML 찾기

문제 6

플로우 카페의 메뉴 파일입니다. 녹차를 잠깐 메뉴에서 빼 두려고 9번 줄에 주석을 열었습니다. 이 파일을 열면 (가) 브라우저 탭에 보이는 글과 (나) 페이지에 보이는 글은 무엇일까요? 페이지 글은 줄마다 쓰세요.

<!DOCTYPE html>
<html lang="ko">
<head>
  <meta charset="utf-8" />
  <title>플로우 카페</title>
</head>
<body>
  <h1>이번 주 메뉴</h1>
  <!-- 녹차는 다음 주부터
  <p>녹차 3500원</p>
  <p>쿠키 2000원</p>
</body>
</html>
힌트

9번 줄에서 연 주석이 어디에서 닫히는지 끝까지 찾아보세요.

정답

받는 답: (가) 플로우 카페 · (나) 이번 주 메뉴

결과 화면탭: 플로우 카페
잰 값개발자 도구에서 본 값
  • title의 보이는 글플로우 카페
  • body의 보이는 글이번 주 메뉴
검사기Error 1개
  • Error9~13줄End of file inside comment.
  • title의 글은 탭에, body 안의 글은 페이지에 그려집니다(브라우저 규칙 2).
  • 주석은 <!--부터 -->까지입니다. 9번 줄에서 연 주석은 끝내 -->를 만나지 못해, 그 아래 문단 둘과 </body> · </html>까지 모두 주석이 됐습니다. 오류 메시지 없이 페이지에는 제목 하나만 남습니다. 검사기는 이 자리를 Error로 잡습니다.
  • (나)의 흔한 오답은 '이번 주 메뉴 / 쿠키 2000원'입니다. 주석이 그 줄이나 다음 줄에서 저절로 끝난다고 본 것입니다. 녹차만 빼려면 10번 줄 끝에 -->를 씁니다.
  • (가)에 '이번 주 메뉴'를 쓴 것은 title과 h1을 바꿔 본 것입니다. 페이지의 제목은 h1, 탭의 글은 title입니다.

다시 볼 레슨: 문서 뼈대 · 고친다 → 저장한다 → 새로고침한다

문제 7

카페 메뉴판의 짝 셋입니다. 짝마다 두 코드의 화면이 같은지 다른지 쓰세요. 다르면 어디가 다른지도 한 줄로 쓰세요. 셋 모두 같은 답이 나와도 됩니다. 그리고 화면이 같다고 답한 짝은 브라우저가 지은 나무도 같은지 쓰세요.

(가)

<p>오늘 <b>휴무</b></p>
<p>오늘 <strong>휴무</strong></p>

(나)

<p>녹차<em>3500원</em></p>
<p>녹차
<em>3500원</em></p>

(다)

<p>
  <strong><em>꼭</em></strong>
</p>
<p>
  <em><strong>꼭</strong></em>
</p>
힌트

짝마다 두 코드에서 다른 곳 하나를 찾아 표시해 보세요.

힌트 둘

짝마다 두 코드에서 다른 곳 하나를 찾고, 그 다름이 기본 모양을 바꾸는지 · 빈칸을 만드는지 · 나무만 바꾸는지 가려 보세요.

정답

(가) 같다 · (나) 다르다 — 뒤 코드는 '녹차'와 '3500원' 사이가 한 칸 띈다 · (다) 같다. 화면이 같은 (가)와 (다)도 나무는 다릅니다.

결과 화면(가) 첫째 코드
결과 화면(가) 둘째 코드
결과 화면(나) 첫째 코드
결과 화면(나) 둘째 코드
결과 화면(다) 첫째 코드
결과 화면(다) 둘째 코드
  • (가) b와 strong은 기본 모양이 같아 화면이 같습니다. 나무의 요소 이름은 달라서, 화면 읽기 프로그램과 검색은 strong 쪽만 '중요하다'로 받습니다(브라우저 규칙 3).
  • (나) 앞 코드는 '녹차'와 <em> 사이에 아무것도 없습니다. 뒤 코드는 그 자리에서 줄을 바꿔, 줄바꿈이 빈칸 하나로 그려졌습니다(브라우저 규칙 2).
  • (다) 둘 다 '꼭'이 굵고 기울어 화면은 같습니다. 나무에서는 앞 코드가 strong 안에 em, 뒤 코드가 em 안에 strong이라 부모와 자식이 바뀌었습니다.
  • 둘째 물음에 '나무도 같다'고 쓴 것이 가장 흔한 오답입니다. 화면이 같으면 요소도 같다고 본 것입니다(태그가 모양이라는 생각). 모양은 같아도 나무의 요소와 그 뜻은 다를 수 있습니다.
  • (나) 같다는 줄바꿈이 아무것도 남기지 않는다고 본 것입니다. 붙여 보이려면 <em>을 '녹차' 바로 뒤에 이어 씁니다.

다시 볼 레슨: 문단과 강조 · 공백 규칙과 특수 문자 · 요소 안의 요소

문제 8

사진 동아리의 전시 준비 차례입니다. 화면에서 '액자 끼우기'와 '전시장 꾸미기' 앞에 붙는 번호를 각각 쓰세요.

<ol>
  <li>사진 고르기
    <ol>
      <li>인화하기</li>
      <li>액자 끼우기</li>
    </ol>
  </li>
  <li>전시장 꾸미기</li>
</ol>
힌트

두 ol이 저마다 어느 li를 바로 안에 담고 있는지 나눠 보세요.

정답

받는 답: '액자 끼우기' 2 · '전시장 꾸미기' 2

결과 화면
잰 값개발자 도구에서 본 값
  • li:nth-child(2)의 고른 글액자 끼우기 · 전시장 꾸미기

잰 값 줄은 '제 목록에서 둘째인 li'를 고른 것입니다. 둘 다 번호 2가 붙는 줄입니다.

  • 브라우저는 ol마다 그 바로 안의 li를 위에서부터 세어 번호를 매깁니다(브라우저 규칙 2). 바깥 ol의 줄은 '사진 고르기' · '전시장 꾸미기' 둘이라 '전시장 꾸미기'는 2번입니다.
  • 안쪽 ol은 '사진 고르기'의 li 안에 든 따로 된 목록이라, 제 줄 '인화하기' · '액자 끼우기'를 1 · 2로 셉니다.
  • 흔한 오답은 '액자 끼우기' 3 · '전시장 꾸미기' 4입니다. 위에서부터 모든 li를 한 줄로 이어 센 것입니다.
  • '전시장 꾸미기' 4만 틀렸다면, 안쪽 목록은 따로 세면서 바깥 목록이 안쪽 줄까지 센다고 본 것입니다. 바깥 ol은 제 바로 안의 li만 셉니다.

다시 볼 레슨: 목록 ul·ol·li

문제 9

동아리 공지 한 문단입니다. 첫 줄 끝에만 <br />를 넣었습니다. 이 코드는 화면에 어떻게 보일까요? 보기 셋 가운데 고르세요.

<p>
  사진 공모전<br />
  접수 마감
  10월 31일
</p>
힌트

코드에서 <br />가 있는 자리와, 코드의 줄이 바뀌는 자리를 모두 짚어 보세요.

힌트 둘

줄을 바꾸는 요소가 몇 개인지 세고, '접수 마감' 뒤의 줄바꿈과 들여쓰기가 화면에서 무엇이 되는지 보세요.

정답

② — 두 줄로, 둘째 줄의 두 말이 한 칸 떨어져 있습니다.

결과 화면
  • 줄을 바꾼 것은 br 하나뿐입니다. '접수 마감' 뒤의 줄바꿈과 들여쓰기는 나무에 글로 남고, 화면에 그릴 때 빈칸 하나로 합쳐집니다(브라우저 규칙 2).
  • ① 친 대로 줄이 나온다고 본 것입니다(친 대로 나온다는 생각). 줄을 나누려면 br나 요소를 씁니다.
  • ③ 줄바꿈은 아무것도 남기지 않는다고 본 것입니다. 줄바꿈도 빈칸 하나가 되어 '마감'과 '10월' 사이가 띕니다.

다시 볼 레슨: 공백 규칙과 특수 문자 · 요소·태그·속성

문제 10

블로그 편집기에서 하던 대로 카페 공지를 썼습니다. 줄 사이와 글자 사이를 띄우려고 br와 &nbsp;를 넣었습니다. (가) 브라우저가 지은 나무에 문단 p는 몇 개일까요? (나) 화면에서 '평일'과 '9시' 사이는 빈칸 몇 칸일까요?

<p>
  영업 안내<br /><br />
  평일&nbsp;&nbsp;&nbsp;9시
</p>
힌트

(가)는 나무에 남는 요소를 바깥부터 적어 보고, (나)는 '평일'과 '9시' 사이에 적힌 글자를 하나씩 적어 보세요.

힌트 둘

문단을 여는 태그가 몇 번 나오는지 세고, &nbsp;가 보통 빈칸처럼 합쳐지는지 떠올려 보세요.

정답

받는 답: (가) 1 · (나) 3

결과 화면
잰 값개발자 도구에서 본 값
  • body의 나무<p> 영업 안내<br><br> 평일&nbsp;&nbsp;&nbsp;9시 </p>
  • 나무에는 문단 p 하나 안에 br 둘과 특수 문자 &nbsp; 셋이 듭니다. br 둘은 같은 문단 안에서 줄을 두 번 바꿔 빈 줄 하나를 만들 뿐, 문단을 나누지 않습니다(브라우저 규칙 2).
  • &nbsp;는 합쳐지지 않는 빈칸이라, 셋을 이어 쓰면 세 칸 그대로 그려집니다.
  • 이 습관이 짓는 것은 '빈 줄이 든 문단 하나'입니다. 글이 나뉘면 문단을 나누고, 문단 사이 틈과 글자 사이 칸은 CSS가 맡습니다 — 빈칸 폭은 글꼴마다 달라 &nbsp;로 맞춘 칸은 다른 기기에서 어긋납니다.
  • (가)의 흔한 오답은 2입니다. 빈 줄 자리에서 문단이 나뉜다고 본 것입니다.
  • (나)의 흔한 오답은 1입니다. &nbsp;도 보통 빈칸처럼 하나로 합쳐진다고 본 것입니다.

다시 볼 레슨: 공백 규칙과 특수 문자

문제 11

세 조각 모두 결과 화면은 멀쩡하게 그려집니다. 조각을 하나씩 hello.html처럼 뼈대를 다 갖춘 문서의 body 안에 넣어 검사기로 볼 때, Error가 나오는 것을 모두 고르세요. 기호를 다 쓰세요. 없으면 '없음'이라고 씁니다.

  • ㉠ <p>영업 중<br />9시부터</p>
  • ㉡ <p><em>라테</p></em>
  • ㉢ <h1>여행 일정</h1> · <h2>첫날</h2> · <h4>점심</h4>(세 줄)
힌트

㉡은 태그 넷을 나오는 차례대로, ㉢은 제목 태그의 숫자를 차례대로 적어 보세요.

힌트 둘

㉡은 여닫는 차례를, ㉢은 제목 숫자가 한 단계씩만 내려가는지를 보세요. ㉠의 />가 오류인지도 떠올려 봅니다.

정답

㉡ ㉢ — 검사기의 메시지는 아래와 같습니다.

<p>영업 중<br />9시부터</p>
결과 화면
검사기Error 0개
  • Info1줄Trailing slash on void elements has no effect and interacts badly with unquoted attribute values.
<p><em>라테</p></em>
결과 화면
검사기Error 3개
  • Error1줄End tag “p” seen, but there were open elements.
  • Error1줄Unclosed element “em”.
  • Error1줄No “em” element in scope but a “em” end tag seen.
<h1>여행 일정</h1>
<h2>첫날</h2>
<h4>점심</h4>
결과 화면
검사기Error 1개
  • Error3줄The heading “h4” (with computed level 4) follows the heading “h2” (with computed level 2), skipping 1 heading level.
  • ㉡은 em을 닫기 전에 p를 닫았습니다. 뒤에 글이 없어 고쳐 지은 나무가 바른 코드와 같아졌고, 그래서 화면만 보면 틀린 줄을 모릅니다(브라우저 규칙 2).
  • ㉢은 h2 바로 아래에 h4를 두어 3단계를 건너뛰었습니다. 화면은 멀쩡하지만 제목 차례에 빈 단계가 생깁니다.
  • 흔한 오답은 '없음'입니다. 화면이 멀쩡하면 HTML도 맞다고 본 것입니다. 브라우저가 틀린 태그도 고쳐 그리니, 틀린 곳은 검사기가 찾아 줍니다.
  • ㉠을 고른 것은 Info를 오류로 본 것입니다. />에 나오는 Info는 알림이라, 'errors & warnings only'를 켜면 목록에서 빠집니다. 이 과목은 빈 요소를 />로 씁니다.

다시 볼 레슨: 검사기로 틀린 HTML 찾기 · 요소 안의 요소 · 제목 h1~h6

문제 12

사진 동아리 공지입니다. '일요일 8시에 모여요.'를 한 문단으로 쓰고 '일요일'만 기울이려 했는데, 결과 화면에서 한 문장이 두 줄로 갈라졌습니다. 검사기에 넣었더니 아래 Error가 나왔습니다. 몇 번 줄을 어떻게 고쳐야 할까요? 고칠 줄을 골라 고쳐 보세요.

검사기Error 2개
  • Error2줄End tag “p” seen, but there were open elements.
  • Error2줄Unclosed element “em”.
힌트

검사기가 가리킨 2번 줄에서 여는 태그와 닫는 태그를 짝지어, 짝이 엇갈린 곳을 찾아보세요.

결과 화면일부러 틀린 코드

여기서 고친 코드는 저장하지도 보내지도 않습니다. 새로 열면 처음 코드입니다.

정답

받는 답: 2번 줄을 <p><em>일요일</em> 8시에 모여요.</p>⁠로 고칩니다. 아래는 고친 코드를 32칸에 맞게 나눠 쓴 것입니다.

<h1>사진 동아리</h1>
<p>
  <em>일요일</em> 8시에 모여요.
</p>
<p>장소는 학교 정문입니다.</p>
결과 화면
잰 값개발자 도구에서 본 값
  • body의 보이는 글사진 동아리 / 일요일 8시에 모여요. / 장소는 학교 정문입니다.

고친 코드는 검사기 Error가 0입니다.

  • 검사기 Error는 브라우저가 내 생각과 다른 나무를 지은 자리를 알려 줍니다. 4단원에서 세울 '안 먹을 때 찾는 차례'로는 2번 '요소가 나무에 내 생각대로 있나'에서 찾은 것입니다.
  • 틀린 코드에서 em보다 p를 먼저 닫아, 브라우저가 '일요일'만 문단에 남기고 ' 8시에 모여요.'를 문단 밖 새 줄로 옮겨 지었습니다(브라우저 규칙 2). 고친 나무는 <p><em>일요일</em> 8시에 모여요.</p>⁠입니다.

다르게 고쳐도 되는 곳: 2번 줄을 받는 답처럼 한 줄로 써도 화면은 같습니다.

  • 흔한 오답은 </p>만 지운 <p><em>일요일 8시</em>에 모여요.⁠입니다. 문장은 한 줄로 붙지만 '8시'까지 기울고, 닫는 태그를 빼 두게 됩니다.
  • 3번 줄을 고치는 것도 흔합니다. 갈라져 보인 문장 바로 아래 줄이 틀렸다고 본 것입니다. 검사기가 가리킨 줄은 2번입니다.
  • </em>을 '일요일' 뒤에 넣고 </p>를 줄 끝으로 옮겼지만 '8시' 뒤의 </em>을 남긴 줄도 화면과 나무가 받는 답과 같아, 위 상자는 이룸으로 봅니다. 그래도 검사기에는 남은 </em>에 'Stray end tag “em”.'이 나옵니다 — 고친 코드도 검사기에 다시 넣어 Error 0을 봅니다.

다시 볼 레슨: 요소 안의 요소 · 검사기로 틀린 HTML 찾기

문제 13 (만들어 보기)

1단원에서 만든 첫 페이지 hello.html을 다시 씁니다. 아래는 하위 목표 주석 셋만 남긴 틀입니다. 1의 줄을 먼저 다 쓰고, 2와 3은 1에서 쓴 뼈대 안 제자리에 주석째 넣어 파일 하나를 완성하세요. title에는 내 이름을, h1에는 '안녕하세요'를, 문단에는 나를 소개하는 한 줄을 씁니다.

<!-- 1. 뼈대 -->
…
<!-- 2. head 채우기 -->
…
<!-- 3. body 채우기 -->
…

확인 목록 — 컴퓨터가 있으면 저장해 브라우저로 열고 하나씩 맞춰 봅니다.

  • 탭에 내 이름이 보인다(화면 — 탭).
  • 페이지 맨 위에 큰 글자 '안녕하세요', 그 아래 소개 한 줄이 보인다(화면).
  • html 안에 head와 body가 있고, head 안에 meta 둘과 title, body 안에 h1과 p가 있다(Elements 패널).
  • 검사기 Error가 0이다(검사기 — Info는 접어 둠).
  • <!DOCTYPE html> 줄을 잠깐 지우고 다시 검사하면 Error가 하나 생긴다. 확인한 뒤 되돌린다(검사기).
힌트

1은 <!DOCTYPE html>과 html · head · body를 여닫는 줄입니다. 2는 head 안에, 3은 body 안에 들어갑니다.

정답

모범 답입니다. 이름 자리에는 내 이름을 씁니다.

<!-- hello.html -->
<!-- 1. 뼈대 -->
<!DOCTYPE html>
<html lang="ko">
<head>
  <!-- 2. head 채우기 -->
  <meta charset="utf-8" />
  <meta
    name="viewport"
    content="width=device-width"
  />
  <title>김하늘</title>
</head>
<body>
  <!-- 3. body 채우기 -->
  <h1>안녕하세요</h1>
  <p>웹 페이지를 처음 만듭니다.</p>
</body>
</html>
결과 화면탭: 김하늘
잰 값개발자 도구에서 본 값
  • title의 보이는 글김하늘
  • body의 보이는 글안녕하세요 / 웹 페이지를 처음 만듭니다.

검사기 Error · Warning은 0입니다( /> 줄마다 Info가 있습니다 — 접어 둡니다). 확인 목록을 다 채웠으면 맞습니다. 코드가 모범 답과 달라도 됩니다.

다르게 써도 되는 곳:

  • 뷰포트 줄과 title의 차례는 바꿔도 됩니다. charset 줄은 head를 연 바로 다음에 둡니다.
  • <meta charset="utf-8">⁠처럼 /> 없이 써도 같은 나무입니다.
  • 하위 목표 주석은 지워도 화면이 같습니다. 주석은 화면에 그려지지 않는 메모입니다.

흔한 잘못:

  • 2를 빠뜨려 title이 없으면 탭에 파일 이름이 보이고, 검사기가 head에 title이 없다는 Error를 냅니다.
  • 1의 첫 줄 <!DOCTYPE html>을 빠뜨리면 겉은 비슷해도 브라우저가 옛날 페이지 흉내(호환 모드)로 그리고, 검사기가 Error를 냅니다. 확인 목록 끝 줄이 이것을 보는 자리입니다.

다시 볼 레슨: 문서 뼈대 · 검사기로 틀린 HTML 찾기

문제 14 (만들어 보기)

레시피 노트의 첫 단계입니다(⟨컴퓨터⟩ · 20분 안팎 · 걸음마다 멈춰도 됩니다). 바탕화면의 html-css-study 안에 recipe-note 폴더를 만들고, 그 안에 김치볶음밥 페이지 kimchi.html을 씁니다.

이 단계 시작 파일: 문제 13의 뼈대에서 title을 '김치볶음밥'으로 바꾸고 body 안을 비운 것.

할 일 — 아래 글을 '글 한 페이지' 세 걸음(1. 제목 단계 정하기 · 2. 문단과 목록 · 3. 강조할 곳)으로 body에 넣습니다.

  • 페이지 제목: 김치볶음밥
  • 정보 줄: 한식 · 조리 15분 · 2인분
  • 소개: 잘 익은 김치와 찬밥만 있으면 십오 분 만에 끝나는 한 그릇 요리입니다. — '잘 익은 김치'는 꼭 짚을 말입니다.
  • 재료(차례에 뜻이 없음): 밥 2공기 · 잘 익은 김치 1컵 · 달걀 2개 · 참기름 1큰술 · 김가루 조금
  • 조리 순서(차례가 뜻): 김치를 한입 크기로 썹니다. → 달군 팬에 기름을 두르고 김치를 3분간 볶습니다. → 밥을 넣고 김치와 고루 섞어 가며 볶습니다. → 참기름을 두르고 불을 끕니다. → 달걀 프라이와 김가루를 올려 냅니다.

확인 목록:

  • 탭에 '김치볶음밥'이 보인다(화면 — 탭 · 걸음 1).
  • h1은 '김치볶음밥' 하나이고, 그 아래 h2가 '재료' · '조리 순서' 둘이다(Elements 패널 · 걸음 1).
  • 재료는 점 목록 다섯 줄, 조리 순서는 1~5 번호 다섯 줄이다(화면 · 걸음 2).
  • '잘 익은 김치'가 굵게 보이고, Elements에서 strong이다(화면 · Elements 패널 · 걸음 3).
  • 소개 문단을 여러 줄로 나눠 썼어도 '김치와'가 붙어 보인다 — '김치 와'처럼 떨어져 보이지 않는다(화면 · 걸음 3).
  • 검사기 Error가 0이다(검사기 — Info는 접어 둠 · 세 걸음 끝).

폰으로만 따라왔다면 이 물음 하나로 대신합니다. 소개 문단을 32칸에 맞게 나눠 쓴 꼴 셋입니다. 화면에 '김치 와'처럼 빈칸이 생기는 것은 어느 것일까요?

  • ① <strong>잘 익은 김치</strong>와 / 찬밥만 있으면 …
  • ② <strong>잘 익은 김치</strong> / 와 찬밥만 있으면 …
  • ③ <strong>잘 익은 / 김치</strong>와 찬밥만 …
힌트

세 걸음마다 저장하고 새로고침해 그 걸음의 확인 목록을 봅니다. 폰 물음은 줄을 나눈 자리 바로 앞뒤의 글자를 보세요.

힌트 둘

폰 물음은 줄을 나눈 자리에 원래 빈칸이 있었는지 보세요.

정답

모범 답입니다. 하위 목표 1(제목 단계)은 13 · 20 · 28번 줄, 2(문단과 목록)는 14~19번 줄의 두 문단과 21~27 · 29~48번 줄의 두 목록, 3(강조할 곳)은 16번 줄의 strong입니다. 3단원 연습 문제가 이 파일에서 이어 갑니다.

<!-- kimchi.html -->
<!DOCTYPE html>
<html lang="ko">
<head>
  <meta charset="utf-8" />
  <meta
    name="viewport"
    content="width=device-width"
  />
  <title>김치볶음밥</title>
</head>
<body>
  <h1>김치볶음밥</h1>
  <p>한식 · 조리 15분 · 2인분</p>
  <p>
    <strong>잘 익은 김치</strong>와
    찬밥만 있으면 십오 분 만에
    끝나는 한 그릇 요리입니다.
  </p>
  <h2>재료</h2>
  <ul>
    <li>밥 2공기</li>
    <li>잘 익은 김치 1컵</li>
    <li>달걀 2개</li>
    <li>참기름 1큰술</li>
    <li>김가루 조금</li>
  </ul>
  <h2>조리 순서</h2>
  <ol>
    <li>
      김치를 한입 크기로 썹니다.
    </li>
    <li>
      달군 팬에 기름을 두르고
      김치를 3분간 볶습니다.
    </li>
    <li>
      밥을 넣고 김치와 고루
      섞어 가며 볶습니다.
    </li>
    <li>
      참기름을 두르고 불을 끕니다.
    </li>
    <li>
      달걀 프라이와 김가루를
      올려 냅니다.
    </li>
  </ol>
</body>
</html>
결과 화면탭: 김치볶음밥
잰 값개발자 도구에서 본 값
  • ul의 list-style-typedisc
  • ol의 list-style-typedecimal
  • strong의 보이는 글잘 익은 김치

검사기 Error · Warning은 0입니다. 확인 목록을 다 채웠으면 맞습니다. 코드가 모범 답과 달라도 됩니다.

다르게 써도 되는 곳:

  • 재료 다섯 줄의 차례는 바꿔도 됩니다. ul은 차례에 뜻이 없는 목록입니다. 조리 순서는 바꾸면 뜻이 달라집니다.
  • 소개 문단은 빈칸이 있던 자리면 어디서 줄을 나눠도 화면이 같습니다. 32칸 안이면 한 줄에 써도 됩니다.
  • 하위 목표 주석을 남겨 두어도 화면은 같습니다.

흔한 잘못:

  • 조리 순서를 ul로 쓰면 번호 대신 점이 붙습니다. 번호를 1.처럼 글로 쓰면 ol의 번호와 겹쳐 '1. 1. 김치를…'이 됩니다.
  • 재료의 한 줄을 li 없이 ul 바로 안에 쓰면 점 없는 줄이 섞이고, 검사기가 Error를 냅니다.

폰 물음의 답은 ②입니다. </strong>과 '와' 사이는 빈칸이 없는 자리인데, 그 자리에서 줄을 바꿔 빈칸이 생깁니다(브라우저 규칙 2).

<p>
  <strong>잘 익은 김치</strong>
  와 찬밥만 있으면 됩니다.
</p>
결과 화면
잰 값개발자 도구에서 본 값
  • p의 보이는 글잘 익은 김치 와 찬밥만 있으면 됩니다.

①은 '와' 뒤에서, ③은 '익은'과 '김치' 사이의 빈칸 자리에서 줄을 바꿔 화면이 그대로입니다.

다시 볼 레슨: 제목 h1~h6 · 문단과 강조 · 목록 ul·ol·li · 공백 규칙과 특수 문자

끝까지 내려오면 저절로 표시됩니다. 이 기기에만 저장합니다.

HTML·CSS 목차로