์ „์ฒด ๊ธ€ 42

this

“๊ฐ์ฒด”๋Š” ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ํ”„๋กœํผํ‹ฐ์™€ ๋™์ž‘์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ํ•˜๋‚˜์˜ ๋…ผ๋ฆฌ์ ์ธ ๋‹จ์œ„๋กœ ๋ฌถ์€ ๋ณตํ•ฉ์ ์ธ ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค. ๋™์ž‘์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฉ”์„œ๋“œ๋Š” ์ž์‹ ์ด ์†ํ•œ ๊ฐ์ฒด์˜ ์ƒํƒœ, ์ฆ‰ ํ”„๋กœํผํ‹ฐ๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค. ์ด๋–„ ๋ฉ”์„œ๋“œ๊ฐ€ ์ž์‹ ์ด ์†ํ•œ ๊ฐํŽ˜์˜ ํ”„๋กœํผํ‹ฐ๋ฅผ ์ฐธ์กฐ ํ•˜๋ ค๋ฉด ๋จผ์ € ์ž์‹ ์ด ์†ํ•œ ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฅดํ‚ค๋Š” ์‹๋ณ„์ž๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค. const circle = { radius: 5, getDiameter() { return 2 * Circle.radius } }; console.log(circle.getDiameter()) // 10 ์œ„์˜ ์„ค๋ช…์„ ๋“ฃ๊ณ  ์ฝ”๋“œ๋ฅผ ๋ณด๋‹ˆ ๋ฌด์Šจ๋ง์ธ์ง€ ์ดํ•ด ๋˜์‹œ๋‚˜์—ฌ? ๋ฉ”์„œ๋“œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ๋ฅผ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋ณ€์ˆ˜(์ƒํƒœ)๋ฅผ ๋ณ€๊ฒฝ์‹œํ‚ค๋Š” ์ผ์„ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๊ฐ์ฒด์•ˆ์˜ ..

ํด๋กœ์ € (closure)

