๊ด€๋ฆฌ ๋ฉ”๋‰ด

๋ฆฌ์ œ

[Web Front 1] ์›น์„ ๊ตฌ์„ฑํ•˜๋Š” ๊ธฐ๋ณธ๊ตฌ์กฐ HTML ๋ณธ๋ฌธ

๊ฐœ๋ฐœ์ž ํ˜ธ์†Œ์ธ/Front

[Web Front 1] ์›น์„ ๊ตฌ์„ฑํ•˜๋Š” ๊ธฐ๋ณธ๊ตฌ์กฐ HTML

๋ฆฌ์ œ๐Ÿซง 2026. 6. 18. 16:40

 

visual studio code์—์„œ ํ”„๋กœ๊ทธ๋žจ์„ ์„ค์น˜ํ•˜๊ธฐ 

 

 

 

์ธํ„ฐ๋„ท๊ณผ ์›น์˜ ์ฐจ์ด 

๊ตฌ๋ถ„ ์ธํ„ฐ๋„ท (Internet) ์›น (World Wide Web)
์ •์˜ ์ „ ์„ธ๊ณ„๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ๋„คํŠธ์›Œํฌ๋ง ์ธํ„ฐ๋„ท ๊ธฐ๋ฐ˜์˜ ์ •๋ณด ๊ณต์œ  ์„œ๋น„์Šค
์—ญํ•  ๋ฐ์ดํ„ฐ ์ „๋‹ฌ์„ ์œ„ํ•œ ํ•˜๋“œ์›จ์–ด์  ๊ธฐ๋ฐ˜ ์ •๋ณด๋ฅผ ์‹œ๊ฐ์ ์œผ๋กœ ๋ณด์—ฌ์ฃผ๋Š” ์†Œํ”„ํŠธ์›จ์–ด์  ์ˆ˜๋‹จ
๊ตฌ์„ฑ ์š”์†Œ ์ผ€์ด๋ธ”, ๋ผ์šฐํ„ฐ, ์„œ๋ฒ„, IP ์ฃผ์†Œ HTML, CSS, HTTP ํ”„๋กœํ† ์ฝœ, ๋ธŒ๋ผ์šฐ์ €
๊ด€์  ๊ฑฐ๋Œ€ํ•œ ์ธํ”„๋ผ(๊ธธ) ๊ทธ ์œ„์—์„œ ์ด์šฉํ•˜๋Š” ์„œ๋น„์Šค(ํƒ๋ฐฐ)

 

1. ์›น์˜ ์ฒ˜๋ฆฌ ๊ณผ์ •: ๋ฐ์ดํ„ฐ์˜ ์™•๋ณต

์›น์€ ์š”์ฒญ๊ณผ ์‘๋‹ต์ด๋ผ๋Š” ๋‹จ์ˆœํ•˜์ง€๋งŒ ๊ฐ•๋ ฅํ•œ ๊ทœ์น™์œผ๋กœ ๋Œ์•„๊ฐ„๋‹ค.

  1. Request (์š”์ฒญ): ์‚ฌ์šฉ์ž๊ฐ€ ๋ธŒ๋ผ์šฐ์ € ์ฃผ์†Œ์ฐฝ์— ์ฃผ์†Œ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด, ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์„œ๋ฒ„์—๊ฒŒ "์ด ์ฃผ์†Œ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๋ผ" ๋ช…๋ น
  2. Response (์‘๋‹ต): ์„œ๋ฒ„๋Š” ์š”์ฒญ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์•„์„œ, ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” HTML ๋ฌธ์„œ ํ˜•ํƒœ๋กœ ๋‹ค์‹œ ๋ณด๋‚ด์คŒ.
  3. Rendering (ํ•ด์„ ๋ฐ ์ถœ๋ ฅ): ๋ธŒ๋ผ์šฐ์ €๋Š” ๋ฐ›์€ HTML ์ฝ”๋“œ๋ฅผ ํ•ด์„ํ•ด์„œ ์šฐ๋ฆฌ๊ฐ€ ๋ˆˆ์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ๋Š” ํ™”๋ฉด(์›น์‚ฌ์ดํŠธ)์œผ๋กœ ๊ทธ๋ ค๋ƒ„.

