Guider/Frontend/FrontendDevGuide0002
Frontend#02

FrontendDevGuide0002

HTML ์™„์ „ ์ •๋ณต

๐Ÿฆด FrontendDevGuide0002 — HTML ์™„์ „ ์ •๋ณต A-Z

 

๐Ÿ’ก ์ด ๊ธ€์„ ์ฝ๊ณ  ๋‚˜๋ฉด...
HTML ๊ธฐ๋ณธ ๊ตฌ์กฐ๋ถ€ํ„ฐ ์‹œ๋งจํ‹ฑ ํƒœ๊ทธ, ํผ, ์ ‘๊ทผ์„ฑ, SEO๊นŒ์ง€ —
ํ˜„์—…์—์„œ HTML์„ ์ž์‹  ์žˆ๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ์ˆ˜์ค€์ด ๋ฉ๋‹ˆ๋‹ค!

 

๐Ÿ“Œ ์˜ˆ์ƒ ํ•™์Šต ๊ธฐ๊ฐ„: 2~3์ฃผ  |  ๋‚œ์ด๋„: โญโญโ˜†โ˜†โ˜†  |  ์„ ์ˆ˜ ์ง€์‹: ์ธํ„ฐ๋„ท ๊ธฐ์ดˆ (Guide0001)

 


๐Ÿ  1. HTML์ด๋ž€? — ์›นํŽ˜์ด์ง€์˜ ๋ผˆ๋Œ€

HTML(HyperText Markup Language)์€ ์›นํŽ˜์ด์ง€์˜ ๊ตฌ์กฐ(๋ผˆ๋Œ€)๋ฅผ ๋งŒ๋“œ๋Š” ์–ธ์–ด์ž…๋‹ˆ๋‹ค.
"๋งˆํฌ์—… ์–ธ์–ด"๋ผ๋Š” ์ด๋ฆ„์ฒ˜๋Ÿผ, ํƒœ๊ทธ(Tag)๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ฝ˜ํ…์ธ ์— ์˜๋ฏธ๋ฅผ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.

 

๐Ÿ  ์ง‘์œผ๋กœ ๋น„์œ ํ•˜๋ฉด:
HTML = ๊ฑด๋ฌผ์˜ ๊ณจ์กฐ (๊ธฐ๋‘ฅ, ๋ฒฝ, ๋ฐฉ ๋ฐฐ์น˜ — ๊ตฌ์กฐ)
CSS = ์ธํ…Œ๋ฆฌ์–ด (์ƒ‰๊น”, ๋ฒฝ์ง€, ๊ฐ€๊ตฌ ๋ฐฐ์น˜ — ๋””์ž์ธ)
JavaScript = ์ „๊ธฐ·์ˆ˜๋„·์ž๋™๋ฌธ (๋™์ž‘, ๊ธฐ๋Šฅ)

 

๐Ÿ”– ํƒœ๊ทธ(Tag)๋ž€?
HTML์€ ๊บฝ์‡  ๊ด„ํ˜ธ(<>)๋กœ ๊ฐ์‹ธ์ง„ ํƒœ๊ทธ๋กœ ์ฝ˜ํ…์ธ ๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.
๋Œ€๋ถ€๋ถ„์˜ ํƒœ๊ทธ๋Š” ์—ฌ๋Š” ํƒœ๊ทธ์™€ ๋‹ซ๋Š” ํƒœ๊ทธ ์Œ์œผ๋กœ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค:
<h1>์•ˆ๋…•ํ•˜์„ธ์š”</h1> — ์—ฌ๋Š” ํƒœ๊ทธ / ๋‹ซ๋Š” ํƒœ๊ทธ
์ผ๋ถ€ ํƒœ๊ทธ๋Š” ๋‹จ๋… ์‚ฌ์šฉ: <img>, <br>, <hr>, <input>

 


๐Ÿ“ 2. HTML ๊ธฐ๋ณธ ๊ตฌ์กฐ — ๋ชจ๋“  ์›นํŽ˜์ด์ง€์˜ ํ‹€

๋ชจ๋“  HTML ํŒŒ์ผ์€ ์•„๋ž˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํ‹€์€ ๋ฐ˜๋“œ์‹œ ์™ธ์›Œ์•ผ ํ•ฉ๋‹ˆ๋‹ค!

 

HTML ๊ธฐ๋ณธ ๊ตฌ์กฐ ์„ค๋ช…๋„

 