ํด๋กœ์ €์™€ ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ const x = 1; function outer() { const x = 10; const inner = function() {console.log(x)}; return inner; } const innerFunc = outer(); innerFunc(); ์ •๋‹ต์€? 10 outerํ•จ์ˆ˜๋Š” ์ข…๋ฃŒ๋˜๊ณ  ์‹คํ–‰์ปจํ…์ŠคํŠธ ์Šคํƒ์—์„œ pop์ด ๋œ๋‹ค๊ณ  ๋ฐฐ์› ๋Š”๋ฐ, ๊ฐ’์ด ๋‚จ์•„์žˆ๋‹ค… ๋ญ”๊ฐ€ ์ด์ƒํ•˜์ง€ ์•Š๋‚˜์š”??. ์‹คํ–‰ ์ปจํ…์ŠคํŠธ ๊ด€์ ์—์„œ ๋ณธ ์œ„์˜ ํ•จ์ˆ˜. ์ฝ”๋“œ๊ฐ€ ์–ด๋–ป๊ฒŒ ์Šคํƒ์— ์˜ฌ๋ผ๊ฐ€๋Š”์ง€ ๋ณด์—ฌ์ฃผ๋Š” ๊ทธ๋ฆผ์ž…๋‹ˆ๋‹ค. outer๊ฐ€ ๋๋‚˜๊ณ  inner๊ฐ€ ์ƒˆ๋กœ ์˜ฌ๋ผ๊ฐ€๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. "์ „์—ญ ์ปจํ…์ŠคํŠธ": { ๋ณ€์ˆ˜๊ฐ์ฒด: { arguments: null, variable: [{ outer: Function }, 'x', 'i..

์‹คํ–‰ ์ปจํ…์ŠคํŠธ

์‹คํ–‰ ์ปจํ…์ŠคํŠธ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐœ๋…์„ ์ •๋ฆฌํ•˜๋‹ค ๋ณด๋ฉด ์‹ฌ์‹ฌ์น˜ ์•Š๊ฒŒ ์‹คํ–‰์ปจํ…์ŠคํŠธ๋ผ๋Š” ๋‹จ์–ด๊ฐ€ ๋ณด์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ์— ์ •๋ฆฌํ•ด ๋ณด๊ฒƒ์Šต๋‹ˆ๋‹ค. ์™œ ์•Œ์•„์•ผ ํ•˜๋Š”๊ฐ€? “์‹คํ–‰ ์ปจํ…์ŠคํŠธ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์™œ ๊ทธ๋ ‡๊ฒŒ ๋™์ž‘ํ•˜๋Š” ์ง€ ์—ฌ๋Ÿฌ๋ถ„๊ป˜ ์„ค๋ช…ํ•ด์ค๋‹ˆ๋‹ค.” - ์ œ๋กœ์ดˆ ๋ธ”๋กœ๊ทธ “์‹คํ–‰ ์ปจํ…์ŠคํŠธ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋™์ž‘์›๋ฆฌ๋ฅผ ๋‹ด๊ณ ์žˆ๋Š” ํ•ต์‹ฌ ๊ฐœ๋…์ด๋‹ค.” - ๋ชจ๋˜ ์ž๋ฐ” ์Šคํฌ๋ฆฝํŠธ ๋”ฅ๋‹ค์ด๋ธŒ ๋ฐฐ์›Œ์•ผ ๊ฒ ์ฃ ?... ใ…Ž ๊ทผ๋ฐ ์–ด๋ ต๋‹ค ์‹คํ–‰์ปจํ…์ŠคํŠธ๋ฅผ ์ •๋ฆฌ ํ•˜๊ธฐ์œ„ํ•ด ์—ฌ๋Ÿฌ ๋ธ”๋กœ๊ทธ์™€ ์ฑ…์„ ๋ณด๋‹ค๋ณด๋ฉด ๋‹ค๋“ค ํ•˜๋‚˜ ๊ฐ™์ด ์–ด๋ ต๋‹ค๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ค‘์š”ํ•œ ๊ฐœ๋…์ด๊ธฐ์— ๋๊นŒ์ง€ ์ •์‹ ์ค„ ๋ถ™์žก๊ณ  ๋”ฐ๋ผ ์˜ค์‹œ๊ธธ… ๋‚ด์šฉ์ด ์ซŒ๋งŽ๊ณ  ์ฑ…์— ์žˆ๋Š” ๋‚ด์šฉ๋“ค์„ ์ถ”๋ ค์„œ ๊ฐ€์ ธ์˜ค๋‹ค๋ณด๋‹ˆ ๋‚ด์šฉ์ด ๋‘์„œ์—†์ด ์ง„ํ–‰ ๋˜๋Š”๋ฐ ํ•œ๋ฒˆ ๋๊นŒ์ง€ ์ฝ์œผ์‹œ๊ณ  ํ•œ๋ฒˆ ๋” ์ฝ๋Š” ๊ฒƒ์„ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค!. ์‹œ์ž‘์ „ ๊ฐ„๋‹จํ•œ ์šฉ์–ด ์ •๋ฆฌ Stack ์Šคํƒ..

Jest ์‚ฌ์šฉ๋ฒ•

Jest ์‚ฌ์šฉ ๋ฐฉ๋ฒ• Jest๋ž€ Jest๋Š” ํŽ˜์ด์Šค๋ถ์—์„œ ๋งŒ๋“ค์–ด์„œ React์™€ ๋”๋ถˆ์–ด ๋งŽ์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐœ๋ฐœ์ž๋“ค๋กœ ๋ถ€ํ„ฐ ์ข‹์€ ๋ฐ˜์‘์„ ์–ป๊ณ  ์žˆ๋Š” ํ…Œ์ŠคํŒ… ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๊ฐ€ ์ œ๋Œ€๋กœ ๋™์ž‘ํ•˜๋Š”์ง€ ํ™•์ธํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์ƒํ™ฉ๋“ค์„ ์„ค์ •ํ•˜๊ณ , ๊ทธ ์ƒํ™ฉ์— ๋งž๋Š” ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ค๋Š”์ง€ ์ž๋™์œผ๋กœ ํ…Œ์ŠคํŠธ ํ•ด์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ถœ์‹œ ์ดˆ๊ธฐ์—๋Š” ํ”„๋ก ํŠธ์—”๋“œ์—์„œ ์ฃผ๋กœ ์“ฐ์˜€์ง€๋งŒ ์ตœ๊ทผ์—๋Š” ๋ฐฑ์—”๋“œ์—์„œ๋„ ๊ธฐ์กด์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ…Œ์ŠคํŒ… ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋Œ€์ฒดํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์„ค์น˜ ์‚ฌ์šฉ ํ•˜๊ณ  ์‹ถ์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋ฃจํŠธ์— ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. $ npm init -y $ npm i -D jest babel-jest @babel/core @babel/preset-env ์„ค์ • “package.json” ์•ˆ์— ์ถ”๊ฐ€ ํ•ฉ๋‹ˆ๋‹ค. "scripts": ..

ํ˜•์ƒ๊ด€๋ฆฌ

git์€ ๊ฐœ๋ฐœ์ž๋ผ๋ฉด ๋ˆ„๊ตฌ๋‚˜ ํ•œ๋ฒˆ์€ ๋“ค์–ด๋ดค์„ ๋‹จ์–ด์ด๋‹ค. git์€ ํ˜•์ƒ๊ด€๋ฆฌ ํˆด์ค‘์— ํ•˜๋‚˜์ธ๋ฐ. ๋‚˜์—๊ฒŒ ํ˜•์ƒ๊ด€๋ฆฌ๋Š” git์ด์™ธ์— ๋‹ค๋ฅธ ๋ง์ด ๋– ์–ด๋ฅด์ง€ ์•Š๋Š”๋ฐ, ์ด๋ฒˆ์— ํ•œ๋ฒˆ ์ •๋ฆฌํ•ด ๋ณด๊ฒ ๋‹ค!. ํ˜•์ƒ๊ด€๋ฆฌ ์ •์˜ “์†Œํ”„ํŠธ์›จ์–ด ๊ตฌ์„ฑ ๊ด€๋ฆฌ(Software Configuration Management) ๋˜๋Š” ํ˜•์ƒ ๊ด€๋ฆฌ ๋Š” ์†Œํ”„ํŠธ์›จ์–ด์˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์ฒด๊ณ„์ ์œผ๋กœ ์ถ”์ ํ•˜๊ณ  ํ†ต์ œํ•˜๋Š” ๊ฒƒ์œผ๋กœ, ํ˜•์ƒ ๊ด€๋ฆฌ๋Š” ์ผ๋ฐ˜์ ์ธ ๋‹จ์ˆœ ๋ฒ„์ „๊ด€๋ฆฌ ๊ธฐ๋ฐ˜์˜ ์†Œํ”„ํŠธ์›จ์–ด ์šด์šฉ์„ ์ข€ ๋” ํฌ๊ด„์ ์ธ ํ•™์ˆ  ๋ถ„์•ผ์˜ ํ˜•ํƒœ๋กœ ๋„“ํžˆ๋Š” ๊ทผ๊ฐ„์„ ์ด์•ผ๊ธฐํ•œ๋‹ค.” - ์œ„ํ‚ค ๋ฐฑ๊ณผ ์œ„์˜ ๋ง์„ ์ค„์ด์ž๋ฉด ํ˜•์ƒ ๊ด€๋ฆฌ๊ฐ€ ๋ณ€๊ฒฝ๊ด€๋ฆฌ๋ณด๋‹ค. ๋ณ€๊ฒฝ๊ด€๋ฆฌ๊ฐ€ ๋ฒ„์ „๊ด€๋ฆฌ ๋ณด๋‹ค ๋” ํฌ๊ด„์ ์ธ ๋‹จ์–ด์ด๋‹ค. ๋ณ€๊ฒฝ ๊ด€๋ฆฌ — ์†Œ์Šค์ฝ”๋“œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ๋Œ€ํ•œ ๊ด€๋ฆฌ ๋ฒ„์ „ ๊ด€๋ฆฌ — ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ‘๋ฒ„์ „’์ด๋ž€ ๊ฐœ๋…์„ ํ†ตํ•ด ๊ด€๋ฆฌ. ํ˜•์ƒ ๊ด€๋ฆฌ — ..

HTML & CSS flex์ •๋ฆฌ(2)

์˜ค๋Š˜์€ HTML & CSS flex ์ •๋ฆฌ๋ฅผ ๋” ํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. flex-basis, flex-grow, flex-shrink์— ๋Œ€ํ•ด์„œ์š”. ๋‚ด์šฉ์€ beam camp์˜ ๊ฐ•์‚ฌ๋‹˜์˜ ๊ฐ•์˜๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋” ๋งŽ์€ ๋‚ด์šฉ์„ ์›ํ•˜์‹œ๋ฉด https://www.youtube.com/@veamcamp flex-basis ์ดˆ๊ธฐ ๊ฐ’์„ ์ •ํ•  ์ˆ˜ ์žˆ๋Š” ํ‚ค์›Œ๋“œ์ธ flex-basis๋ถ€ํ„ฐ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ํ•˜์ˆ™์ง‘์— 3๋ช…์ด ๊ฐ™์ด ์‚ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์นœ๊ตฌ๋“ค์ด ์‚ด๊ณ  ์žˆ๋Š” ๋ฐฉ์˜ ํฌ๊ธฐ๋ฅผ ๋Š˜๋ฆฌ๊ณ  ์‹ถ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ์š”??? width๋ฅผ ์ฃผ๋Š” ๋ฐฉ๋ฒ•๊ณผ flex-basis์˜ ๊ฐ’์„ ์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค! ๋ฐฉ์ด ๋„“์–ด ์กŒ๋„ค์š”. ใ…Žใ…Ž ๊ทธ๋Ÿผ ๋‘˜(flex-basis, width)์˜ ์ฐจ์ด๋Š” ๋ฌด์—‡์ผ๊นŒ์š”??? ์ฐจ์ด๋Š” ์ถ•์— ์žˆ์Šต๋‹ˆ๋‹ค. flex-direction์ด row..

HTML & CSS GridLayout ์•…์ฆ‰์ฐธ(3)

grid? ์ž์‹ ์š”์†Œ๋“ค์ด ์ปจํ…Œ์ด๋„ˆ ์•ˆ ๊ณต๊ฐ„์„ ๋งž์ถ”๊ธฐ ์œ„ํ•ด์„œ ํฌ๊ธฐ๋ฅผ ํ‚ค์šฐ๊ฑฐ๋‚˜ ์ค„์ด๋Š” ๋ฐฉ๋ฒ•์„ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค ๋ถ€๋ชจ์š”์†Œ๋ฅผ grid-container ์ž์‹์š”์†Œ๋ฅผ grid-item ์ด๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๋“œ ๋ ˆ์ด์•„์›ƒ์€ ์›นํŽ˜์ด์ง€๋ฅผ ์œ„ํ•œ 2์ฐจ์› ๋ ˆ์ด์•„์›ƒ(x์ถ•, y์ถ•) ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค. https://gridexamples.com/ Grid Examples • Real sites using CSS Grid Layout Get inspired by real and live sites collected from bloggers, designers and developers that are using CSS Grid Layout in production. gridexamples.com ์ด๋Ÿฐ card ui๋Š” ๋งŽ์ด ์ ‘ํ•ด ๋ณด์…จ์„ ..

CSS (๋™์  ๊ฐ€์ƒ && ์†์„ฑ)์„ ํƒ์ž

button ๋™์  ๊ฐ€์ƒ ์ƒ์„ฑ์ž ์†์„ฑ ์„ ํƒ์ž button ์‚ฌ์šฉ์ž๊ฐ€ ํด๋ฆญํ• ์ˆ˜ ์žˆ๋Š” ์š”์†Œ์ž…๋‹ˆ๋‹ค. form ๋‚ด๋ถ€๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ฒ„ํŠผ์ด ํ•„์š”ํ•œ ๊ณณ์ด๋ผ๋ฉด ์–ด๋””์—๋“  ๋ฐฐ์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. button /* disabled: ๋ˆ„๋ฅด๊ฑฐ๋‚˜ ํด๋ฆญํ•˜๋Š” ๊ฒƒ์„ ๋ง‰์Šต๋‹ˆ๋‹ค. */ button ๋™์  ๊ฐ€์ƒ ์„ ํƒ์ž :active ํด๋ฆญ์‹œ ํ™œ์„ฑํ™”(๋ˆ„๋ฅด๊ณ  ์žˆ๋Š” ๋™์•ˆ) :visited ์‚ฌ์šฉ์ž๊ฐ€ ์ด๋ฏธ ๋ฐฉ๋ฌธํ•œ ๋งํฌ์ผ ๊ฒฝ์šฐ ํ•ด๋‹น ์ƒํƒœ์— ๋งŒ์กฑํ•ฉ๋‹ˆ๋‹ค ์›น๋ธŒ๋ผ์šฐ์ €์˜ ๋ฐฉ๋ฌธ๊ธฐ๋ก ์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. a:visited { color: skyblue; } :disabled ๋น„ํ™œ์„ฑํ™” ๋œ ์š”์†Œ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค :hover ๋งˆ์šฐ์Šค ์ปค์„œ๋ฅผ ์š”์†Œ์— ์˜ฌ๋ ค๋‘์—ˆ์„ ๋•Œ button:hover { background: skyblue; } :focus focus ๋ฐ›์€ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค .btn:..

CSS ์ดˆ๊ธฐ ๊ฐ’ (initial value)

HTML๊ณผ CSS๋ฅผ ํ†ตํ•ด ํ™ˆํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค๋‹ค ๋ณด๋ฉด ๋‚ด๊ฐ€ ์›ํ•˜์ง€ ์•Š๋Š” ๊ณณ์— ํŒจ๋”ฉ๊ณผ ๋งˆ์ง„ ํ˜น์€ ๋†’์ด๊ฐ’์ด ๋“ค์–ด๊ฐ€ ์žˆ๋Š” ๊ฒฝํ—˜๋“ค์„ ๋งŽ์ด ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฐ ๊ฒฝํ—˜ ๋“ค์„ ํ•˜๋ฉด ๋ณดํ†ต์„ ๊ทธ๋ƒฅ ์ง€๋‚˜ ๊ฐ€๊ฑฐ๋‚˜ ๋ณ„ ์ƒ๊ฐ ์—†์ด ์ดˆ๊ธฐํ™”๋ฅผ ํ•ด์ฃผ๊ฒŒ ๋˜์ฃ . ์ €๋„ ๋ณ„์ƒ๊ฐ ์—†์ด ์ง€๋‚˜๊ฐ“๋˜ ๊ฒƒ๋“ค์ธ๋ฐ ์˜ค๋Š˜์€ ๋‹น์—ฐํ•˜๊ฒŒ ์ƒ๊ฐํ•˜์ง€ ์•Š๊ณ  ์ •๋ฆฌ๋ฅผ ํ•œ๋ฒˆ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‹น์—ฐํ•˜๊ฒŒ๋„ ๋ชจ๋“  ํ”„๋กœํผํ‹ฐ์— ๋Œ€ํ•ด ์ •๋ฆฌ ํ•  ์ˆ˜๋Š” ์—†์„ ๊ฒ๋‹ˆ๋‹ค. ํฌ๊ฒŒ initial value๊ฐ€ ๋ญ”์ง€ ๊ทธ๋ฆฌ๊ณ  initial value๋ฅผ ๋งž์ด ํ–ˆ์„ ๋–„ ์–ด๋–ป๊ฒŒ ๋Œ€์ฒ˜ํ•˜๊ณ  ๋˜ ์–ด๋–ค ๋•Œ ๋Œ€์ฒ˜ ํ•˜์ง€ ์•Š๋Š”์ง€์— ๋Œ€ํ•œ ์†Œ๊ฐœ๋ฅผ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. initial value๊ฐ€ ๋ญ˜๊นŒ? initial value๋ž€ ๋ง ๊ทธ๋Œ€๋กœ CSS์˜ ์ดˆ๊ธฐ ๊ฐ’์ž…๋‹ˆ๋‹ค. ๋ญ”์ง€ ์ด๋ฏธ์ง€๋ฅผ ํ†ตํ•ด์„œ ํ™•์ธํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์œ„์˜ ๋‘ ์ด๋ฏธ์ง€์˜ ์ฐจ์ด๊ฐ€ ๋ณด์ด์‹œ๋‚˜์š”?..

HTML & CSS flex ์ •๋ฆฌ

์›นํŽ˜์ด์ง€ ํ˜น์€ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ™”๋ฉด์„ ๋งŒ๋“ค๋•Œ ์šฐ๋ฆฌ๋Š” ์ˆ˜ํ‰์  ์š”์†Œ๋“ค์— ๋Œ€ํ•œ ๋ฐฐ์น˜๋ฅผ ํ• ๋•Œ ๊ณ ๋ฏผ์„ ํ•ฉ๋‹ˆ๋‹ค. float, grid, flex์ค‘์— ์–ด๋–ค ๊ฒƒ์„ ์‚ฌ์šฉํ• ์ง€์— ๋Œ€ํ•œ ๊ฒƒ์„ ๋ง์ด์ฃ . ์šฐ๋ฆฌ๊ฐ€ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ์š”์†Œ๋“ค ์˜ˆ๋ฅผ ๋“ค์–ด div, p, footer๋“ฑ์€ ๋ธ”๋Ÿญ์˜ ๊ฐœ๋…์œผ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์ด ์นœ๊ตฌ๋“ค์€ ๋ธ”๋Ÿญ์š”์†Œ๋กœ ํ™”๋ฉด์˜ width๋ฅผ ๋‹ค ์ฐจ์ง€ํ•ด ๋ฒ„๋ฆฝ๋‹ˆ๋‹ค. ์š”์†Œ๋“ค์„ ์˜†์— ๋‘์ง€ ์•Š๊ณ  ๋ฐ‘์—(?)๋‘์ฃ . ์ด๋Ÿฐ ๋น„ ์‚ฌ๊ต์ ์ธ ์นœ๊ตฌ๋“ค์„ ์‚ฌ๊ต์ ์œผ๋กœ ๋งŒ๋“ค์ˆ˜ ์žˆ๋Š” flex์— ๋Œ€ํ•œ ์„ค๋ช…์„ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด๋ฏธ์ง€์—์„œ ์ฃผ์ถ•๊ณผ ๊ต์ฐจ์ถ• flex-direction์ด ๋ณด์ด์‹œ๋‚˜์š”??? ์ด๊ฒƒ๋“ค์€ ํ™”๋ฉด์— ๋ณด์ด๋Š” ์ปจํ…Œ์ด๋„ˆ๋“ค ์ฆ‰ ์š”์†Œ๋“ค์„ ์–ด๋–ป๊ฒŒ ๋ฐฐ์น˜ํ•˜๋А๋ƒ์— ์ค‘์š”ํ•œ ํ‚ค์›Œ๋“œ ๋“ค์ž…๋‹ˆ๋‹ค. flex-direction ์ปจํ…Œ์ด๋„ˆ ๋‚ด ์•„์ดํ…œ์„ ๋ฐฐ์น˜ํ•  ๋•Œ ์ฃผ์ถ• ๋ฐ ๋ฐฉํ–ฅ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค..