๐ [๊ฐ์ ๋ด์ฉ ๋ฐ ๊ฐ๋
์ ๋ฆฌ]
๋ชฉ์ฐจ
- ์น ๊ฐ๋ฐ ์ดํดํ๊ธฐ
- HTML ๊ธฐ์ด
- HTML ์ฌํ
- ๋ฐฐ์ด ๋ด์ฉ์ ๋ด ๊ฒ์ผ๋ก ๋ง๋๋ ๊ณผ์
- 2023.04.11 ๋ฆฌ๋ทฐ
[์น ๊ฐ๋ฐ ์ดํดํ๊ธฐ]
์น ๊ฐ๋ฐ์ ์ฌ์ฉํ๋ ์ธ์ด
- HTML: Structure ๊ตฌ์กฐ๋ฅผ ๋ด๋นํ๋ ๋งํฌ์
์ธ์ด
- CSS: Presentation ๋์์ธ ์์๋ฅผ ์๊ฐํํ๋ ์คํ์ผ ์ํธ ์ธ์ด
- JS: ๋จ์ํ ์น ํ์ด์ง๋ฅผ ํ๋ก๊ทธ๋๋ฐ์ ํตํด ์ ์ ์ ์ํธ์์ฉํ ์ ์๋๋ก ํ๋ ์ธ์ด
Visual Studio Code (VSC)
๋ง์ดํฌ๋ก์ํํธ์์ ๊ฐ๋ฐํ ์ฝ๋์๋ํฐ
VSC์ ์ ์ผ ํฐ ์ฅ์ ์ ํธ๋ฆฌํ extension์ ์ ๊ณตํ๋ค๋ ์ ์ธ๋ฐ VSC์ ๊ณต์ ํํ์ด์ง์ extension ์๊ฐ ํ์ด์ง๋ฅผ ์๋ ค์ฃผ์
จ๋ค.
Extension for Visual Studio Code
๋ค๋ฅธ ๊ฐ๋ฐ์ ๋ถ๋ค์ด ๋ง์ด ์ฐ๊ฑฐ๋ ์ต๊ทผ ์ถ๊ฐ๋ extension์ ์๊ฐํ๋ ํ์ด์ง๊ฐ ์์ผ๋ ๊ตฌ๊ฒฝํด๋ณด๋ ๊ฒ๋ ์ข์ ๊ฒ ๊ฐ๋ค.
SEB FE์์ ์๊ฐํด์ค extension์ "live server"์ด๋ค.
HTML ํ์ผ์ ์์ฑ/์์ ํ์ฌ ๋ธ๋ผ์ฐ์ ๋ก ํ์ธํ๊ณ ์ถ์ ๊ฒฝ์ฐ
- ๊ธฐ์กด
- HTML ํ์ผ์ ๋๋ธํด๋ฆญํ์ฌ ๋ธ๋ผ์ฐ์ ์ ๋์
- ์ ์ฅ -> ๋ธ๋ผ์ฐ์ ์๋ก๊ณ ์นจ
- "live server"
- HTML ํ์ผ์ ์๋ฒ๋ก ๋์
- ์ ์ฅ ํ ์๋ก๊ณ ์นจํ์ง ์์๋ ๋ณ๊ฒฝ์ฌํญ์ด ๋ฐ๋ก ์ ์ฉ๋จ
๊ทธ ์ธ์๋ ๋ง์ extension๋ค์ด ์๋๋ฐ, Git๊ณผ ๊ด๋ จ๋์ด ๋งค์ฐ ํธ๋ฆฌํ extension์ ์ ๋ฆฌํด์ค ๋ธ๋ก๊ทธ๊ฐ ์์ด ๊ธ์ ๋ฐ๋ผ ์ธํ
์ ์งํํด ๋ณด์๋ค.
tistory - Git ๊ด๋ฆฌํ๋๋ฐ ์ ์ฉํ VSCode ํ์ฅํฉ
[HTML ๊ธฐ์ด]
HTML ๊ธฐ๋ณธ ๊ตฌ์กฐ์ ๋ฌธ๋ฒ
- HTML์ ํ๊ทธ๋ค์ ์งํฉ
- Tag(<>)๋ก ๋ฌถ์ธ HTML์ ๊ธฐ๋ณธ ๊ตฌ์ฑ ์์
- HTML ํ์ผ ํ์ฅ์: html
- ์ฒซ html ํ์ผ์ index.html๋ก ๋ช
๋ช
ํ๋ ์ด์ : ๋ธ๋ผ์ฐ์ ๊ฐ html ํ์ผ์ ์ฐพ์ ๋ index.html ํ์ผ์ ์ฐ์ ์ ์ผ๋ก ์ฐพ๊ธฐ ๋๋ฌธ์ ์ ์ผ ๊ธฐ๋ณธ์ด ๋๋ ํ์ผ์ด๋ผ๊ณ ํ ์ ์๋ค.
- ๊ตฌ์กฐ: ํธ๋ฆฌ๊ตฌ์กฐ
- MDN ๋ฌธ์: HTML ํ๊ทธ, CSS, web api ๋ฑ์ ๊ดํด ์ ๋ฆฌ๋์ด ์๋ ๋ฌธ์
VSC์์ HTML ํ์ผ์ ์์ฑ ํ ๋น ํ์ผ์ HTML ๊ธฐ๋ณธ ๊ตฌ์กฐ๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ: !๋ฅผ ๋๋ฅด๊ณ tab์ ๋๋ฆ
์ฝ๋1. VSC์์ ! + tab์ ๋๋ฅด๋ฉด ์๋์ผ๋ก ์์ฑํด์ฃผ๋ HTML ๊ตฌ์กฐ
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
</body>
</html>
ํ๊ทธ ์ ์ญ ์์ฑ
<div
id="loginBox"
class="container login-box"
style="width: 500px;height: 500px;"
title="๋ก๊ทธ์ธ ์์ญ"
data-name="๋ก๊ทธ์ธ ์์ญ"
>
</div>
<script>
const loginBox = document.querySelector("#loginBox");
const loginBoxName = loginBox.dataset.name;
console.log(loginBoxName);
</script>
- title: ์์์ ์ ๋ณด๋ ์ค๋ช
์ ์ง์ (๋ง์ฐ์ค๋ฅผ ์ฌ๋ ค๋๊ณ ๊ธฐ๋ค๋ฆฌ๋ฉด title์ ์์ฑ๋ ์ค๋ช
์ด ํดํ์ฒ๋ผ ํ์๋จ)
- id: ํด๋น ํ๊ทธ์ ๋ํ ์ ๋ํฌํ ์ด๋ฆ
- ๋ ๋ค๋ฅธ ํ๊ทธ์ loginBox๋ผ๋ id๋ฅผ ๋ถ์ฌํ ๊ฒฝ์ฐ ์ํ๋๋๋ก ๋์ํ์ง ์์ ์๊ฐ ์๋ค.
- selector๋ก ํํํ ๋ #์ผ๋ก ํ๊ธฐ
- class: ๋์ด์ฐ๊ธฐ๋ฅผ ํตํด ์ฌ๋ฌ ๊ฐ์ง ์ด๋ฆ์ ์ค ์ ์์
- ๋ค๋ฅธ ํ๊ทธ์ ๋๊ฐ์ class๋ฅผ ์์ฑํ ์ ์๋ค.
- selector๋ก ํํํ ๋ .์ผ๋ก ํ๊ธฐ
- style: ์ฃผ๋ก css ํ์ผ์ ์์ฑํ ์คํ์ผ๋ณด๋ค ์ฐ์ ์ ์ผ๋ก ์ ์ฉ๋๋๋ก ํ๊ธฐ ์ํด style ํ๊ทธ๋ฅผ ์ฌ์ฉํ๋ค.
- <ํ๊ทธ data-์ด๋ฆ="๋ฐ์ดํฐ">: ์์์ ๋ฐ์ดํฐ๋ฅผ ์ง์
- ์ด๋ฆ์ ์์ฑ์๊ฐ ์์๋ก ์ง์ ๊ฐ๋ฅํ๋ฉฐ ์ฃผ๋ก js์์ ํด๋น ํ๊ทธ์ ๊ฐ์ ๊ฐ์ ธ์ค๊ธฐ ์ํด ์ฌ์ฉํ๋ค.
๊ทธ ์ธ ๊ฐ ํ๊ทธ์ ์ํ ์์ฑ
๊ฐ ํ๊ทธ ๋ณ๋ก ์์ฑ์ด ์๋๋ฐ ์ ์ ๋ฆฌ๋ ์ฌ์ดํธ๊ฐ ์์ด ๋งํฌ(TCP School)๋ฅผ ๊ฑธ์ด๋์๋ค.
์๋งจํฑ ์์
์ด์ ์ ์๋งจํฑ ๋งํฌ์
์ ๋ํด ์ ๋ฆฌํด๋์๋ ๋งํฌ์ด๋ค.
๐คฟ (0) ์๋งจํฑ(Semantic) ๋งํฌ์
์ด๋ ๋ฌด์์ผ๊น?
[HTML ์ฌํ]
์์ผ๋ก ๋ ๊น์ด ์์๋ณด๊ณ ์ถ์ ํ๊ทธ๋ค
- Doctype
<!DOCTYPE html>
- ๋ฌธ์์ HTML ๋ฒ์ ์ ์ง์
- DOCTYPE(DTD)์ ๋งํฌ์
์ธ์ด์์ ๋ฌธ์ ํ์์ ์ ์ํ๋ฉฐ, ์น ๋ธ๋ผ์ฐ์ ๊ฐ ์ด๋ค HTML ๋ฒ์ ์ ํด์ ๋ฐฉ์์ผ๋ก ํ์ด์ง๋ฅผ ์ดํดํ๋ฉด ๋๋์ง ์๋ ค์ฃผ๋ ์ฉ๋
- html ํ๊ทธ
- HTML ๋ฌธ์๊ฐ ์ด๋์์ ์์ํ๊ณ ์ด๋์์ ๋๋๋์ง ์๋ ค์ฃผ๋ ์ญํ
- head ํ๊ทธ
- ๋ฌธ์์ ์ ๋ณด๋ฅผ ๋ํ๋ด๋ ๋ฒ์ ์ฆ, ์นํ์ด์ง์ ์ ๋ชฉ, ์ค๋ช
, ์ฌ์ฉํ ํ์ผ ์์น ๋ฑ์ ๋ธ๋ผ์ฐ์ ์ ๋ณด์ด์ง ์๋ ์ ๋ณด๋ฅผ ์์ฑํ๋ ๋ฒ์
- body ํ๊ทธ
- ๋ฌธ์์ ๊ตฌ์กฐ๋ฅผ ๋ํ๋ด๋ ๋ฒ์ ์ฆ, ๋ธ๋ผ์ฐ์ ์ ๋ณด์ด๋ ๊ตฌ์กฐ๋ฅผ ์์ฑํ๋ ๋ฒ์
- form ํ๊ทธ
- video ํ๊ทธ
- track ํ๊ทธ
- canvas ํ๊ทธ
- iframe ํ๊ทธ
์์ผ๋ก ๋ ๊น์ด ์์๋ณด๊ณ ์ถ์ ๋ด์ฉ
- emmet
- HTML, XML, XSL ๋ฌธ์ ๋ฑ์ ํธ์งํ ๋ ๋น ๋ฅธ ์ฝ๋ฉ์ ์ํด ์ฌ์ฉํ๋ ํ๋ฌ๊ทธ์ธ (์๋์์ฑ์ ๋์)
- ์คํฌ๋ฆฐ๋ฆฌ๋
- How A Screen Reader User Accesses The Web: A Smashing Video
- ์ด๋ฒ ๋ธ๋ก๊ทธ ๊ธ์ ์ ๋ฆฌํ๋ฉฐ ์คํฌ๋ฆฐ๋ฆฌ๋ ๊ธฐ๋ฅ์ ์ฌ์ฉํด ๋ณด์๋ค.
- ์ปค์๊ฐ ์์นํด์๋ ๊ณณ์ด ์ฃผํฉ์ ๋ฐ์ค๋ก ํ์๋๋ฉฐ ํ
์คํธ ๋ด์ฉ๊ณผ ํ๊ทธ๋ฅผ ์ฝ์ด์ค๋ค.
- ์์) "์คํฌ๋ฆฐ๋ฆฌ๋ ์ฌ์ฉํด์ ํ
์คํธ ํด๋ณด๊ธฐ ์ ๋ชฉ1"
- aria-label์ด๋ img ํ๊ทธ์ alt, input ํ๊ทธ์ title ๋ฑ์ ์ ์ฌ์ฉํ์ฌ ๋ชจ๋๊ฐ ํธํ๊ฒ ์ฌ์ฉํ ์ ์๋ ์ฌ์ดํธ๋ฅผ ๋ง๋๋ ๊ฒ์ด ์ค์ํ๋ค๋ ์๊ฐ์ด ๋ค์๋ค.
- ๊ทธ๋ฆฌ๊ณ ์คํฌ๋ฆฐ๋ฆฌ๋์์ ํ๊ทธ ์ด๋ฆ์ ํตํด ์ ๋ณด๋ฅผ ์ ๋ฌํ๋ค๋ ์ ์ ์๋งจํฑ ๋งํฌ์
์ด ์ค์ํ ์ด์ ์ค ํ๋์ด๋ค.
[๋ฐฐ์ด ๋ด์ฉ์ ๋ด ๊ฒ์ผ๋ก ๋ง๋๋ ๊ณผ์ ]
HTML ํ๊ทธ์ ๊ฐ๋จํ CSS๋ฅผ ์ฌ์ฉํ์ฌ ์๊ธฐ์๊ฐ ํ์ด์ง๋ฅผ ๋ง๋ค์ด๋ณด์๋ค.
[2023.04.11 ๋ฆฌ๋ทฐ]
๊ฐ์ ์ฒซ๋ฒ์งธ ์๊ฐ์ผ๋ก HTML์ ๋ํ ๊ฐ์๋ฅผ ๋ค์๋ค. HTML์ ๊ณต๋ถํ๋ ค๊ณ ํ๋ฉด ํญ์ ์๋ก์ด ๋ฐฐ์ธ ๊ฒ๋ค์ด
์ด์ "ํ์ด์ง๋ฅผ ๊ฐ์ ธ์ค๋ ์์ฒญ์ POST๋ก ํ๋ค๋ฉด ์ด๋ป๊ฒ ํ ๊ฒ ๊ฐ์?"๋ผ๋ ์ง๋ฌธ์ ๋ค์๋ค.
๋ฌผ๋ก POST๋ก ํ์ด์ง๋ฅผ ๊ฐ์ ธ์ค๋ ๊ฒ์ restful ํ์ง์์ง๋ง, ์๊ตฌ์ฌํญ์ด ๋ค์ด์์ ๋๋ ํด์ผ๋ง ํ๋ค.
๋์ ํ ๋ฐฉ๋ฒ์ด ์๊ฐ๋์ง ์์ ๋ฐฉ๋ฒ์ ๋ฌผ์ด๋ณด๋ "form ํ๊ทธ๋ก ํด๊ฒฐ"ํ๋ค๋ ๋ต๋ณ์ ๋ค์๋ค.
div, p, ol, ul ๋ฑ ์์ฃผ ์ฐ๋ ํ๊ทธ๋ค์ ๋น ๋ฅด๊ฒ ๋ง๋ค์ด๊ฐ์ง๋ง
์์ฃผ ์ฐ๋ ํ๊ทธ๋ค๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์ค์ํ ํ๊ทธ๋ค์ธ form, video ์ ๊ฐ์ ํ๊ทธ๋ ์ ๋ชจ๋ฅด๊ณ ์๋ค๋ ์๊ฐ์ด ๋ค์ด ์กฐ๊ธ ๋ ์์๋ด์ผ๊ฒ ๋ค๊ณ ์๊ฐํ๋ค.