HTML์ด๋ ๋ฌด์์ธ๊ฐ?
HTML์ HyperText Markup Language์ ์ฝ์์ ๋๋ค. ์น ํ์ด์ง์ ๊ตฌ์กฐ์ ๋ด์ฉ์ ์ ์ํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๊ธฐ๋ณธ์ ์ธ ๋งํฌ์ ์ธ์ด์ ๋๋ค.
HTML5์ ์ฃผ์ ํน์ง์ ๋ฌด์์ธ๊ฐ?
๊ฐ์ฅ ๋จผ์ , ์๋งจํฑ ํ๊ทธ๊ฐ ๋์
๋์์ต๋๋ค. ๊ธฐ์กด์๋ <div>
ํ๊ทธ๋ก ๊ตฌ์กฐ๋ฅผ ์ก๋ ๊ฒฝ์ฐ๊ฐ ๋ง์๋๋ฐ, HTML5์์๋ <header>
, <footer>
, <nav>
, <article>
, <section>
๊ณผ ๊ฐ์ด ์๋ฏธ๋ฅผ ๋ช
ํํ๊ฒ ๋ํ๋ด๋ ํ๊ทธ๋ค์ด ์ถ๊ฐ๋์ด์ ์น ํ์ด์ง์ ๊ตฌ์กฐ๋ฅผ ๋ ๋ช
ํํ๊ฒ ์ดํดํ ์ ์๊ฒ ๋์๊ณ , ๊ฒ์ ์์ง ์ต์ ํ(SEO)์๋ ๋์์ด ๋ฉ๋๋ค.
๋ํ ์น ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ์ํ ๊ธฐ๋ฅ๋ค์ด ์ถ๊ฐ๋์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์ฌ์ฉ์์ ์ปดํจํฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์๋ ๋ก์ปฌ ์คํ ๋ฆฌ์ง(Local Storage)๋ ์ธ์ ์คํ ๋ฆฌ์ง(Session Storage) ๊ธฐ๋ฅ์ด ์๊ฒผ๊ณ , ์น ์์ผ(WebSockets)์ ํตํด ์๋ฒ์ ์ค์๊ฐ์ผ๋ก ์๋ฐฉํฅ ํต์ ์ ํ๋ ๊ฒ๋ ๊ฐ๋ฅํด์ก์ต๋๋ค.
์๋งจํฑ ๋งํฌ์ ์ด๋ ๋ฌด์์ธ๊ฐ์?
์ฃผ์ด์ง ์ฉ๋์ ๋ง๋ ํ๊ทธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์
๋๋ค. ์๋ฅผ ๋ค์ด <div>
ํ๊ทธ๋ง์ ๋จ๋ฐํ๋ ๊ฒ์ด ์๋๋ผ, ์์น์ ์ฉ๋์ ๋ง๊ฒ <header>
, <nav>
, <section>
ํ๊ทธ ๋ฑ์ ์ฌ์ฉํ๋ ๊ฒ์ด๊ณ , ์ด๋ฅผ ํตํด ์ฝ๋์ ๊ฐ๋
์ฑ, ์น ์ ๊ทผ์ฑ, SEO๊ฐ ํฅ์๋ฉ๋๋ค.
script ํ๊ทธ์์ ์ฌ์ฉํ๋ async์ defer์ ์ฐจ์ด์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
๊ธฐ๋ณธ์ ์ผ๋ก ๋ธ๋ผ์ฐ์ ๋ HTML์ ์์์ ์๋๋ก ์ฝ์ด ๋ด๋ ค๊ฐ๋ค๊ฐ <script>
ํ๊ทธ๋ฅผ ๋ง๋๋ฉด, HTML ํ์ฑ์ ๋ฉ์ถ๊ณ ์คํฌ๋ฆฝํธ ํ์ผ์ ๋ค์ด๋ก๋ํด์ ์คํํฉ๋๋ค. ์คํฌ๋ฆฝํธ ์คํ์ด ๋๋์ผ ๋ค์ HTML ํ์ฑ์ ์ฌ๊ฐํ๋๋ฐ์, ์ด๋ฌ๋ฉด ์คํฌ๋ฆฝํธ ํ์ผ์ด ํฌ๊ฑฐ๋ ๋คํธ์ํฌ๊ฐ ๋๋ฆด ๊ฒฝ์ฐ ํ์ด์ง ๋ก๋ฉ์ด ๋ฉ์ถฐ ๋ณด์ด๋ ๋ฌธ์ ๊ฐ ์๊ธธ ์ ์์ต๋๋ค. async์ defer๋ ์ด๋ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋์์ต๋๋ค.
async ์์ฑ์ ์คํฌ๋ฆฝํธ ํ์ผ์ ๋ค์ด๋ก๋ํ๋ ๋์ HTML ํ์ฑ์ ๋ฉ์ถ์ง ์๊ณ ๋น๋๊ธฐ์ ์ผ๋ก ์งํํฉ๋๋ค. ๋ค์ด๋ก๋๊ฐ ์๋ฃ๋๋ฉด ์ฆ์ HTML ํ์ฑ์ ๋ฉ์ถ๊ณ ์คํฌ๋ฆฝํธ๋ฅผ ์คํํฉ๋๋ค. ์คํฌ๋ฆฝํธ ์คํ ํ ๋ค์ HTML ํ์ฑ์ ์ด์ด๊ฐ๋๋ค. ์ค์ํ ์ ์, ์ฌ๋ฌ ๊ฐ์ async ์คํฌ๋ฆฝํธ๊ฐ ์์ ๊ฒฝ์ฐ ๋ค์ด๋ก๋๊ฐ ๋จผ์ ์๋ฃ๋๋ ์์๋๋ก ์คํ๋๊ธฐ ๋๋ฌธ์, ์คํฌ๋ฆฝํธ ์คํ ์์๊ฐ ๋ณด์ฅ๋์ง ์์ต๋๋ค. ๋ฐ๋ผ์ ๋ค๋ฅธ ์คํฌ๋ฆฝํธ๋ DOM ๊ตฌ์กฐ์ ์์กด์ฑ์ด ์๋ ๋ ๋ฆฝ์ ์ธ ์คํฌ๋ฆฝํธ(์: ๊ด๊ณ ์คํฌ๋ฆฝํธ, ๋ถ์ ์คํฌ๋ฆฝํธ)์ ์ฃผ๋ก ์ฌ์ฉํฉ๋๋ค.
defer ์์ฑ๋ async์ฒ๋ผ ์คํฌ๋ฆฝํธ ํ์ผ์ ๋ค์ด๋ก๋ํ๋ ๋์ HTML ํ์ฑ์ ๋ฉ์ถ์ง ์๊ณ ๋น๋๊ธฐ์ ์ผ๋ก ์งํํฉ๋๋ค. ํ์ง๋ง async์ ๋ฌ๋ฆฌ ์คํฌ๋ฆฝํธ ๋ค์ด๋ก๋๊ฐ ์๋ฃ๋์ด๋ ์ฆ์ ์คํํ์ง ์๊ณ , HTML ํ์ฑ์ด ๋ชจ๋ ๋๋ ํ์ ์คํฌ๋ฆฝํธ๋ฅผ ์คํํฉ๋๋ค. ์ฌ๋ฌ ๊ฐ์ defer ์คํฌ๋ฆฝํธ๊ฐ ์๋ค๋ฉด HTML์ ๋ช ์๋ ์์๋๋ก ์คํ๋๋ ๊ฒ์ด ๋ณด์ฅ๋ฉ๋๋ค. ๋ฐ๋ผ์ DOM ์์์ ์ ๊ทผํ๊ฑฐ๋ ์คํฌ๋ฆฝํธ ๊ฐ์ ์คํ ์์๊ฐ ์ค์ํ ๊ฒฝ์ฐ์ ์ฃผ๋ก ์ฌ์ฉํฉ๋๋ค.
HTML ๋ ๋๋ง ๋์ค JavaScript๊ฐ ์คํ๋๋ฉด ๋ ๋๋ง์ด ๋ฉ์ถ๋ ์ด์ ๊ฐ ๋ญ๊ฐ์?
๋ธ๋ผ์ฐ์ ์ ๋ฉ์ธ ์ค๋ ๋๊ฐ HTML ํ์ฑ/๋ ๋๋ง๊ณผ ์๋ฐ์คํฌ๋ฆฝํธ ์คํ์ ํจ๊ป ์ฒ๋ฆฌํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
๋ธ๋ผ์ฐ์ ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ๋์ ๋ฉ์ธ ์ค๋ ๋์์ ์์ฐจ์ ์ผ๋ก ์์ ์ ์ฒ๋ฆฌํ๋๋ฐ์.
HTML ๋ฌธ์๋ฅผ ์์์๋ถํฐ ์ฝ์ด ๋ด๋ ค๊ฐ๋ฉฐ ํ์ฑํ๊ณ ํ๋ฉด์ ๊ทธ๋ฆฌ๋ ๋ ๋๋ง ์์
์ ํ๋ค๊ฐ <script>
ํ๊ทธ๋ฅผ ๋ง๋๋ฉด, ๊ทธ ์คํฌ๋ฆฝํธ๊ฐ ํ์ฌ๊น์ง ํ์ฑ๋ DOM ๊ตฌ์กฐ๋ฅผ ๋ณ๊ฒฝํ ์๋ ์๊ธฐ ๋๋ฌธ์ ์ผ๋จ HTML ํ์ฑ์ ๋ฉ์ถฅ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์๊ฒ ์ ์ด๊ถ์ ๋๊ฒจ์ ์คํฌ๋ฆฝํธ๋ฅผ ๋ค์ด๋ก๋ํ๊ณ ์คํํ๊ฒ ๋ฉ๋๋ค. ์ด ์คํฌ๋ฆฝํธ ์คํ ์ญ์ ๋ฉ์ธ ์ค๋ ๋์์ ์ด๋ฃจ์ด์ง๊ธฐ ๋๋ฌธ์, ์คํฌ๋ฆฝํธ๊ฐ ์คํ๋๋ ๋์์๋ ๋ฉ์ท๋ HTML ํ์ฑ๋ฟ๋ง ์๋๋ผ ๋ค๋ฅธ ๋ ๋๋ง ๊ด๋ จ ์์ (์: ๋ ์ด์์ ๊ณ์ฐ, ํ์ธํ )๋ ์งํ๋ ์ ์์ต๋๋ค.
์ฆ, ์๋ฐ์คํฌ๋ฆฝํธ ์คํ๊ณผ HTML ๋ ๋๋ง์ด ๊ฐ์ ์์ ๋ผ์ธ(๋ฉ์ธ ์ค๋ ๋)์ ๊ณต์ ํ๊ธฐ ๋๋ฌธ์, ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ์คํ๋๋ ๋์์๋ ๋ ๋๋ง ์์ ์ด ๋ฉ์ถ๊ฒ ๋๋ ๊ฒ์ ๋๋ค.
์ด๋ฐ ์ด์ ๋ก ์ฉ๋์ด ํฐ ์คํฌ๋ฆฝํธ๋ ์คํ ์๊ฐ์ด ๊ธด ์คํฌ๋ฆฝํธ๊ฐ HTML ์ค๊ฐ์ ์์นํ๋ฉด ํ์ด์ง ๋ก๋ฉ์ด ๋๋ ค์ง๋ ํ์์ด ๋ฐ์ํ ์ ์๊ณ , ์ด๋ฅผ ์ํํ๊ธฐ ์ํด ์์ ๋ง์๋๋ฆฐ async๋ defer ๊ฐ์ ์์ฑ์ ์ฌ์ฉํ๊ฑฐ๋ ์คํฌ๋ฆฝํธ๋ฅผ <body>
ํ๊ทธ ๋งจ ๋์ ๋๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํฉ๋๋ค.
์ง๋ฌธ์ ์ : ํ์ฐฝํ
๋ธ๋ผ์ฐ์ ๋์ ์ค ์ค๋จ๋๋ ๊ณผ์
- ๋ธ๋ผ์ฐ์ ๋ HTML์ ์์์ ์๋๋ก ์์ฐจ์ ์ผ๋ก ํ์ฑํ๋ฉฐ DOM์ ๊ตฌ์ฑ
- JavaScript ์ฝ๋(ํนํ
<script>
ํ๊ทธ)๋ฅผ ๋ง๋๋ฉด ์คํ์ ์ํด HTML ํ์ฑ์ ์ค๋จ - JavaScript๊ฐ ์คํ๋๋ ๋์ ๋ธ๋ผ์ฐ์ ๋ ๋ค์ HTML ์์๋ฅผ ํ์ฑํ๊ฑฐ๋ ๋ ๋๋งํ์ง ์์
- JavaScript ์คํ์ด ๋๋์ผ HTML ํ์ฑ์ด ๋ค์ ์งํ๋จ
DOCTYPE ์ด๋ ๋ฌด์์ธ๊ฐ์?
HTML ๋ฌธ์์ ๊ฐ์ฅ ์ฒซ ์ค์ ์์นํด์, ์ด ๋ฌธ์๊ฐ ์ด๋ค ๋ฒ์ ์ HTML ํ์ค์ ๋ฐ๋ผ ์์ฑ๋์๋์ง๋ฅผ ์น ๋ธ๋ผ์ฐ์ ์๊ฒ ์๋ ค์ฃผ๋ ์ญํ ์ ํฉ๋๋ค. ๋ธ๋ผ์ฐ์ ๋ ์ด DOCTYPE ์ ์ธ์ ๋ณด๊ณ ํด๋น ๋ฌธ์๊ฐ HTML5์ธ์ง, ์๋๋ฉด ์ด์ ๋ฒ์ ์ HTML์ด๋ XHTML์ธ์ง๋ฅผ ํ์ ํ๊ณ , ๊ทธ์ ๋ง๋ ๋ฐฉ์์ผ๋ก ๋ฌธ์๋ฅผ ํด์ํ๊ณ ๋ ๋๋งํฉ๋๋ค.
๋ฉํ ํ๊ทธ(Meta Tag)๋?
๋ฉํ ํ๊ทธ๋ HTML ๋ฌธ์ ์์ฒด์ ๋ํ ์ถ๊ฐ์ ์ธ ์ ๋ณด, ์ฆ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ํ๊ทธ์ ๋๋ค. ์ด ์ ๋ณด๋ ์น ํ์ด์ง ํ๋ฉด์ ์ง์ ์ ์ผ๋ก ๋ณด์ด์ง ์์ง๋ง, ๋ธ๋ผ์ฐ์ ๋ ๊ฒ์ ์์ง ๋ก๋ด์๊ฒ ํด๋น ๋ฌธ์์ ๋ํ ์ค์ํ ์ ๋ณด๋ฅผ ์๋ ค์ฃผ๋ ์ญํ ์ ํฉ๋๋ค.
์ฃผ๋ก <head>
ํ๊ทธ ์์ ์์นํ๋๋ฐ์, ์๋ฅผ ๋ค์ด์ ์ด๋ค ๋ฌธ์ ์ธ์ฝ๋ฉ ๋ฐฉ์์ ์ฌ์ฉํ๋์ง(charset="UTF-8"), ๊ฒ์ ์์ง์ ์ํด ํ์ด์ง์ ์ค๋ช
(name="description")์ด๋ ํค์๋(name="keywords")๋ ๋ฌด์์ธ์ง, ๋๋ ๋ชจ๋ฐ์ผ ๊ธฐ๊ธฐ์์ ํ๋ฉด์ ์ด๋ป๊ฒ ๋ณด์ฌ์ค์ง ๋ทฐํฌํธ(name="viewport") ์ค์ ๊ฐ์ ๊ฒ๋ค์ ๋ฉํ ํ๊ทธ๋ฅผ ํตํด ์ง์ ํ ์ ์์ต๋๋ค.
HTML์์์ attributes์ properties์ ์ฐจ์ด์ ์ ์ค๋ช ํด ์ฃผ์ธ์.
HTML ํ๊ทธ ์์ ์ง์ ์์ฑํ๋ ๊ฒ๋ค, ์๋ฅผ ๋ค์ด <input type="text" value="์ด๊ธฐ๊ฐ" id="myInput">
์์ type, value, id ๊ฐ์ ๊ฒ๋ค์ด ๋ฐ๋ก ์ดํธ๋ฆฌ๋ทฐํธ์
๋๋ค. ์ด๊ฒ๋ค์ HTML ์์ค ์ฝ๋์ ์กด์ฌํ๋ ์ ์ ์ธ ๊ฐ๋ค์ด๊ณ , ๋ณดํต ๋ฌธ์์ด ํํ๋ก ๋์ด ์์ต๋๋ค. ์น ํ์ด์ง์ ์ด๊ธฐ ์ํ๋ฅผ ์ ์ํ๋ ๋ฐ ์ฌ์ฉ๋์ฃ .
๋ฐ๋ฉด์, ํ๋กํผํฐ๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ํตํด ์ ๊ทผํ๋ DOM ๋ ธ๋์ ์์ฑ์ ๋๋ค. ์๋ฅผ ๋ค์ด, document.getElementById('myInput') ๋ก ๊ฐ์ ธ์จ ์์ ๊ฐ์ฒด์์ element.value ๋ element.id ์ฒ๋ผ ์ ๊ทผํ๋ ๊ฐ๋ค์ด ํ๋กํผํฐ์ ๋๋ค. ์ด ํ๋กํผํฐ๋ค์ ํด๋น ์์์ ํ์ฌ ์ํ๋ฅผ ๋ํ๋ด๊ณ , ๋ฌธ์์ด๋ฟ๋ง ์๋๋ผ ๋ถ๋ฆฌ์ธ(boolean), ์ซ์, ๊ฐ์ฒด ๋ฑ ๋ค์ํ ํ์ ์ ๊ฐ์ง ์ ์์ต๋๋ค.
์์ฝํ์๋ฉด, ์ดํธ๋ฆฌ๋ทฐํธ๋ HTML ๋งํฌ์ ์ ์ ์๋ ๊ฒ์ด๊ณ , ํ๋กํผํฐ๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ๋ค๋ฃจ๋ DOM ๊ฐ์ฒด์ ์ค์๊ฐ ์์ฑ์ ๋๋ค.
HTML๊ณผ XML์ ์ฐจ์ด
HTML์ ์น ํ์ด์ง์ ๋ด์ฉ์ ๋ณด์ฌ์ฃผ๊ณ ๊ทธ ๊ตฌ์กฐ๋ฅผ ๋ง๋๋ ๋ฐ ์ด์ ์ ๋ง์ถ ์ธ์ด์
๋๋ค. ์ฆ, ์น ๋ธ๋ผ์ฐ์ ๊ฐ ์ด๋ป๊ฒ ํ๋ฉด์ ๊ทธ๋ฆด์ง๋ฅผ ์ ์ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ๊ทธ๋์ ๋ฏธ๋ฆฌ ์ ํด์ง ํ๊ทธ๋ค (<h1>
, <p>
, <img>
๋ฑ)์ ์ฌ์ฉํด์ ์ฝํ
์ธ ์ ์๋ฏธ์ ํํ ๋ฐฉ์์ ๋ํ๋
๋๋ค.
๋ฐ๋ฉด์ XML์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ์ ์กํ๋ ๋ฐ ์ฃผ๋ก ์ฌ์ฉ๋ฉ๋๋ค. ๋ฐ์ดํฐ์ ๊ตฌ์กฐ๋ฅผ ์ค๋ช
ํ๊ณ ์๋ฏธ๋ฅผ ๋ถ์ฌํ๋ ๋ฐ ๋ชฉ์ ์ด ์์ต๋๋ค. XML์ HTML์ฒ๋ผ ๋ฏธ๋ฆฌ ์ ํด์ง ํ๊ทธ๊ฐ ์๋ ๊ฒ์ด ์๋๋ผ, ์ฌ์ฉ์๊ฐ ๋ฐ์ดํฐ์ ๊ตฌ์กฐ์ ๋ง๊ฒ ์ง์ ํ๊ทธ๋ฅผ ์ ์ํด์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ทธ๋์ 'ํ์ฅ ๊ฐ๋ฅํ(eXtensible)' ๋งํฌ์
์ธ์ด๋ผ๊ณ ๋ถ๋ฆฝ๋๋ค. ์๋ฅผ ๋ค์ด <person><name>ํ๊ธธ๋</name><age>30</age></person>
์ฒ๋ผ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์์ ๋กญ๊ฒ ํํํ ์ ์์ต๋๋ค.
CSS ์์ฑ์๋ ์ด๋ค๊ฒ๋ค์ด ์๋์?
CSS ์์ฑ์ ์น ์์์ ์คํ์ผ์ ์ง์ ํ๋ ๋ฐ ์ฌ์ฉ๋๋ฉฐ ์ ๋ง ๋ค์ํ ์ข ๋ฅ๊ฐ ์์ต๋๋ค. ํฌ๊ฒ ๋ ์ด์์๊ณผ ์ ๋ ฌ, ํ ์คํธ ์คํ์ผ, ์์ ๋ฐ ๋ฐฐ๊ฒฝ, ๊ทธ ์ธ์๋ ๊ทธ๋ฆผ์์ ํฌ๋ช ๋ ๋ฐ ํธ๋์ง์ ๊ณผ ๊ด๋ จ๋ ์์ฑ๋ค์ด ์์ต๋๋ค.
CSS์์ Reflow์ Repaint๋ ๋ฌด์์ด๋ฉฐ, ์ฑ๋ฅ์ ์ด๋ค ์ํฅ์ ๋ฏธ์น๋์?
๋ค, Reflow์ Repaint๋ ๋ธ๋ผ์ฐ์ ๊ฐ ํ๋ฉด์ ๋ค์ ๊ทธ๋ฆฌ๋ ๊ณผ์ ๊ณผ ๊ด๋ จ๋ ๊ฐ๋ ์ ๋๋ค.
Repaint๋ ์์์ ์์์ด๋ ๋ฐฐ๊ฒฝ์ฒ๋ผ ํ๋ฉด์ ๋ณด์ด๋ ์คํ์ผ๋ง ๋ณ๊ฒฝ๋์์ ๋, ๋ ์ด์์์๋ ์ํฅ์ ์ฃผ์ง ์๊ณ ํด๋น ๋ถ๋ถ๋ง ๋ค์ ๊ทธ๋ฆฌ๋ ๊ฒ์ ๋งํฉ๋๋ค. ์๋ฅผ ๋ค์ด background-color๋ color ์์ฑ์ด ๋ฐ๋๋ฉด Repaint๊ฐ ์ผ์ด๋ฉ๋๋ค.
Reflow๋ ์ด๋ณด๋ค ๋ ํฐ ์์ ์ธ๋ฐ์, ์์์ ํฌ๊ธฐ๋ ์์น, ์ฆ ๋ ์ด์์์ด ๋ณ๊ฒฝ๋์์ ๋ ๋ฐ์ํฉ๋๋ค. width, height, margin ๊ฐ์ ์์ฑ์ด ๋ฐ๋๊ฑฐ๋ DOM ์์๊ฐ ์ถ๊ฐ/์ญ์ ๋ ๋ ์ผ์ด๋์ฃ . ๋ธ๋ผ์ฐ์ ๋ ๋ณ๊ฒฝ๋ ์์์ ๊ทธ ์ฃผ๋ณ ์์๋ค์ ์์น์ ํฌ๊ธฐ๋ฅผ ๋ค์ ๊ณ์ฐํด์ผ ํฉ๋๋ค. ๊ทธ๋์ Reflow๋ ๊ฑฐ์ ํญ์ Repaint๋ฅผ ๋๋ฐํฉ๋๋ค.
CSS ์ ๋๋ฉ์ด์ ๊ณผ JS ์ ๋๋ฉ์ด์ ์ ์ฐจ์ด
CSS ์ ๋๋ฉ์ด์ ์ transition์ด๋ @keyframes ๊ฐ์ CSS ์์ฑ์ ์ด์ฉํด์ ์ ์ธ์ ์ผ๋ก ์ ์ํฉ๋๋ค. ์ฆ, ์์ ์ํ์ ๋ ์ํ, ๋๋ ์ค๊ฐ ์ง์ ๋ค์ ์ ์ํ๋ฉด ๋ธ๋ผ์ฐ์ ๊ฐ ์์์ ์ค๊ฐ ๊ณผ์ ์ ๋ถ๋๋ฝ๊ฒ ์ฒ๋ฆฌํด์ค๋๋ค. ๋ ์ด์์ ๋ณ๊ฒฝ์ ์ผ์ผํค์ง ์๋ ์์ฑ์ ์ ๋๋ฉ์ด์ ์ ๋ธ๋ผ์ฐ์ ๊ฐ ๋ฉ์ธ ์ค๋ ๋์ ๋ณ๋๋ก ์ฒ๋ฆฌํ ์ ์์ด์ ์ฑ๋ฅ์ด ์ผ๋ฐ์ ์ผ๋ก ์ข์ต๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ ์ ๋๋ฉ์ด์ ์ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํด์ ์์์ ์คํ์ผ ์์ฑ๊ฐ์ ์ง์ ํ๋ ์ ๋จ์๋ก ๋ณ๊ฒฝํ๋ ๋ฐฉ์์ ๋๋ค. ๋ณดํต requestAnimationFrame API๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ์ ๋๋ฉ์ด์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์ฉํฉ๋๋ค. ์ ๋๋ฉ์ด์ ์ ๋ชจ๋ ๋จ๊ณ๋ฅผ ์์ ํ ์ ์ดํ ์ ์์ด์ ๋ณต์กํ ํจ๊ณผ๋ฅผ ๋ง๋๋ ์ํฉ์ ์ ์ฉํฉ๋๋ค. ๋ค๋ง ๋ฉ์ธ ์ค๋ ๋๋ฅผ ๋ง์ด ์ฌ์ฉํ๊ฒ ๋์ด ๋ฒ๋ฒ ๊ฑฐ๋ฆผ์ด ๋ฐ์ํ ์ ์์ต๋๋ค. requestAnimationFrame์ ์ ์ฌ์ฉํ๊ณ ์ฑ๋ฅ์ ๋ฏผ๊ฐํ ์์ฑ ์์ฃผ๋ก ์กฐ์ํ๋ฉด ์ข์ ์ฑ๋ฅ์ ๋ผ ์ ์์ต๋๋ค.
์ง๋ฌธ์ ์ : ํ์ฐฝํ
visibility: hidden๊ณผ display: none์ ์ฐจ์ด๋?
๋ต๋ณ
์ง๋ฌธ์ ์ : ํ์ฐฝํ
CSS ์ ํ์ ์ฐ์ ์์๋ ์ด๋ป๊ฒ ๋๋์?
๋ต๋ณ
- ! important
- ์ธ๋ผ์ธ ์คํ์ผ
- ID ์ ํ์
- Class ์ ํ์, ์์ฑ ๊ธฐ๋ฐ ์ ํ์, ๊ฐ์ ํด๋์ค, ๊ฐ์์์ ์ ํ์
- ํ๊ทธ ์ ํ์
- ์ ์ฒด ์ ํ์ *
์ง๋ฌธ ์ ์: ์ต๊ฒฝ์ผ
Cascading์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
CSS์์ ์ฌ๋ฌ ์คํ์ผ ๊ท์น์ด ํ๋์ ์์์ ์ ์ฉ๋ ์ ์์ ๋, ์ฐ์ ์์์ ๋ฐ๋ผ ์ด๋ค ์คํ์ผ์ด ์ ์ฉ๋ ์ง๋ฅผ ๊ฒฐ์ ํ๋ ๊ฒ์ ๋งํฉ๋๋ค.
์ค์๋, ์ ์ธ ์์น ๋ฑ์ ๋ฐ๋ผ ๊ฒฐ์ ๋ฉ๋๋ค.
์ง๋ฌธ ์ ์ : ๊ฐ๋ฏผ์ฃผ
Box model์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
๋ต๋ณ
์ง๋ฌธ ์ ์: OOO
margin๊ณผ padding์ ์ฐจ์ด๋ฅผ ์๋ ค์ฃผ์ธ์.
๋ต๋ณ
์ง๋ฌธ ์ ์: OOO
margin ๋ณํฉ์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
margin
๋ณํฉ ํ์์ ์ธ์ ํ ๋ธ๋ก์์์ ์ํ๋จ ๋ง์ง์ด ๋ณํฉ๋๋ ํ์์ ์๋ฏธํ๋ฉฐ, ๊ทธ ํฌ๊ธฐ๋ ๋ ๋ง์ง ์ค ํฐ ๊ฐ์ ๊ฐ์ง ๋ง์ง์ ๊ฐ์ผ๋ก ๋ณํฉ๋ฉ๋๋ค.
์ด๋ ์ธ์ ํ ๋ธ๋ก์ด ์๋ ๋ถ๋ชจ์ ์์ ์์๊ฐ์๋ ๋ฐ์ํฉ๋๋ค.
๋ถ๋ชจ์ margin
์ 0์ผ๋ก ์ค์ ํ๊ณ ์์ ์์์ margin
์ 10px๋ก ์ค์ ํ๋ฉด, ์์์์์ ์ํ๋จ margin
์ด ๋ถ๋ชจ์ margin
์ผ๋ก ๋ณํฉ๋์ด ๋ง์น margin
์ด ์ฌ๋ผ์ง ๊ฒ ๊ฐ์ ํ์์ด ๋ฐ์ํฉ๋๋ค.
์ด๋ฐ ํ์์ ๋ง๊ธฐ์ํ ๋ํ์ ์ธ ํด๊ฒฐ์ฑ
์ผ๋ก ๋ถ๋ชจ ์์์ overflow: hidden
์ ์ฃผ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
์ง๋ฌธ ์ ์: ๋ฐ๋ณ์ฃผ
์ถ์ฒ: ๋ฉด์ ์ค๋น ๋ ธํธ (HTML, CSS)
CSS์ box-sizing์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์
๋ต๋ณ
์ง๋ฌธ์ ์ : ํ์ฐฝํ
z-index๋ ๋ฌด์์ด๊ณ , ์ด๋ป๊ฒ ๋์ํ๋์?
๋ต๋ณ
์ง๋ฌธ์ ์ : ํ์ฐฝํ
float ๋์์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
๋ต๋ณ
์ง๋ฌธ ์ ์: OOO
top, margin-top, translate-y ์ฐจ์ด์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
๋ต๋ณ
์ง๋ฌธ ์ ์: OOO
SCSS์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
๋ต๋ณ
์ง๋ฌธ ์ ์: OOO
position ์์ฑ์๋ ๋ญ๊ฐ ์๋์ง ์ค๋ช ํด์ฃผ์ธ์
๋ต๋ณ
์ง๋ฌธ ์ ์: OOO
display ์์ฑ์๋ ๋ญ๊ฐ ์๋์ง ์ค๋ช ํด์ฃผ์ธ์
๋ต๋ณ
์ง๋ฌธ ์ ์: OOO
๊ฐ์ ํด๋์ค์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
๋ต๋ณ
์ง๋ฌธ ์ ์: OOO
์ปจํ ์ด๋ ๋ธ๋ก์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
๋ต๋ณ
์ง๋ฌธ ์ ์: OOO
CSS in JS์ ์ฅ๋จ์ ์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
๋ต๋ณ
์ง๋ฌธ ์ ์: OOO
CSS์์ inline, internal, external ์คํ์ผ์ ์ฐจ์ด
๋ต๋ณ
์ง๋ฌธ์ ์ : ํ์ฐฝํ
CSS์ ๊ฐ์ ํด๋์ค(:hover, :focus ๋ฑ)์ ๊ฐ์ ์์(::before, ::after)์ ์ฐจ์ด
๋ต๋ณ
์ง๋ฌธ์ ์ : ํ์ฐฝํ
CSS์์ ํธ๋์ง์ (transition)๊ณผ ์ ๋๋ฉ์ด์ (animation)์ ์ฐจ์ด
๋ต๋ณ
์ง๋ฌธ์ ์ : ํ์ฐฝํ
CSS ์ ์ฒ๋ฆฌ๊ธฐ์ ํ์ฒ๋ฆฌ๊ธฐ์ ์ฐจ์ด์ ์ ๋ฌด์์ธ๊ฐ์?
๋ต๋ณ
์ง๋ฌธ ์ ์: OOO
Flexbox์ Grid์ ์ฐจ์ด์ ์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
๋ ๋ค ํ์ด์ง์์ ๋ ์ด์์์ ๊ตฌ์ฑํ ๋ ์ฌ์ฉ๋๋ CSS ์์ฑ์ผ๋ก, ํ๋ฉด ์์๋ฅผ ๋ฐฐ์นํ๊ณ ์ ๋ ฌํ๋๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ฐจ์ด์ ์ผ๋ก๋ ํฌ๊ฒ 3๊ฐ์ง๊ฐ ์์ต๋๋ค.
์ฒซ๋ฒ์งธ๋ก Flexbox๋ 1์ฐจ์ ๋ ์ด์์ ๋ฐฉ์์ผ๋ก, ํ ๋๋ ์ด ์ค ํ ๋ฐฉํฅ์ ๊ธฐ์ค์ผ๋ก ์์๋ฅผ ๋ฐฐ์นํ๋ ๋ฐ ์ ํฉํฉ๋๋ค. ๋ฐ๋ฉด, Grid๋ 2์ฐจ์ ๋ ์ด์์ ๋ฐฉ์์ผ๋ก, ํ๊ณผ ์ด์ ๋์์ ํ์ฉํ์ฌ ์์๋ฅผ ๋ฐฐ์นํ ์ ์์ต๋๋ค.
๋๋ฒ์งธ๋ ์ฌ์ฉ ๋ชฉ์ ์ ์ฐจ์ด์ ๋๋ค. Flexbox๋ ์ฝํ ์ธ ์ค์ฌ ๋ ์ด์์์ ์ ํฉํฉ๋๋ค. ์ฝํ ์ธ ๊ฐ ์ ๋์ ์ผ๋ก ๋ณํํ ๋ ์ ์ฐํ๊ฒ ๋์ํ ์ ์์ด ๋ฒํผ ๊ทธ๋ฃน, ๋ด๋น๊ฒ์ด์ ๋ฐ์ฒ๋ผ ํ ์ค ๊ตฌ์ฑ์ ํจ๊ณผ์ ์ ๋๋ค. ๋ฐ๋ฉด Grid๋ ๋ ์ด์์ ์ค์ฌ์ด๋ฉฐ, ์ ์ฒด ํ์ด์ง ๊ตฌ์กฐ๋ ์นด๋ ๋ ์ด์์, ๊ฐค๋ฌ๋ฆฌ์ฒ๋ผ ์ ํด์ง ์์ญ์ ๋๋์ด ๋ฐฐ์นํ ๋ ์ ๋ฆฌํฉ๋๋ค.
์ธ๋ฒ์งธ๋ ๊ธฐ๋ณธ ๋์์ ์ฐจ์ด์
๋๋ค. Flexbox๋ justify-content
, align-items
๋ฑ์ ํตํด ์ปจํ
์ด๋์ ๋ฐฉํฅ๊ณผ ํฌ๊ธฐ์ ๋ฐ๋ผ ์์๋ค์ด ์๋์ผ๋ก ์ ๋ ฌ๋ฉ๋๋ค. Grid๋ grid-template-rows
, grid-template-columns
๋ฑ์ ์ฌ์ฉํด ํ๊ณผ ์ด์ ์ฌ์ ์ ์ ์ํ๊ณ , ๊ทธ ๊ฒฉ์(grid) ์์ ์์๋ฅผ ๋ฐฐ์นํ๋ ๋ฐฉ์์
๋๋ค.
CSS flex-wrap ์์ฑ์ ๋ํด์ ์ค๋ช ํด์ฃผ์ธ์.
flex-wrap์ Flex ์ปจํ ์ด๋ ์์ Flex ์์ดํ ๋ค์ด ํ ์ค์ ๊ณต๊ฐ์ด ๋ถ์กฑํ ๋ ์ค ๋ฐ๊ฟ์ ํ ์ง ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ๋ CSS ์์ฑ์ ๋๋ค.
nowrap
: ์ค ๋ฐ๊ฟ์ ํ์ง ์์ต๋๋ค. ์์ดํ ๋ค์ด ์ปจํ ์ด๋ ๋๋น๋ฅผ ๋์ด์๋๋ผ๋ ํ ์ค์ ๊ณ์ ๋ฐฐ์น๋ฉ๋๋ค.wrap
: ๊ณต๊ฐ์ด ๋ถ์กฑํ๋ฉด ์์ดํ ๋ค์ด ๋ค์ ์ค๋ก ๋์ด๊ฐ๋๋ค (์๋๋ก).wrap-reverse
: wrap๊ณผ ๋์ผํ๊ฒ ์ค ๋ฐ๊ฟ ํ์ง๋ง, ์ค์ ์์๊ฐ ๋ฐ๋๋ก ์์ ๋๋ค (์๋ก).
๋ฐ์ํ ๋ ์ด์์์์ ๋ธ๋ ์ดํฌ ํฌ์ธํธ๋ ์ด๋ป๊ฒ ์ค์ ํ๋์?
๋ฐ์ํ ๋ ์ด์์์ ๋ธ๋ ์ดํฌํฌ์ธํธ๋ ์ฝํ ์ธ ๊ฐ ๊นจ์ง๊ฑฐ๋ ์ด์ํด ๋ณด์ด๋ ์ง์ ์ ๊ธฐ์ค์ผ๋ก ์ก๋ ๊ฒ์ด ๊ฐ์ฅ ์ข์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก, Mobile First ๋ฐฉ์์ผ๋ก ์์ ํ๋ฉด์์ ์์ํด ์ ์ฐจ ๋ํ๊ฐ๋ฉฐ ๋ธ๋ ์ดํฌํฌ์ธํธ๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ด ํจ์จ์ ์ ๋๋ค.
๊ณผ๊ฑฐ์๋ ํน์ ๊ธฐ๊ธฐ์ ํด์๋๋ฅผ ๊ธฐ์ค์ผ๋ก ์ก๋ ๊ฒฝ์ฐ๊ฐ ๋ง์์ต๋๋ค. ํ์ง๋ง, ๊ธฐ๊ธฐ ์ข ๋ฅ๊ฐ ๋งค์ฐ ๋ค์ํด์ ธ์ ๋ชจ๋ ๊ธฐ๊ธฐ์ ์๋ฒฝํ๊ฒ ๋์ํ๊ธฐ ์ด๋ ค์์ก๊ธฐ ๋๋ฌธ์ ์ฝํ ์ธ ์ ๊ฐ๋ ์ฑ์ ์ค์ฌ์ผ๋ก ๋ธ๋ ์ดํฌ ํฌ์ธํธ๋ฅผ ์ก๋ ๊ฒฝ์ฐ๊ฐ ๋ ๋ง์์ก์ต๋๋ค.
px, em, rem์ ์ฐจ์ด๋ฅผ ์ค๋ช ํด์ฃผ์ธ์.
- px: ์ ๋ ๋จ์๋ก์จ ํฝ์ ์ ๊ธฐ์ค์ผ๋ก ํฌ๊ธฐ๊ฐ ๊ณ ์ ๋ฉ๋๋ค.
- em: ์๋ ๋จ์๋ก์จ ํด๋น ์์์ font-size๋ฅผ ๊ธฐ์ค์ผ๋ก ํฌ๊ธฐ๋ฅผ ๊ฒฐ์ ํฉ๋๋ค. (ํด๋น ์์ ๋ด font-size๊ฐ ์ง์ ์ด ์๋์ด์๋ค๋ฉด ๋ถ๋ชจ font-size๋ฅผ ์์)
- rem: ์๋ ๋จ์๋ก์จ ์ต์์ ์์(HTML ์์)์ font-size๋ฅผ ๊ธฐ์ค์ผ๋ก ํฌ๊ธฐ๋ฅผ ๊ฒฐ์ ํฉ๋๋ค. em๊ณผ ๋ฌ๋ฆฌ ์ค์ฒฉ์ ์ํฅ์ ๋ฐ์ง ์๊ธฐ ๋๋ฌธ์ ์ผ๊ด๋๊ณ ์์ธก ๊ฐ๋ฅํ ํฌ๊ธฐ๋ก ์กฐ์ ํ ์ ์์ต๋๋ค.
vw, vh์ ๋ํด์ ์ค๋ช ํด์ฃผ์ธ์.
vw๋ viewport์ ๋๋น๊ฐ์ 100vw๋ผ๊ณ ์ ์ํฉ๋๋ค. ์ฆ, viewport ๋๋น์ 0.01๋ฐฐ๊ฐ 1vw์ ๋๋ค.
vh๋ viewport ๋์ด๊ฐ์ 100vh๋ก ์ ์ํฉ๋๋ค. ์ฆ, viewport ๋์ด์ 0.01๋ฐฐ๊ฐ 1vh์ ๋๋ค.
ํ์ด์ง ํฌ๊ธฐ๊ฐ ๋ณํด๋ ํญ์ ๊ฐ์ ๋น์จ์ ์ ์งํ๋ ์์๋ฅผ ๋ง๋ค๋ ค๋ฉด CSS๋ฅผ ์ด๋ป๊ฒ ์ค์ ํด์ผ๋ ๊น์?
๋ต๋ณ
์ง๋ฌธ์ ์ : ํ์ฐฝํ
์น ์ ๊ทผ์ฑ์ ์ํด ๊ณ ๋ คํด์ผ ํ HTML/CSS ์ธก๋ฉด์ ๋ฌด์์ด ์๋์?
๋ต๋ณ
์ง๋ฌธ ์ ์: OOO
CSS์์ will-change ์์ฑ์ ์ญํ ์?
๋ต๋ณ
์ง๋ฌธ์ ์ : ํ์ฐฝํ
์น ํฐํธ ์ ์ฉ ์ ์ฑ๋ฅ์ ์ต์ ํํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์๋ ๋ฌด์์ด ์๋์?
๋ต๋ณ
์ง๋ฌธ ์ ์: OOO