๐Ÿ“‹ head ํƒœ๊ทธ ์•ˆ์— ๋“ค์–ด๊ฐ€๋Š” ์ฃผ์š” ์š”์†Œ:
<meta charset="UTF-8"> — ํ•œ๊ธ€์ด ๊นจ์ง€์ง€ ์•Š๋„๋ก ์ธ์ฝ”๋”ฉ ์„ค์ •
<meta name="viewport" content="width=device-width"> — ๋ชจ๋ฐ”์ผ ๋ฐ˜์‘ํ˜• ํ•„์ˆ˜
<title>ํŽ˜์ด์ง€ ์ œ๋ชฉ</title> — ๋ธŒ๋ผ์šฐ์ € ํƒญ์— ํ‘œ์‹œ๋˜๋Š” ์ œ๋ชฉ
<link rel="stylesheet" href="style.css"> — CSS ํŒŒ์ผ ์—ฐ๊ฒฐ
<script src="app.js"></script> — JS ํŒŒ์ผ ์—ฐ๊ฒฐ

 


๐Ÿ“Œ 3. ๊ผญ ์•Œ์•„์•ผ ํ•  HTML ํƒœ๊ทธ ์™„์ „ ์ •๋ฆฌ

HTML ํƒœ๊ทธ๋Š” 100๊ฐœ๊ฐ€ ๋„˜์ง€๋งŒ, ์‹ค๋ฌด์—์„œ ์ž์ฃผ ์“ฐ๋Š” 20~30๊ฐœ๋งŒ ์ œ๋Œ€๋กœ ์•Œ์•„๋„ ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.

 

HTML ์ฃผ์š” ํƒœ๊ทธ ์™„์ „ ์ •๋ฆฌ ๋„ํ‘œ

 

๐Ÿ“ ํ…์ŠคํŠธ ๊ด€๋ จ ํƒœ๊ทธ ์ƒ์„ธ

 

์ œ๋ชฉ ํƒœ๊ทธ h1 ~ h6:
h1์€ ํŽ˜์ด์ง€๋‹น 1๊ฐœ๋งŒ ์‚ฌ์šฉ (SEO ํ•ต์‹ฌ — ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์ œ๋ชฉ)
h2๋Š” ์„น์…˜ ์ œ๋ชฉ, h3๋Š” ์†Œ์ œ๋ชฉ ์‹์œผ๋กœ ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ์ง€์ผœ์•ผ ํ•ฉ๋‹ˆ๋‹ค
์˜ˆ) h1 → "ํ”„๋ก ํŠธ์—”๋“œ ์™„์ „ ๊ฐ€์ด๋“œ" / h2 → "HTML์ด๋ž€?" / h3 → "๊ธฐ๋ณธ ๊ตฌ์กฐ"

 

๊ฐ•์กฐ ํƒœ๊ทธ strong vs em vs b vs i:
<strong> — ์˜๋ฏธ์ƒ ์ค‘์š”ํ•œ ๊ฐ•์กฐ (๊ตต๊ฒŒ, ์Šคํฌ๋ฆฐ๋ฆฌ๋”๊ฐ€ ๊ฐ•์กฐํ•ด์„œ ์ฝ์Œ) ← ๊ถŒ์žฅ
<em> — ์˜๋ฏธ์ƒ ๊ฐ•์กฐ (๊ธฐ์šธ์ž„, ์Šคํฌ๋ฆฐ๋ฆฌ๋”๊ฐ€ ๊ฐ•์กฐํ•ด์„œ ์ฝ์Œ) ← ๊ถŒ์žฅ
<b> — ์‹œ๊ฐ์  ๊ตต๊ฒŒ๋งŒ (์˜๋ฏธ ์—†์Œ) ← ์Šคํƒ€์ผ์šฉ
<i> — ์‹œ๊ฐ์  ๊ธฐ์šธ์ž„๋งŒ (์˜๋ฏธ ์—†์Œ) ← ์•„์ด์ฝ˜ ํฐํŠธ์— ๋งŽ์ด ์‚ฌ์šฉ

 

๋งํฌ ํƒœ๊ทธ <a> ์™„์ „ ์ •๋ณต:
href="URL" — ์ด๋™ํ•  ์ฃผ์†Œ
href="#id" — ๊ฐ™์€ ํŽ˜์ด์ง€ ๋‚ด ํŠน์ • ์œ„์น˜๋กœ ์ด๋™ (์•ต์ปค ๋งํฌ)
href="mailto:email@naver.com" — ์ด๋ฉ”์ผ ์•ฑ ์—ด๊ธฐ
target="_blank" — ์ƒˆ ํƒญ์œผ๋กœ ์—ด๊ธฐ
rel="noopener noreferrer" — target="_blank" ์‚ฌ์šฉ ์‹œ ๋ณด์•ˆ์„ ์œ„ํ•ด ๋ฐ˜๋“œ์‹œ ์ถ”๊ฐ€!

 

์ด๋ฏธ์ง€ ํƒœ๊ทธ <img> ์™„์ „ ์ •๋ณต:
src — ์ด๋ฏธ์ง€ ํŒŒ์ผ ๊ฒฝ๋กœ ๋˜๋Š” URL
alt — ์ด๋ฏธ์ง€ ๋Œ€์ฒด ํ…์ŠคํŠธ (์ ‘๊ทผ์„ฑ, SEO ํ•„์ˆ˜! ์ ˆ๋Œ€ ๋น ๋œจ๋ฆฌ๋ฉด ์•ˆ ๋จ)
width / height — ํฌ๊ธฐ ์ง€์ • (๋ ˆ์ด์•„์›ƒ ์•ˆ์ •์„ฑ์„ ์œ„ํ•ด ์ง€์ • ๊ถŒ์žฅ)
loading="lazy" — ํ™”๋ฉด์— ๋ณด์ผ ๋•Œ ๋กœ๋“œ (์„ฑ๋Šฅ ์ตœ์ ํ™”)
์˜ˆ) <img src="logo.png" alt="ํšŒ์‚ฌ ๋กœ๊ณ " width="200" height="100" loading="lazy">

 


๐Ÿ“ฆ 4. ๋ธ”๋ก vs ์ธ๋ผ์ธ — HTML์˜ ํ•ต์‹ฌ ๊ฐœ๋…

HTML ์š”์†Œ๋Š” ํฌ๊ฒŒ ๋ธ”๋ก(Block) ์š”์†Œ์™€ ์ธ๋ผ์ธ(Inline) ์š”์†Œ๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค. CSS ๋ ˆ์ด์•„์›ƒ์„ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•œ ํ•ต์‹ฌ ๊ฐœ๋…์ž…๋‹ˆ๋‹ค.

 

๋ธ”๋ก vs ์ธ๋ผ์ธ ์š”์†Œ ๋น„๊ต ๋„ํ‘œ

 

๐Ÿ’ก ์‹ค์ „ ํŒ:
<div> ์•ˆ์— <span> ๋„ฃ๊ธฐ โœ… (๋ธ”๋ก ์•ˆ์— ์ธ๋ผ์ธ OK)
<span> ์•ˆ์— <div> ๋„ฃ๊ธฐ โŒ (์ธ๋ผ์ธ ์•ˆ์— ๋ธ”๋ก NG)
<p> ์•ˆ์— <div> ๋„ฃ๊ธฐ โŒ (p๋Š” ๋ธ”๋ก์ด์ง€๋งŒ ๋ธ”๋ก ์ž์‹ ๋ถˆ๊ฐ€)
CSS์˜ display: block / inline / inline-block / flex๋กœ ์–ธ์ œ๋“  ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ

 


๐Ÿ—๏ธ 5. ์‹œ๋งจํ‹ฑ(Semantic) HTML — ํ˜„์—… ํ•„์ˆ˜

์‹œ๋งจํ‹ฑ ํƒœ๊ทธ๋Š” ํƒœ๊ทธ ์ด๋ฆ„ ์ž์ฒด๊ฐ€ ์˜๋ฏธ๋ฅผ ๊ฐ€์ง€๋Š” ํƒœ๊ทธ์ž…๋‹ˆ๋‹ค.
๋‹จ์ˆœํžˆ <div>๋กœ ๋ชจ๋“  ๊ตฌ์—ญ์„ ๋‚˜๋ˆ„๋Š” ๊ฒƒ๋ณด๋‹ค ์˜๋ฏธ ์žˆ๋Š” ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด SEO, ์ ‘๊ทผ์„ฑ, ์ฝ”๋“œ ๊ฐ€๋…์„ฑ์ด ๋ชจ๋‘ ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค.

 

