사용자가 브라우저를 통해 눈으로 보고 클릭하고 상호작용하는 웹사이트의 모든 앞단(Client-sid) 영역을 구축하는 기술을 의미한다.
HTML
웹페이지의 기본 정보(텍스트, 이미지 등)를 만드는 언어이다.
CSS(Cascading Style Sheet)
디자인/스타일 개발에 사용되는 언어이다.
JavaScrpit
사용자와 상호작용 하기 위한 움직임을 만든다.
웹페이지 기본 구조를 만드는 언어이다.
head: 화면에 보이지 않는 메타 데이터를 포함한다.
body: 문서의 본문이다. 실제 내용이 들어간다.


html 문서를 만들고 각 구조를 파악하기
<!-- HTML 문서를 선언한다 -->
<!DOCTYPE html>
<!-- html: 문서에서 최상위 엘리먼트이다. head, body를 감싼다 -->
<html lang="en">
<!-- head: 메타데이터가 있는 영역 -->
<head>
<!-- 메타. charset: 문자 인코딩 방식. 기본값은 UTF-8이다
전 세계의 모든 문자를 지원한다 -->
<meta charset="UTF-8">
<!-- name: 메타 엘리먼트의 이름
content: 메타 엘리먼트의 내용
viewport: 화면
width=device-width: 이 HTML 문서의 넓이를 기기의 넓이로 정하겠다 -->
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- 이 HTML 문서의 제목 -->
<title>나의 첫번째 HTML 문서</title>
</head>
<!-- body: 이 문서의 본문 -->
<body>
<h1>Hello MTML!</h1>
<!-- body의 끝 -->
</body>
<!-- html의 끝 -->
</html>
HTML 문서를 구성하는 각각의 요소를 의미한다.

h1, p 엘리먼트를 활용해 간단한 블로그 헤더를 만들어라
<!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>Blog</h1>
<!-- p 엘리먼트 -->
<p>안녕하세요!</p>
</body>
</html>
HTML 문서에서 모든 엘리먼트들은 계층 구조로 구성된다.

ul, li 엘리먼트를 활용해 간단한 리스트를 만들고 계층 구조를 확인하라.
<!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>
<!-- ul: unordered list -->
<!-- li들의 부모 -->
<ul>
<!-- li: list item -->
<!-- ul의 자식들 -->
<!-- li들은 서로 형제 관계 (같은 부모를 둔 관계) -->
<li>foo</li>
<li>bar</li>
<li>baz</li>
</ul>
</body>
</html>
속성을 사용해 엘리먼트에 추가적인 내용이나 특별한 기능을 부여할 수 있다.
엘리먼트 별로 고유한 속성들을 가지고 있다.
<엘리먼트 속성1 = 값 속성2 = 값...> 내용</엘리먼트>
구글로 이동하는 링크를 만들어라.
<!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>
<a href="http://google.com">Google</a>
</body>
</html>
제목(Heading)을 표현하는 데 사용된다.
h1 - h6까지 구성되어있으며 숫자가 커질수록 글자가 작아진다.

h1-h5 엘리먼트를 활용해 앞의 이미지를 구현하라.
<!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>Heading 1</h1>
<h2>Heading 2</h2>
<h3>Heading 3</h3>
<h4>Heading 4</h4>
<h5>Heading 5</h5>
<h6>Heading 6</h6>
</body>
</html>
문장(paragraph)을 표현하는데 사용된다.
다음의 문장을 화면에 만들어라.
시계는 살 수 있지만 시간을 살 수 없다.
시계도 비싸지면 살 수 없다.
<!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>
<p>시계는 살 수 있지만 시간은 살 수 없습니다.</p>
<p>시계도 비싸면 살 수 없습니다.</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>
<!-- 새 창에서 구글을 연다 -->
<!-- target의 기본값은 _selt 이다 -->
<a href="http://google.com" target ="_blank">
Google
</a>
</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>
<p>
시계는 살 수 있지만
<span style="font-weight: bold;">시간</span>은 살 수 없습니다.
</p>
</body>
</html>
문장에서 줄바꿈 기능(break)을 제공한다.
다음 문장을 출력하라.
시계는 살 수 있지만
시간은 살 수 없습니다.
수평선(horizontal rule)을 긋는다. 문서에서 영역을 구분하는 용도로 사용된다.
다음의 디자인을 만들어라.

