Skip to content

Latest commit

ย 

History

History
444 lines (253 loc) ยท 20.1 KB

File metadata and controls

444 lines (253 loc) ยท 20.1 KB

HTML/CSS

HTML

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> ํƒœ๊ทธ ๋งจ ๋์— ๋‘๋Š” ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์งˆ๋ฌธ์ œ์ž‘ : ํ™์ฐฝํ˜„

์ถœ์ฒ˜ : https://velog.io/@changbob/%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C-%EB%A9%B4%EC%A0%91-%EB%8C%80%EB%B9%84-%EC%9B%B9

๋ธŒ๋ผ์šฐ์ € ๋™์ž‘ ์ค‘ ์ค‘๋‹จ๋˜๋Š” ๊ณผ์ •
  1. ๋ธŒ๋ผ์šฐ์ €๋Š” HTML์„ ์œ„์—์„œ ์•„๋ž˜๋กœ ์ˆœ์ฐจ์ ์œผ๋กœ ํŒŒ์‹ฑํ•˜๋ฉฐ DOM์„ ๊ตฌ์„ฑ
  2. JavaScript ์ฝ”๋“œ(ํŠนํžˆ <script> ํƒœ๊ทธ)๋ฅผ ๋งŒ๋‚˜๋ฉด ์‹คํ–‰์„ ์œ„ํ•ด HTML ํŒŒ์‹ฑ์„ ์ค‘๋‹จ
  3. JavaScript๊ฐ€ ์‹คํ–‰๋˜๋Š” ๋™์•ˆ ๋ธŒ๋ผ์šฐ์ €๋Š” ๋‹ค์Œ HTML ์š”์†Œ๋ฅผ ํŒŒ์‹ฑํ•˜๊ฑฐ๋‚˜ ๋ Œ๋”๋งํ•˜์ง€ ์•Š์Œ
  4. 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 ์†์„ฑ์€ ์›น ์š”์†Œ์˜ ์Šคํƒ€์ผ์„ ์ง€์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋ฉฐ ์ •๋ง ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํฌ๊ฒŒ ๋ ˆ์ด์•„์›ƒ๊ณผ ์ •๋ ฌ, ํ…์ŠคํŠธ ์Šคํƒ€์ผ, ์ƒ‰์ƒ ๋ฐ ๋ฐฐ๊ฒฝ, ๊ทธ ์™ธ์—๋„ ๊ทธ๋ฆผ์ž์™€ ํˆฌ๋ช…๋„ ๋ฐ ํŠธ๋žœ์ง€์…˜๊ณผ ๊ด€๋ จ๋œ ์†์„ฑ๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค.

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์„ ์ž˜ ์‚ฌ์šฉํ•˜๊ณ  ์„ฑ๋Šฅ์— ๋ฏผ๊ฐํ•œ ์†์„ฑ ์œ„์ฃผ๋กœ ์กฐ์ž‘ํ•˜๋ฉด ์ข‹์€ ์„ฑ๋Šฅ์„ ๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์งˆ๋ฌธ์ œ์ž‘ : ํ™์ฐฝํ˜„

์ถœ์ฒ˜ : https://velog.io/@changbob/%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C-%EB%A9%B4%EC%A0%91-%EB%8C%80%EB%B9%84-%EC%9B%B9

visibility: hidden๊ณผ display: none์˜ ์ฐจ์ด๋Š”?

๋‹ต๋ณ€

์งˆ๋ฌธ์ œ์ž‘ : ํ™์ฐฝํ˜„

์ถœ์ฒ˜ : https://velog.io/@changbob/%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C-%EB%A9%B4%EC%A0%91-%EB%8C%80%EB%B9%84-%EC%9B%B9

CSS ์„ ํƒ์ž ์šฐ์„ ์ˆœ์œ„๋Š” ์–ด๋–ป๊ฒŒ ๋˜๋‚˜์š”?

๋‹ต๋ณ€

  1. ! important
  2. ์ธ๋ผ์ธ ์Šคํƒ€์ผ
  3. ID ์„ ํƒ์ž
  4. Class ์„ ํƒ์ž, ์†์„ฑ ๊ธฐ๋ฐ˜ ์„ ํƒ์ž, ๊ฐ€์ƒ ํด๋ž˜์Šค, ๊ฐ€์ƒ์š”์†Œ ์„ ํƒ์ž
  5. ํƒœ๊ทธ ์„ ํƒ์ž
  6. ์ „์ฒด ์„ ํƒ์ž *