์‹œ๋งจํ‹ฑ HTML ๊ตฌ์กฐ ๋น„๊ต ๋„ํ‘œ

 

์‹œ๋งจํ‹ฑ ํƒœ๊ทธ ์ข…๋ฅ˜ ๋„ํ‘œ

 

๐Ÿ” article vs section ์ฐจ์ด:
<article> — ํŽ˜์ด์ง€์—์„œ ๋–ผ์–ด๋‚ด๋„ ๋…๋ฆฝ์ ์œผ๋กœ ์˜๋ฏธ ์žˆ๋Š” ์ฝ˜ํ…์ธ 
์˜ˆ) ๋ธ”๋กœ๊ทธ ๊ธ€ ํ•˜๋‚˜, ๋‰ด์Šค ๊ธฐ์‚ฌ, ์‚ฌ์šฉ์ž ๋Œ“๊ธ€

<section> — ์ฃผ์ œ๋ณ„๋กœ ๊ทธ๋ฃนํ™”ํ•˜๋Š” ๋‹จ์œ„ (๋ณดํ†ต ์ œ๋ชฉ h2~h3์„ ํฌํ•จ)
์˜ˆ) "์†Œ๊ฐœ ์„น์…˜", "๊ธฐ์ˆ  ์„น์…˜", "์—ฐ๋ฝ์ฒ˜ ์„น์…˜"

 


๐Ÿ“ 6. HTML Form — ์‚ฌ์šฉ์ž ์ž…๋ ฅ ์ฒ˜๋ฆฌ์˜ ๋ชจ๋“  ๊ฒƒ

๋กœ๊ทธ์ธ, ํšŒ์›๊ฐ€์ž…, ๊ฒ€์ƒ‰์ฐฝ, ๋Œ“๊ธ€ ์ž‘์„ฑ — ๋ชจ๋‘ HTML Form์œผ๋กœ ๋งŒ๋“ค์–ด์ง‘๋‹ˆ๋‹ค.
ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž๋ผ๋ฉด Form์„ ์™„๋ฒฝํžˆ ์ดํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

HTML Form ์ž…๋ ฅ ์š”์†Œ ์ •๋ฆฌ ๋„ํ‘œ

 

๐Ÿ“‹ Form ๊ธฐ๋ณธ ๊ตฌ์กฐ:
action — ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ์„œ๋ฒ„ URL
method — GET(URL์— ๋ฐ์ดํ„ฐ ํฌํ•จ) / POST(์ˆจ๊ฒจ์„œ ์ „์†ก)
→ ๋น„๋ฐ€๋ฒˆํ˜ธ, ๊ฐœ์ธ์ •๋ณด๋Š” ๋ฐ˜๋“œ์‹œ POST ์‚ฌ์šฉ!

<form action="/login" method="POST">
  <input type="email" name="email" required>
  <input type="password" name="pw" required>
  <button type="submit">๋กœ๊ทธ์ธ</button>
</form>

 

โญ label ํƒœ๊ทธ์˜ ์ค‘์š”์„ฑ:
input์—๋Š” ๋ฐ˜๋“œ์‹œ <label>์„ ์—ฐ๊ฒฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค (์ ‘๊ทผ์„ฑ ํ•„์ˆ˜!)
<label for="email">์ด๋ฉ”์ผ</label>
<input type="email" id="email" name="email">
→ label ํด๋ฆญ ์‹œ input์— ํฌ์ปค์Šค → ์‚ฌ์šฉ์„ฑ ํ–ฅ์ƒ
→ ์Šคํฌ๋ฆฐ๋ฆฌ๋”๊ฐ€ "์ด๋ฉ”์ผ ์ž…๋ ฅ์นธ"์ด๋ผ๊ณ  ์•ˆ๋‚ด ๊ฐ€๋Šฅ

 

๐Ÿ›ก๏ธ HTML5 ๋‚ด์žฅ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ์†์„ฑ:
required — ํ•„์ˆ˜ ์ž…๋ ฅ
minlength / maxlength — ์ตœ์†Œ/์ตœ๋Œ€ ๊ธ€์ž ์ˆ˜
min / max — ์ˆซ์ž ์ตœ์†Œ/์ตœ๋Œ€๊ฐ’
pattern — ์ •๊ทœ์‹์œผ๋กœ ํ˜•์‹ ๊ฒ€์‚ฌ
type="email" — ์ด๋ฉ”์ผ ํ˜•์‹ ์ž๋™ ๊ฒ€์‚ฌ
→ JS ์—†์ด๋„ ๊ธฐ๋ณธ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๊ฐ€๋Šฅ!

 