2. ์›น์˜ ํ•ต์‹ฌ ํŠน์ง•

์›น์€ ๋‹จ์ˆœํžˆ ๊ธ€์„ ์ฝ๋Š” ๊ณณ์„ ๋„˜์–ด, ๋ณตํ•ฉ์ ์ธ ๋ฐ์ดํ„ฐ ๊ตํ™˜ ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•œ๋‹ค.

  • HTTP ๊ธฐ๋ฐ˜: ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ๋•Œ ์„œ๋กœ ์•ฝ์†๋œ ํ†ต์‹  ๊ทœ๊ฒฉ์ธ HTTP(HyperText Transfer Protocol)๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
  • ๋ฉ€ํ‹ฐ๋ฏธ๋””์–ด ํ†ตํ•ฉ: ํ…์ŠคํŠธ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๊ทธ๋ž˜ํ”ฝ, ์˜ค๋””์˜ค, ๋น„๋””์˜ค ๋“ฑ ๋‹ค์–‘ํ•œ ๋งค์ฒด๋ฅผ ํ•˜๋‚˜์˜ ๋ฌธ์„œ ์•ˆ์—์„œ ํ†ตํ•ฉํ•˜์—ฌ ์ œ๊ณตํ•œ๋‹ค.
  • ๋‹ค์–‘ํ•œ ํ™˜๊ฒฝ ์ ์‘: ์‚ฌ์šฉ์ž์˜ ๊ธฐ๊ธฐ(์Šค๋งˆํŠธํฐ, ํƒœ๋ธ”๋ฆฟ, PC) ํ™˜๊ฒฝ์— ๋งž์ถฐ ํ™”๋ฉด์ด ๋ณ€ํ•˜๋Š” ๋ฐ˜์‘ํ˜•(Responsive) ์„ค๊ณ„๊ฐ€ ๊ธฐ๋ณธ์ด๋‹ค.

3. ์›น์˜ 3์š”์†Œ: HTML์ด ํ•˜๋Š” ์ผ

์š”์†Œ ์—ญํ•  ๋น„์œ 
HTML ๊ตฌ์กฐ(Structure) ๊ฑด๋ฌผ์˜ ์ฒ ๊ทผ๊ณผ ๋ผˆ๋Œ€
CSS ๋””์ž์ธ(Style) ๋ฒฝ์ง€, ์ธํ…Œ๋ฆฌ์–ด, ํŽ˜์ธํŠธ
JS ๊ธฐ๋Šฅ(Behavior) ์ „๊ธฐ ๋ฐฐ์„ , ์ž๋™๋ฌธ, ์—˜๋ฆฌ๋ฒ ์ดํ„ฐ

 

HTML์€ ์›น์˜ ๋ผˆ๋Œ€

๋ธŒ๋ผ์šฐ์ €์—๊ฒŒ "์ด๊ฒƒ์€ ์ œ๋ชฉ(Heading)์ด๋‹ค", "์ด๊ฒƒ์€ ๋ณธ๋ฌธ(Paragraph)์ด๋‹ค", "์—ฌ๊ธฐ์— ์ด๋ฏธ์ง€๋ฅผ ๋„ฃ์–ด๋ผ"๋ผ๊ณ  ์•Œ๋ ค์ฃผ๋Š” ์ง€๋„์™€ ๊ฐ™๋‹ค.

 

ํ•˜์ดํผ๋งํฌ ๊ด€๋ จ ํƒœ๊ทธ (a)

<a> ํƒœ๊ทธ๋Š” ํด๋ฆญํ•˜๋ฉด ์—ฐ๊ฒฐ๋œ ๊ณณ์œผ๋กœ ์ด๋™์‹œํ‚ค๋Š”, ์›น์˜ ๊ฐ€์žฅ ํ•ต์‹ฌ์ ์ธ ๊ธฐ๋Šฅ

href ์ด๋™ํ•  ๋งํฌ ๊ฒฝ๋กœ href="<https://naver.com>"
target ์–ด๋А ํƒญ์—์„œ ์—ด์ง€ ์ง€์ • _self(๊ธฐ๋ณธ) / _blank(์ƒˆ ํƒญ)

 

