크게 Semantic/Non-Semantic 방식으로 나뉜다.



화면에 보여지는 모습은 시멘틱 태그를 사용하던 div 엘리먼트만 사용하던 똑같다.

시멘틱 엘리먼트들을 활용해 문서의 전체 구조를 만들어라.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<!-- 헤더 (머릿말) -->
<header>
<h1>Amazon</h1>
<p>Welcome to Amazon!</p>
</header>
<!-- 메뉴 (Navigation) -->
<nav>
<ul>
<li>
<a href="#">Home</a>
</li>
<li>
<a href="#">Products</a>
</li>
<li>
<a href="#">Contact</a>
</li>
</ul>
</nav>
<!-- 본문 (Main Contents) -->
<main>
<section>
<h2>Food</h2>
<p>
Lorem ipsum dolor sit amet consectetur
adipisicing elit. Architecto delectus,
enim sed perferendis aspernatur repellat
accusantium iste fugiat reprehenderit
quam illo consequuntur excepturi impedit.
Placeat et similique blanditiis. Nemo, nobis.
</p>
</section>
<!-- 섹션 1 전자제품 -->
<section>
<h2>Electronics</h2>
<p>
Lorem ipsum dolor sit amet consectetur
adipisicing elit. Rem accusantium
quisquam ipsam, magni recusandae et
voluptates laudantium praesentium
laborum natus aliquid aliquam explicabo
quis, vitae doloremque hic a beatae optio?
</p>
</section>
<!-- 섹션 2 패션 -->
<section>
<h2>Fashion</h2>
<p>
Lorem, ipsum dolor sit amet consectetur
adipisicing elit. Ullam explicabo amet quidem
sit aspernatur eius vero porro rem. Debitis
modi quisquam eaque earum alias fugiat
dignissimos, quam commodi mollitia ab?
</p>
</section>
</main>
<!-- 사이드 컨텐츠 (Side Contents) -->
<!-- 추천 상품 -->
<aside>
<h2>Recommended for you</h2>
<ul>
<li>Galaxy S26</li>
<li>Watermelon</li>
</ul>
</aside>
<!-- 꼬릿말(footer) -->
<footer>
<p>2025 © Amazon</p>
</footer>
</body>
</html>
넌 시멘틱 방식으로 웹페이지의 전체 구조를 만들어라.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<!-- 헤더 -->
<div id="header">
<h1>Amazon</h1>
<p>Welcome to Amazon!</p>
</div>
<!-- 메뉴 -->
<div>
<ul>
<li><a href="#">Home</a></li>
</ul>
<ul>
<li>
<a href="#">Products</a>
</li>
</ul>
<ul>
<li>
<a href="#">Contact</a>
</li>
</ul>
</div>
<!-- 메인 컨텐츠 -->
<div id="main">
<!-- 섹션1 음식 -->
<!-- id는 중복이 될 수 없습니다 따라서 id=section 사용 불가 -->
<div>
<h2>Food</h2>
<p>
Lorem ipsum dolor sit amet consectetur
adipisicing elit. Magni, corporis quas!
Accusamus a cumque in neque vitae
voluptatem hic iure rerum soluta nulla
commodi repellendus corrupti eaque, ducimus
unde iusto.
</p>
</div>
<!-- 섹션2 전자제품 -->
<div>
<h2>Electronics</h2>
<p>
Lorem ipsum dolor sit amet consectetur
adipisicing elit. Quasi sed numquam illum
laborum cum vitae iusto assumenda voluptas
velit, voluptatum expedita dolorem optio
perferendis aliquid, voluptate veniam minima
animi tenetur.
</p>
</div>
<!-- 섹션3 패션 -->
<div>
<h2>Fashion</h2>
<p>Lorem ipsum dolor sit amet consectetur adipisicing
elit. Accusamus nihil doloremque quod, culpa,
et commodi consequatur eveniet perspiciatis porro
explicabo aliquam distinctio quisquam praesentium
fuga corporis quas pariatur quae! In.
</p>
</div>
</div>
<!-- 사이드 컨텐츠 -->
<div id="aside">
<h2>Recommended for you</h2>
<ul>
<li>Galaxy S26</li>
<li>Watermelon</li>
</ul>
</div>
<!-- 꼬릿말 -->
<div id="footer">
<p>
2025 © Amazon
</p>
</div>
</body>
</html>
사용자로부터 데이터를 입력받아 서버에 제출하는 역할을 수행한다.
다음은 폼을 생성하기위해 사용되는 엘리먼트들을 용도에 따라 분류한 표이다.

폼을 만드는 역할을 수행한다. 다음은 form 엘리먼트의 속성이다.

정보를 수집받는 기본 요소로 가장 많이 사용된다. 다음은 용도별 input의 타입이다.