โ™ฟ 7. ์ ‘๊ทผ์„ฑ(a11y)๊ณผ SEO — ํ”„๋กœ ๊ฐœ๋ฐœ์ž์˜ ๊ธฐ์ค€

์ ‘๊ทผ์„ฑ(Accessibility, a11y)์€ ์žฅ์• ๊ฐ€ ์žˆ๋Š” ์‚ฌ์šฉ์ž๋„ ์›น์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ ‘๊ทผ์„ฑ์ด ์ข‹์œผ๋ฉด SEO๋„ ์ข‹์•„์ง‘๋‹ˆ๋‹ค. ๋‘ ๋งˆ๋ฆฌ ํ† ๋ผ๋ฅผ ๋™์‹œ์— ์žก๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค!

 

์ ‘๊ทผ์„ฑ SEO ์ฒดํฌ๋ฆฌ์ŠคํŠธ ๋„ํ‘œ

 

๐Ÿ” WAI-ARIA ๊ธฐ์ดˆ:
์‹œ๋งจํ‹ฑ ํƒœ๊ทธ๋งŒ์œผ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์—†๋Š” ์—ญํ• ์„ ์„ค๋ช…ํ•˜๋Š” ์†์„ฑ์ž…๋‹ˆ๋‹ค.
role — ์š”์†Œ์˜ ์—ญํ•  ๋ช…์‹œ (role="button", role="navigation")
aria-label — ์š”์†Œ ์„ค๋ช… ํ…์ŠคํŠธ (๋ˆˆ์— ์•ˆ ๋ณด์ด์ง€๋งŒ ์Šคํฌ๋ฆฐ๋ฆฌ๋”๊ฐ€ ์ฝ์Œ)
aria-hidden="true" — ์Šคํฌ๋ฆฐ๋ฆฌ๋”๊ฐ€ ๋ฌด์‹œํ•˜๊ฒŒ ํ•จ (์žฅ์‹์šฉ ์•„์ด์ฝ˜ ๋“ฑ)
์˜ˆ) <button aria-label="๊ฒ€์ƒ‰"><i class="icon-search"></i></button>

 


๐Ÿ“ 8. ํŒŒ์ผ ๊ฒฝ๋กœ ์™„์ „ ์ •๋ณต

์ด๋ฏธ์ง€, CSS, JS ํŒŒ์ผ์„ ์—ฐ๊ฒฐํ•  ๋•Œ ๊ฒฝ๋กœ๋ฅผ ์ž˜๋ชป ์ ์œผ๋ฉด ์•„๋ฌด๊ฒƒ๋„ ํ‘œ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฒฝ๋กœ์˜ ๋‘ ๊ฐ€์ง€ ๋ฐฉ์‹์„ ๊ผญ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

๐Ÿ“‚ ์ƒ๋Œ€ ๊ฒฝ๋กœ (Relative Path) — ํ˜„์žฌ ํŒŒ์ผ ๊ธฐ์ค€:
./images/logo.png — ํ˜„์žฌ ํด๋” ์•ˆ์˜ images ํด๋”
../images/logo.png — ํ•œ ๋‹จ๊ณ„ ์œ„ ํด๋”์˜ images ํด๋”
images/logo.png — ./๋ฅผ ์ƒ๋žตํ•ด๋„ ๊ฐ™์€ ์˜๋ฏธ
→ ์‹ค๋ฌด์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹

 

๐ŸŒ ์ ˆ๋Œ€ ๊ฒฝ๋กœ (Absolute Path) — ๋ฃจํŠธ/URL ๊ธฐ์ค€:
/images/logo.png — ์‚ฌ์ดํŠธ ๋ฃจํŠธ(/)๋ถ€ํ„ฐ ์‹œ์ž‘
https://example.com/images/logo.png — ์ „์ฒด URL
→ CDN ์ด๋ฏธ์ง€๋‚˜ ์™ธ๋ถ€ ๋ฆฌ์†Œ์Šค ์—ฐ๊ฒฐ ์‹œ ์‚ฌ์šฉ

 


๐Ÿ’ป 9. ํ˜„์—… ์ˆ˜์ค€์˜ HTML ์ฝ”๋“œ ์ž‘์„ฑ๋ฒ•

 