<!-- ๋‹ค๋ฅธ ํŽ˜์ด์ง€๋กœ ์ด๋™ -->
<a href="./01_๊ธ€์ž ๊ด€๋ จํƒœ๊ทธ. html"> ๊ธ€์ž ๊ด€๋ จ ํƒœ๊ทธ๋กœ ์ด๋™ </a>
<!-- ์™ธ๋ถ€ ์‚ฌ์ดํŠธ๋ฅผ ์ƒˆ ํƒญ์—์„œ ์—ด๊ธฐ -->
<a href="https://www.naver.com" target="_blank">๋„ค์ด๋ฒ„ (์ƒˆ ํƒญ)</a>

<!-- ์ด๋ฏธ์ง€๋ฅผ ํด๋ฆญํ•˜๋ฉด ๋งํฌ๋กœ ์ด๋™ (a ์•ˆ์— img ์ค‘์ฒฉ) -->
<a href="https://www.naver.com">
<img src="./images/sample.jpg" alt="๋„ค์ด๋ฒ„๋กœ ์ด๋™">
</a>

 

๐Ÿ’ก target ์†์„ฑ

  • _self : ํ˜„์žฌ ํƒญ์—์„œ ์ด๋™ (๊ธฐ๋ณธ๊ฐ’)
  • _blank : ์ƒˆ ํƒญ์—์„œ ์—ด๊ธฐ (์™ธ๋ถ€ ์‚ฌ์ดํŠธ๋กœ ๋ณด๋‚ผ ๋•Œ ์ž์ฃผ ์‚ฌ์šฉ)

ํ•˜์ดํผ๋งํฌ: ํŽ˜์ด์ง€ ๋‚ด ์ด๋™ (id ํ™œ์šฉ)

์›น ํŽ˜์ด์ง€๊ฐ€ ๊ธธ์–ด์งˆ ๋•Œ, ํŠน์ • ์œ„์น˜๋กœ ์ฆ‰์‹œ ์ด๋™ํ•˜๋Š” ๊ธฐ๋Šฅ. ํ•ต์‹ฌ์€ '์‹๋ณ„์ž(ID)'๋ฅผ ์ด์šฉํ•œ ํ‘œ์‹์ด๋‹ค.

  • ์›๋ฆฌ:
    1. ๋ชฉ์ ์ง€์— id="์ด๋ฆ„" ์†์„ฑ์„ ๋ถ™์—ฌ ๊ณ ์œ ํ•œ ์ฃผ์†Œ๋ฅผ ๋งŒ๋“ ๋‹ค.
    2. ์ด๋™ ๋ฒ„ํŠผ์— href="#์ด๋ฆ„"์„ ์„ค์ •ํ•˜์—ฌ ๊ทธ ์ฃผ์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค.
  • ์ค‘์š” ๊ทœ์น™: id๋Š” ํ•œ ํŽ˜์ด์ง€ ๋‚ด์—์„œ ์œ ์ผ(Unique) ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฃผ๋ฏผ๋“ฑ๋ก๋ฒˆํ˜ธ์ฒ˜๋Ÿผ ํ•œ ๋ช…์—๊ฒŒ๋งŒ ๋ถ€์—ฌ๋˜๋Š” ์‹๋ณ„์ž
<!-- ๋ชฉ์ ์ง€ : id ๋ถ€์—ฌ -->
<h3 id="main">๋งจ ์œ„ ์˜์—ญ</h3>
<!-- ๋งํฌ : #์•„์ด๋”” ๋กœ ์ด๋™ -->
<a href="#main">๋งจ ์œ„๋กœ ์ด๋™</a>

 

๐Ÿ’ก ๊ธด ๋ฌธ์„œ์—์„œ "๋ชฉ์ฐจ → ๋ณธ๋ฌธ", "๋งจ ์•„๋ž˜ → ๋งจ ์œ„๋กœ ๊ฐ€๊ธฐ" ๊ฐ™์€ ์ด๋™์— ํ™œ์šฉํ•œ๋‹ค.