게시물 본문 등 사용자로부터 긴 글을 입력받을 수 있도록 큰 텍스트 입력 공간을 제공한다.

사용자에게 선택 가능한 옵션을 제공한다. option 엘리먼트와 함께 사용된다.

input, textarea, select 등 입력을 받는 엘리먼트의 이름표(label)을 수행한다.
다음은 label 엘리먼트의 속성이다.

폼 제출 뿐만 아니라 사용자와의 상호작용에도 사용되는 요소이다.
타입에 따라 다르게 사용된다.

구독 폼(Subcribe Form)을 만들어라.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h1>구독하기</h1>
<!--
action: 요청 주소
method: 요청 메서드
POST /subcribe 요청을 전송한다
-->
<form action="/subcribe" method="POST">
<!--
사용자 이메일 입력란
name: 서버에서 폼에 입력한 데이터를 구분하는 기준
type=email: 입력한 값이 유효한 이메일이 아니면 제출을 거부
placeholder: 예시 데이터를 보여준다
required: 필수값으로 지정한다
-->
<input
type="email"
name="email"
id=""
placeholder="johndoe@example.com"
required
>
<!-- 제출버튼 -->
<button type="submit">구독하기</button>
</form>
</body>
</html>
성과 이름을 받는 폼을 만들어라.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h1>개인정보</h1>
<!-- form 엘리먼트는 생략되었다 -->
<p>
<!--
input의 이름표
for 속성: 원하는 input과 연결하는 용도. input의 id와 일치해야 한다.
-->
<label for="first-name">이름</label>
<!-- 텍스트 입력란 -->
<input
type="text"
name="first-name"
id="first-name"
placeholder="John"
required
>
</p>
<p>
<label for="last-name">성</label>
<input
type="text"
name="last-name"
id="last-name"
placeholder="Doe"
required
>
</p>
</body>
</html>
로그인 폼을 만들어라.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h1>로그인</h1>
<!-- form 엘리먼트는 생략 -->
<p>
<label for="username">아이디</label>
<input type="text" name="username" id="username">
</p>
<p>
<label for="password">비밀번호</label>
<input type="password" name="password" id="password">
</p>
</body>
</html>
예약 폼을 만들어라
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h1>예약하기</h1>
<label for="date">날짜</label>
<input type="date" name="date" id="date">
<label for="time">시간</label>
<input type="time" name="time" id="time">
</body>
</html>
로봇이 아닙니다 폼을 만들어라.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h1>로봇입니까?</h1>
<input type="checkbox" name="is-robot" id="is-robot">
<label for="is-robot">로봇이 아닙니다</label>
</body>
</html>
다음과 같이 사용자가 여러개를 사용할 수 있는 폼을 만들어라.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h1>Your Skills</h1>
<!-- 체크박스에서 같은 입력그룹(스킬)은 name을 일치시켜야 한다 -->
<!-- value: 서버에 실제 제출되는 값 -->
<input type="checkbox" name="skills" value="html" id="html">
<label for="html">HTML</label>
<input type="checkbox" name="skills" value="css" id="css">
<label for="css">CSS</label>
<input type="checkbox" name="skills" value="js" id="js">
<label for="js">JavaScript</label>
<input type="checkbox" name="skills" value="react" id="react">
<label for="react">React</label>
</body>
</html>
성별 선택 폼을 만들어라.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h3>성별</h3>
<input type="radio" name="gender" value="male" id="male">
<label for="male">남성</label>
<input type="radio" name="gender" value="femele" id="femele">
<label for="femele">여성</label>
<input type="radio" name="gender" value="gay" id="gay">
<label for="gay">게이</label>
</body>
</html>
다음과 같이 세대 선택폼을 만들어라

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h1>Survey Form</h1>
<p>Which generation are you in?</p>
<p>
<input type="checkbox" name="generation" value="gen-x" id="gen-x">
<label for="gen-x">Gen X</label>
</p>
<p>
<input type="checkbox" name="generation" value="milenials" id="milenials">
<label for="milenials">Milenials</label>
</p>
<p>
<input type="checkbox" name="generation" value="gen-z" id="gen-z">
<label for="gen-z">Gen Z</label>
</p>
<p>
<input type="checkbox" name="generation" value="alpha" id="alpha">
<label for="alpha">Alpha</label>
</p>
</body>
</html>
파일 업로드 폼을 만들어라.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h1>파일 업로드</h1>
<input type="file" name="file-upload" id="">
</body>
</html>
게시물 작성 폼을 만들어라
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h1>새 게시물</h1>
<p>
<label for="title">제목</label>
<input type="text" id="title">
</p>
<div>
<label for="content">내용</label>
<br>
<!--
rows: 입력 가능한 줄의 수. 그 이상이 되면 스크롤이 생긴다.
cols: 한 줄에 입력가능한 글자의 수
-->
<textarea
name="content"
id="content"
rows="5"
cols="20"
placeholder="내용을 입력하세요"
></textarea>
</div>
</body>
</html>
다음 그림을 참고해 댓글 입력란을 만들어라

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h1>Comments</h1>
<textarea
name="content"
id="content"
rows="5"
cols="20"
placeholder="Leave a comment.."
></textarea>
<br>
<button type="submit">Send</button>
</body>
</html>
국가를 선택하는 개인정보 폼을 만들어라.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h1>개인정보</h1>
<label for="country">국적</label>
<!-- 선택 가능한 옵션을 제공한다 -->
<select name="country" id="country">
<!-- 사용자가 선택한 value가 전송된다 -->
<option value="kr">대한민국</option>
<option value="us">미국</option>
<option value="jp">일본</option>
<option value="uk">영국</option>
</select>
</body>
</html>
다음과 같이 수량을 선택하는 폼을 만들어라.

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h1>T-Shirts</h1>
<label for="amount">amount</label>
<select name="amount" id="amount">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>
</body>
</html>
문서에 이미지(image)를 생성한다. 다음은 img 엘리먼트의 속성이다.