โœ… ํ˜„์—…์—์„œ ์ง€์ผœ์•ผ ํ•  HTML ์ž‘์„ฑ ์›์น™:
1. ์‹œ๋งจํ‹ฑ ํƒœ๊ทธ ์šฐ์„  — div/span๋ณด๋‹ค ์˜๋ฏธ ์žˆ๋Š” ํƒœ๊ทธ๋ฅผ ๋จผ์ € ์ฐพ๋Š”๋‹ค
2. h1์€ ํŽ˜์ด์ง€๋‹น 1๊ฐœ — SEO์˜ ํ•ต์‹ฌ, ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์ œ๋ชฉ์—๋งŒ
3. img์— alt ํ•„์ˆ˜ — ์ ˆ๋Œ€ ๋น ๋œจ๋ฆฌ์ง€ ์•Š๊ธฐ
4. ๋“ค์—ฌ์“ฐ๊ธฐ 2์นธ ๋˜๋Š” 4์นธ ํ†ต์ผ — ํŒ€๊ณผ ํ˜‘์˜ ํ›„ ์ผ๊ด€์„ฑ ์œ ์ง€
5. ์†Œ๋ฌธ์ž ํƒœ๊ทธ ์‚ฌ์šฉ — HTML5์—์„œ๋Š” ์†Œ๋ฌธ์ž๊ฐ€ ํ‘œ์ค€
6. ์†์„ฑ๊ฐ’ ๋”ฐ์˜ดํ‘œ ์‚ฌ์šฉ — class="btn" (๋”ฐ์˜ดํ‘œ ์ƒ๋žต ๋น„๊ถŒ์žฅ)
7. ๋ถˆํ•„์š”ํ•œ div ์ค„์ด๊ธฐ — "div ์ง€์˜ฅ(div hell)" ํ”ผํ•˜๊ธฐ

 

๐Ÿ”ง VS Code์—์„œ HTML ๋น ๋ฅด๊ฒŒ ์ž‘์„ฑํ•˜๋Š” ๊ฟ€ํŒ (Emmet):
! + Tab — HTML ๊ธฐ๋ณธ ๊ตฌ์กฐ ์ž๋™ ์™„์„ฑ
div.container + Tab — <div class="container"></div>
ul>li*5 + Tab — ul ์•ˆ์— li 5๊ฐœ ์ž๋™ ์ƒ์„ฑ
h2.title#main + Tab — class="title" id="main"์ธ h2
→ Emmet์„ ์ตํžˆ๋ฉด HTML ์ž‘์„ฑ ์†๋„๊ฐ€ 3~5๋ฐฐ ๋นจ๋ผ์ง‘๋‹ˆ๋‹ค!

 


โœ๏ธ 10. ์‹ค์Šต — ํฌํŠธํด๋ฆฌ์˜ค ๊ธฐ๋ณธ ํŽ˜์ด์ง€ ๋งŒ๋“ค๊ธฐ

๋ฐฐ์šด ๋‚ด์šฉ์„ ๋ชจ๋‘ ํ™œ์šฉํ•œ ์‹ค์ „ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค. ์ด ๊ตฌ์กฐ๊ฐ€ ์‹ค๋ฌด ํฌํŠธํด๋ฆฌ์˜ค ์‚ฌ์ดํŠธ์˜ ๊ธฐ์ดˆ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

 

๐Ÿ“„ ์‹ค์Šต ํŒŒ์ผ ๊ตฌ์กฐ:
my-portfolio/
  โ”œโ”€โ”€ index.html
  โ”œโ”€โ”€ css/style.css (๋‚˜์ค‘์— ์ถ”๊ฐ€)
  โ””โ”€โ”€ images/ (์ด๋ฏธ์ง€ ํด๋”)

 