<!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>Title</h1>
<!-- 수평선 -->
<hr>
<!-- 샘플 텍스트 만드는 법: lorem 입력 -->
<p>
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Debitis,
ab laborum? Eius, iste voluptates quo delectus placeat possimus sequi alias
id dolore, iusto vel dolorem, dolor aliquid saepe voluptate recusandae?
</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>
<b>bold text</b>
<br>
<i>italic text</i>
<br>
<small>small text</small>
</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>
<h2>Front-end 언어</h2>
<i>재미있는 비유로 알아봅시다</i>
<h4>HTML</h3>
<p>우리 몸의 뼈대 역할</p>
<hr>
<h4>CSS</h4>
<p>우리 몸의 피부 역할</p>
<hr>
<h4>JavaScript</h4>
<p>우리 몸의 근육 역할</p>
</body>
</html>
순서가 없는 리스트(Unordered list)를 의미한다.
il(list item) 요소와 함께 사용된다.
ul, li를 활용해 간단한 리스트를 만들어라.
<!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>ul</h3>
<!-- 순서가 없는 리스트(Unordered List) -->
<ul>
<!-- 리스트 항목(List Item) -->
<li>foo</li>
<li>bar</li>
<li>baz</li>
</ul>
</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>
<ul>
<li>밥 먹기 ✅ </li>
<li>공부하기</li>
<li>게임하기</li>
<li>기타치기</li>
</ul>
</body>
</html>
순서가 있는 리스트(ordered list)를 생성하는 엘리먼트로 각 요소에게 순서대로 번호를 할당한다.
li(list item) 엘리먼트와 함께 사용된다.
ol을 활용해 간단한 리스트를 만들어라.
<!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>ol</h3>
<!-- ol(ordered list): 순서가 있는 리스트 -->
<ol>
<!-- li (lit item) -->
<li>foo</li>
<li>bar</li>
<li>baz</li>
</ol>
</body>
</html>
ul과 다르게 1. 2. 3 이런식으로 번호가 생기는 것을 확인할 수 있다.
ol을 활용해 다음과 같이 라면 끓이는 레시피를 만들어라.

<!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>
<ol>
<li>물을 끓입니다</li>
<li>물이 끓으면 건더기를 넣습니다</li>
<li>스프와 면을 넣습니다</li>
<li>냉장고에서 김치를 꺼내옵니다</li>
<li>냠냠합니다</li>
</ol>
</body>
</html>
데이터 리스트(data list)를 의미하는 것으로 dt(data title)와 dd(data description) 엘리먼트와 함께 사용된다.

dl을 활용해 간단한 데이터 목록을 만들어라.
<!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>dl</h3>
<!-- dl (data list) -->
<dl>
<!-- dt (data title): 데이터 제목 -->
<dt>title</dt>
<!-- dd (data description): 데이터 설명 -->
<dd>description</dd>
<dt>title</dt>
<dd>description</dd>
<dt>title</dt>
<dd>description</dd>
</dl>
</body>
</html>
dl을 활용해 다음의 과일 리스트를 만들어라

<!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>
<h2>과일 가게</h2>
<dl>
<dt>수박</dt>
<dd>15,000원</dd>
<dt>참외</dt>
<dd>3,000원</dd>
<dt>오렌지</dt>
<dd>4,000원</dd>
<dt>토마토</dt>
<dd>5,000원</dd>
</dl>
</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>Person</h1>
<!-- border: 임시로 테이블에 선을 만든다 -->
<table border = "1">
<tbody>
<!-- 첫번째 행(row) -->
<tr>
<!-- 열의 제목 -->
<th>id</th>
<th>name</th>
<th>age</th>
</tr>
<!-- 두번째 행 -->
<tr>
<!-- td(table data): 칸 또는 셀(cell) -->
<td>1</td>
<td>John Doe</td>
<td>30</td>
</tr>
<!-- 세번째 행 -->
<tr>
<td>2</td>
<td>Jane Doe</td>
<td>25</td>
</tr>
<!-- 네번째 행 -->
<tr>
<td>3</td>
<td>Mary Doe</td>
<td>40</td>
</tr>
</tbody>
</table>
</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>
<table border="1">
<tbody>
<tr>
<th>번호</th>
<th>제품명</th>
<th>가격</th>
<th>판매량</th>
</tr>
<tr>
<td>1</td>
<td>아메리카노</td>
<td>2,000원</td>
<td>18</td>
</tr>
<tr>
<td>2</td>
<td>카페라떼</td>
<td>3,000원</td>
<td>5</td>
<tr>
<td>3</td>
<td>바닐라라떼</td>
<td>3,500원</td>
<td>3</td>
</tr>
<tr>
<td>4</td>
<td>마카롱</td>
<td>2,000원</td>
<td>3</td>
</tr>
<tr>
<td>5</td>
<td>치즈케이크</td>
<td>3,500원</td>
<td>1</td>
</tr>
</tr>
</tbody>
</table>
</body>
</html>
오늘은 프론트엔드를 배웠다.
java를 배웠어서 그런지 아직까지는 훨씬 더 쉽고 재미있다.
물론 더 깊게 들어가면 배워야 할 것들이 쌓여있겠지만 지금은 매우 간단해서 좋다.
프론트엔드 언어를 배우는 와중에도 백엔드 복습을 하면서 잊지 않도록 되살려야겠다.