์งˆ๋ฌธ ์ œ์ž‘: ์ตœ๊ฒฝ์ผ

Cascading์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

CSS์—์„œ ์—ฌ๋Ÿฌ ์Šคํƒ€์ผ ๊ทœ์น™์ด ํ•˜๋‚˜์˜ ์š”์†Œ์— ์ ์šฉ๋  ์ˆ˜ ์žˆ์„ ๋•Œ, ์šฐ์„ ์ˆœ์œ„์— ๋”ฐ๋ผ ์–ด๋–ค ์Šคํƒ€์ผ์ด ์ ์šฉ๋ ์ง€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค.

์ค‘์š”๋„, ์„ ์–ธ ์œ„์น˜ ๋“ฑ์— ๋”ฐ๋ผ ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค.

์งˆ๋ฌธ ์ œ์ž‘ : ๊ฐ•๋ฏผ์ฃผ

Box model์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

๋‹ต๋ณ€

์งˆ๋ฌธ ์ œ์ž‘: OOO

margin๊ณผ padding์˜ ์ฐจ์ด๋ฅผ ์•Œ๋ ค์ฃผ์„ธ์š”.

๋‹ต๋ณ€

์งˆ๋ฌธ ์ œ์ž‘: OOO

margin ๋ณ‘ํ•ฉ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

margin ๋ณ‘ํ•ฉ ํ˜„์ƒ์€ ์ธ์ ‘ํ•œ ๋ธ”๋ก์š”์†Œ์˜ ์ƒํ•˜๋‹จ ๋งˆ์ง„์ด ๋ณ‘ํ•ฉ๋˜๋Š” ํ˜„์ƒ์„ ์˜๋ฏธํ•˜๋ฉฐ, ๊ทธ ํฌ๊ธฐ๋Š” ๋‘ ๋งˆ์ง„ ์ค‘ ํฐ ๊ฐ’์„ ๊ฐ€์ง„ ๋งˆ์ง„์˜ ๊ฐ’์œผ๋กœ ๋ณ‘ํ•ฉ๋ฉ๋‹ˆ๋‹ค.

์ด๋Š” ์ธ์ ‘ํ•œ ๋ธ”๋ก์ด ์•„๋‹Œ ๋ถ€๋ชจ์™€ ์ž์‹ ์š”์†Œ๊ฐ„์—๋„ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๋ถ€๋ชจ์— margin์„ 0์œผ๋กœ ์„ค์ •ํ•˜๊ณ  ์ž์‹ ์š”์†Œ์˜ margin์„ 10px๋กœ ์„ค์ •ํ•˜๋ฉด, ์ž์‹์š”์†Œ์˜ ์ƒํ•˜๋‹จ margin์ด ๋ถ€๋ชจ์˜ margin์œผ๋กœ ๋ณ‘ํ•ฉ๋˜์–ด ๋งˆ์น˜ margin์ด ์‚ฌ๋ผ์ง„ ๊ฒƒ ๊ฐ™์€ ํ˜„์ƒ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฐ ํ˜„์ƒ์„ ๋ง‰๊ธฐ์œ„ํ•œ ๋Œ€ํ‘œ์ ์ธ ํ•ด๊ฒฐ์ฑ…์œผ๋กœ ๋ถ€๋ชจ ์š”์†Œ์— overflow: hidden์„ ์ฃผ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์งˆ๋ฌธ ์ œ์ž‘: ๋ฐ•๋ณ‘์ฃผ

์ถœ์ฒ˜: ๋ฉด์ ‘ ์ค€๋น„ ๋…ธํŠธ (HTML, CSS)

CSS์˜ box-sizing์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”

๋‹ต๋ณ€

์งˆ๋ฌธ์ œ์ž‘ : ํ™์ฐฝํ˜„

์ถœ์ฒ˜ : https://velog.io/@changbob/%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C-%EB%A9%B4%EC%A0%91-%EB%8C%80%EB%B9%84-%EC%9B%B9

z-index๋Š” ๋ฌด์—‡์ด๊ณ , ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋‚˜์š”?

๋‹ต๋ณ€

์งˆ๋ฌธ์ œ์ž‘ : ํ™์ฐฝํ˜„

์ถœ์ฒ˜ : https://velog.io/@changbob/%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C-%EB%A9%B4%EC%A0%91-%EB%8C%80%EB%B9%84-%EC%9B%B9

float ๋™์ž‘์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

๋‹ต๋ณ€