href="#์•„์ด๋””"์ฒ˜๋Ÿผ ์•ž์— #์„ ๋ถ™์ด๋Š” ๊ฒƒ์ด ์ค‘์š”

2. ์ž…๋ ฅ ์–‘์‹: input / label / button

์‚ฌ์šฉ์ž์™€ ์‹œ์Šคํ…œ์ด ๋Œ€ํ™”ํ•˜๋Š” ํ†ต๋กœ

โ‘  ํ•ต์‹ฌ ์š”์†Œ ์ •๋ฆฌ

ํƒœ๊ทธ ์—ญํ• 
<input> ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅ๋ฐ›๋Š” ์‹ค์งˆ์ ์ธ ์นธ (ํ…์ŠคํŠธ, ๋น„๋ฐ€๋ฒˆํ˜ธ, ๋ฒ„ํŠผ ๋“ฑ)
<label> ์ž…๋ ฅ์นธ์— ์ด๋ฆ„์„ ๋ถ™์ด๋Š” ์„ค๋ช…๋ฌธ (UX ํŽธ์˜์„ฑ ํ–ฅ์ƒ)
<button> ์‚ฌ์šฉ์ž๊ฐ€ ์˜๋„์ ์ธ ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ๋ˆ„๋ฅด๋Š” ์ œ์–ด ์žฅ์น˜
์•„์ด๋”” : <input type="text"> <br>
๋น„๋ฐ€๋ฒˆํ˜ธ : <input type="password"> <br>

<!-- label๋กœ input์„ ๊ฐ์‹ธ๋ฉด ๊ธ€์ž๋ฅผ ๋ˆŒ๋Ÿฌ๋„ ์ž…๋ ฅ์นธ์ด ์„ ํƒ๋จ -->
<label>
  <input type="radio" name="gender" checked> ๋‚จ 
 </label>
<label>
       <input type="radio" name="gender"> ์—ฌ
 </label>

<input type="button" value="ํšŒ์›๊ฐ€์ž…">
<button>์ทจ์†Œ</button>

โ‘ก label ์‚ฌ์šฉ์˜ ์ด์œ 

<label>๋กœ <input>์„ ๊ฐ์‹ธ๋ฉด,

์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅ์นธ์˜ ์ž‘์€ ์‚ฌ๊ฐํ˜•์„ ์ •ํ™•ํžˆ ํด๋ฆญํ•˜์ง€ ์•Š์•„๋„ ๊ธ€์ž(๋ผ๋ฒจ)๋งŒ ํด๋ฆญํ•ด๋„ ์ž…๋ ฅ์นธ์ด ํ™œ์„ฑํ™”๋จ.

 ๋ชจ๋ฐ”์ผ ํ™˜๊ฒฝ์—์„œ ๋งค์šฐ ์ค‘์š”ํ•œ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜(UX) ์š”์†Œ 

label๋กœ ์„ค๋ช…์„ ์—ฐ๊ฒฐํ•˜๋ฉด ๊ธ€์ž๋ฅผ ํด๋ฆญํ•ด๋„ ํ•ด๋‹น ์ž…๋ ฅ์นธ์ด ์„ ํƒ๋˜์–ด ์‚ฌ์šฉ์„ฑ·์ ‘๊ทผ์„ฑ์ด ์ข‹์•„์ง„๋‹ค.

โ‘ข input vs button

  • <input type="button">: ๊ณผ๊ฑฐ๋ถ€ํ„ฐ ์‚ฌ์šฉ๋œ ๋ฐฉ์‹. value ์†์„ฑ์œผ๋กœ ๋ฒ„ํŠผ์˜ ํ…์ŠคํŠธ๋ฅผ ์ •ํ•จ.
  • <button>: ์ตœ์‹  ๋ฐฉ์‹์ด๋ฉฐ, ํƒœ๊ทธ ์‚ฌ์ด์— ํ…์ŠคํŠธ๋‚˜ ์•„์ด์ฝ˜์„ ์ž์œ ๋กญ๊ฒŒ ๋„ฃ์„ ์ˆ˜ ์žˆ์–ด ๋””์ž์ธ์ ์œผ๋กœ ํ›จ์”ฌ ์œ ์—ฐํ•œ๋‹ค.