HTML 문서에 이미지를 삽입하라.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<!--
src(sourse): 이미지의 주소
alt(alternative text): 대체 텍스트. 이미지 가져오기에 실패한 경우 대신 보여준다
width: 이미지 넓이(px)
-->
<img
src="http://tvvmvn.github.io/resource/img/hakuna-matata.jpg"
alt="라이온 킹"
width="200"
>
</body>
</html>
HTML 문서에 좋아하는 이미지를 다음과 같이 삽입하라.

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h1>고양이</h1>
<br>
<p>
치즈
</p>
<img
src="https://www.fitpetmall.com/wp-content/uploads/2023/10/shutterstock_1844153299-1024x683-1.png"
alt="치즈"
width="200"
>
<br>
<p>
고등어
</p>
<img
src="https://cdn.crowdpic.net/detail-thumb/thumb_d_7B130F55DB53F09CEEE163024C8DF7E6.jpg"
alt="고등어"
width="200"
>
<br>
<p>
턱시도
</p>
<img
src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSY6UvuK34AW2b8jaXBv5k6leVj__WCFeWztoVCGaFa9v0DaqMe381wK5o&s=10"
alt="턱시도"
width="200"
>
</body>
</html>
HTML 문서에 영상(비디오)를 추가한다. source 엘리먼트와 함께 사용된다.
다음은 video 태그의 속성이다.

HTML 문서에 샘플 비디오를 삽입하라.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<!--
controls: 컨트롤 버튼(재생/중지 버튼, 소리조절 등)
autoplay: 자동재생
muted: 음소거
loop: 무한 재생
-->
<video
controls
autoplay
muted
loop
width="400"
>
<source
type="video/mp4"
src="http://media.w3.org/2010/05/sintel/trailer.mp4"
>
</video>
</body>
</html>
대표적인 HTML 아이콘 라이브러리로 fontawesome이 있다.
fontawesome 아이콘을 문서에 추가하라.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<!-- fontawesome CDN-->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/7.0.1/css/all.min.css"
integrity="sha512-2SwdPD6INVrV/lHTZbO2nodKhrnDdJK9/kg2XD1r9uGqPo1cUbujc+IYdlYdEErWNu69gVcYgdxlmVmzTWnetw=="
crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
<body>
<!-- 좋아요 아이콘 -->
<i class="fa-solid fa-thumbs-up"></i>
</body>
</html>
inline frame을 을미하는 것으로 웹페이지 안에 또 다른 웹페이지를 액자처럼 삽입할 수 있게 해주는 엘리먼트이다.
유튜브 영상 퍼오기, 구글 지도 넣기, 광고 삽입 등에 사용된다.
HTML 문서에 좋아하는 유튜브 영상을 삽입하라.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<iframe width="775"
height="444"
src="https://www.youtube.com/embed/mxROJA4Edo8?list=RDmxROJA4Edo8"
title="[𝐏𝐥𝐚𝐲𝐥𝐢𝐬𝐭] 락은 사람을 찢어"
frameborder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
referrerpolicy="strict-origin-when-cross-origin" allowfullscreen>
</iframe>
</body>
</html>
오늘은 HTML의 전체적인 내용을 모두 배웠다.
솔직히 조금 지루했었는데 좋아하는 사진을 넣고 동영상을 넣으며 움직이는 모습을 보니 재미있었다.
css랑 js까지 얼른 배워서 웹꾸를 빨리 하고 싶다.