๐Ÿš€ ์‹ค์Šต ๋ฏธ์…˜:
โ‘  VS Code ์„ค์น˜ ํ›„ ์ƒˆ ํด๋” "my-portfolio" ์ƒ์„ฑ
โ‘ก index.html ํŒŒ์ผ ์ƒ์„ฑ ํ›„ ! + Tab์œผ๋กœ ๊ธฐ๋ณธ ๊ตฌ์กฐ ์™„์„ฑ
โ‘ข header, nav, main, section, footer ์‹œ๋งจํ‹ฑ ํƒœ๊ทธ ์‚ฌ์šฉํ•ด์„œ ํŽ˜์ด์ง€ ๊ตฌ์„ฑ
โ‘ฃ ์ด๋ฆ„, ์†Œ๊ฐœ๊ธ€, ๊ธฐ์ˆ  ๋ชฉ๋ก(ul>li), ์—ฐ๋ฝ์ฒ˜ ๋งํฌ(mailto:) ์ถ”๊ฐ€
โ‘ค ๋ชจ๋“  ์ด๋ฏธ์ง€์— alt ์†์„ฑ ์ถ”๊ฐ€
โ‘ฅ ํฌ๋กฌ์œผ๋กœ ์—ด์–ด์„œ ํ™•์ธ, F12 Elements ํƒญ์—์„œ ๊ตฌ์กฐ ํ™•์ธ

 


โœ… ํ•ต์‹ฌ ์š”์•ฝ & ํ•™์Šต ์ฒดํฌ๋ฆฌ์ŠคํŠธ

 

"HTML์€ ๋‹จ์ˆœํžˆ ํƒœ๊ทธ๋ฅผ ์™ธ์šฐ๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค.
์ฝ˜ํ…์ธ ์— ์˜ฌ๋ฐ”๋ฅธ ์˜๋ฏธ๋ฅผ ๋ถ€์—ฌํ•˜๋Š” ๊ฒƒ — ๊ทธ๊ฒƒ์ด ์ข‹์€ HTML์˜ ๋ณธ์งˆ์ž…๋‹ˆ๋‹ค."

 

๐Ÿ“‹ ํ•™์Šต ์™„๋ฃŒ ์ฒดํฌ๋ฆฌ์ŠคํŠธ:
โ˜ HTML ๊ธฐ๋ณธ ๊ตฌ์กฐ(!DOCTYPE, html, head, body)๋ฅผ ์™ธ์› ๋‹ค
โ˜ ์ฃผ์š” ํƒœ๊ทธ 20๊ฐœ ์ด์ƒ์˜ ์šฉ๋„๋ฅผ ์•ˆ๋‹ค
โ˜ ๋ธ”๋ก ์š”์†Œ์™€ ์ธ๋ผ์ธ ์š”์†Œ์˜ ์ฐจ์ด๋ฅผ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค
โ˜ ์‹œ๋งจํ‹ฑ ํƒœ๊ทธ 7๊ฐœ(header/nav/main/article/section/aside/footer)๋ฅผ ์•ˆ๋‹ค
โ˜ form, input, button ํƒœ๊ทธ๋กœ ๋กœ๊ทธ์ธ ํผ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค
โ˜ img ํƒœ๊ทธ์— alt ์†์„ฑ์„ ํ•ญ์ƒ ์ถ”๊ฐ€ํ•œ๋‹ค
โ˜ ์ƒ๋Œ€ ๊ฒฝ๋กœ์™€ ์ ˆ๋Œ€ ๊ฒฝ๋กœ์˜ ์ฐจ์ด๋ฅผ ์•ˆ๋‹ค
โ˜ VS Code์—์„œ Emmet(! + Tab)์„ ์‚ฌ์šฉํ•ด๋ดค๋‹ค
โ˜ ํฌํŠธํด๋ฆฌ์˜ค ๊ธฐ๋ณธ ํŽ˜์ด์ง€๋ฅผ ์ง์ ‘ ๋งŒ๋“ค์–ด๋ดค๋‹ค
โ˜ ํฌ๋กฌ DevTools์˜ Elements ํƒญ์—์„œ HTML ๊ตฌ์กฐ๋ฅผ ํ™•์ธํ•ด๋ดค๋‹ค

 

๐ŸŽ‰ ๋‹ค์Œ ๋‹จ๊ณ„: FrontendDevGuide0003 — CSS ์™„์ „ ์ •๋ณต ์œผ๋กœ ๋„˜์–ด๊ฐ€์„ธ์š”!
HTML ๋ผˆ๋Œ€๋ฅผ ๋งŒ๋“ค์—ˆ์œผ๋‹ˆ, ์ด์ œ ์˜ˆ์˜๊ฒŒ ๊พธ๋ฐ€ ์ฐจ๋ก€์ž…๋‹ˆ๋‹ค ๐Ÿ’…

 

๋ฐ˜์‘ํ˜•