์งˆ๋ฌธ ์ œ์ž‘: OOO

top, margin-top, translate-y ์ฐจ์ด์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

๋‹ต๋ณ€

์งˆ๋ฌธ ์ œ์ž‘: OOO

SCSS์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

๋‹ต๋ณ€

์งˆ๋ฌธ ์ œ์ž‘: OOO

position ์†์„ฑ์—๋Š” ๋ญ๊ฐ€ ์žˆ๋Š”์ง€ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”

๋‹ต๋ณ€

์งˆ๋ฌธ ์ œ์ž‘: OOO

display ์†์„ฑ์—๋Š” ๋ญ๊ฐ€ ์žˆ๋Š”์ง€ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”

๋‹ต๋ณ€

์งˆ๋ฌธ ์ œ์ž‘: OOO

๊ฐ€์ƒ ํด๋ž˜์Šค์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

๋‹ต๋ณ€

์งˆ๋ฌธ ์ œ์ž‘: OOO

์ปจํ…Œ์ด๋‹ ๋ธ”๋ก์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

๋‹ต๋ณ€

์งˆ๋ฌธ ์ œ์ž‘: OOO

CSS in JS์˜ ์žฅ๋‹จ์ ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

๋‹ต๋ณ€

์งˆ๋ฌธ ์ œ์ž‘: OOO

CSS์—์„œ inline, internal, external ์Šคํƒ€์ผ์˜ ์ฐจ์ด

๋‹ต๋ณ€

์งˆ๋ฌธ์ œ์ž‘ : ํ™์ฐฝํ˜„

์ถœ์ฒ˜ : https://velog.io/@changbob/%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C-%EB%A9%B4%EC%A0%91-%EB%8C%80%EB%B9%84-%EC%9B%B9

CSS์˜ ๊ฐ€์ƒ ํด๋ž˜์Šค(:hover, :focus ๋“ฑ)์™€ ๊ฐ€์ƒ ์š”์†Œ(::before, ::after)์˜ ์ฐจ์ด

๋‹ต๋ณ€

์งˆ๋ฌธ์ œ์ž‘ : ํ™์ฐฝํ˜„

์ถœ์ฒ˜ : https://velog.io/@changbob/%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C-%EB%A9%B4%EC%A0%91-%EB%8C%80%EB%B9%84-%EC%9B%B9

CSS์—์„œ ํŠธ๋žœ์ง€์…˜(transition)๊ณผ ์• ๋‹ˆ๋ฉ”์ด์…˜(animation)์˜ ์ฐจ์ด

๋‹ต๋ณ€

์งˆ๋ฌธ์ œ์ž‘ : ํ™์ฐฝํ˜„

์ถœ์ฒ˜ : https://velog.io/@changbob/%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C-%EB%A9%B4%EC%A0%91-%EB%8C%80%EB%B9%84-%EC%9B%B9

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๋ฅผ ์–ด๋–ป๊ฒŒ ์„ค์ •ํ•ด์•ผ๋ ๊นŒ์š”?

๋‹ต๋ณ€

์งˆ๋ฌธ์ œ์ž‘ : ํ™์ฐฝํ˜„

์ถœ์ฒ˜ : https://velog.io/@changbob/%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C-%EB%A9%B4%EC%A0%91-%EB%8C%80%EB%B9%84-%EC%9B%B9

์ ‘๊ทผ์„ฑ

์›น ์ ‘๊ทผ์„ฑ์„ ์œ„ํ•ด ๊ณ ๋ คํ•ด์•ผ ํ•  HTML/CSS ์ธก๋ฉด์€ ๋ฌด์—‡์ด ์žˆ๋‚˜์š”?

๋‹ต๋ณ€

์งˆ๋ฌธ ์ œ์ž‘: OOO

์„ฑ๋Šฅ ์ตœ์ ํ™”

CSS์—์„œ will-change ์†์„ฑ์˜ ์—ญํ• ์€?

๋‹ต๋ณ€

์งˆ๋ฌธ์ œ์ž‘ : ํ™์ฐฝํ˜„

์ถœ์ฒ˜ : https://velog.io/@changbob/%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C-%EB%A9%B4%EC%A0%91-%EB%8C%80%EB%B9%84-%EC%9B%B9

์›น ํฐํŠธ ์ ์šฉ ์‹œ ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์—๋Š” ๋ฌด์—‡์ด ์žˆ๋‚˜์š”?

๋‹ต๋ณ€

์งˆ๋ฌธ ์ œ์ž‘: OOO