๐ŸŒŸ ์ตœ์‹  ์›น ํ‘œ์ค€์œผ๋กœ ์ฟจ~ํ•˜๊ฒŒ ํ˜„๋Œ€์  ๋ ˆ์ด์•„์›ƒ ๋งˆ์Šคํ„ฐํ•˜๊ธฐ ๐ŸŒŸ

์ฝ˜ํ…์ธ  ๋Œ€ํ‘œ ์ด๋ฏธ์ง€ - ๐ŸŒŸ ์ตœ์‹  ์›น ํ‘œ์ค€์œผ๋กœ ์ฟจ~ํ•˜๊ฒŒ ํ˜„๋Œ€์  ๋ ˆ์ด์•„์›ƒ ๋งˆ์Šคํ„ฐํ•˜๊ธฐ ๐ŸŒŸ

 

 

์•ˆ๋…•ํ•˜์„ธ์š”, ์—ฌ๋Ÿฌ๋ถ„! ์˜ค๋Š˜์€ ์ •๋ง ํ•ซํ•œ ์ฃผ์ œ๋กœ ์ฐพ์•„์™”์–ด์š”. ๋ฐ”๋กœ '์ตœ์‹  ์›น ํ‘œ์ค€์„ ํ™œ์šฉํ•œ ํ˜„๋Œ€์  ๋ ˆ์ด์•„์›ƒ ๊ธฐ๋ฒ•'์— ๋Œ€ํ•ด ๊นŠ~๊ฒŒ ํŒŒํ—ค์ณ๋ณผ ๊ฑฐ์˜ˆ์š”. ์ด ์ฃผ์ œ, ์–ด๋ ต๊ฒŒ ๋“ค๋ฆฌ์‹œ๋‚˜์š”? ๊ฑฑ์ • ๋งˆ์„ธ์š”! ์ œ๊ฐ€ ์—ฌ๋Ÿฌ๋ถ„์˜ ๋ˆˆ๋†’์ด์— ๋งž์ถฐ ์‰ฝ๊ณ  ์žฌ๋ฏธ์žˆ๊ฒŒ ์„ค๋ช…ํ•ด๋“œ๋ฆด๊ฒŒ์š”. ๋งˆ์น˜ ์นดํ†ก์œผ๋กœ ์ˆ˜๋‹ค ๋– ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ์š”. ใ…‹ใ…‹ใ…‹

์š”์ฆ˜ ์›น ๊ฐœ๋ฐœ ํŠธ๋ Œ๋“œ๋Š” ์ง„์งœ ๋น ๋ฅด๊ฒŒ ๋ณ€ํ•˜๊ณ  ์žˆ์–ด์š”. ๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋„ ๊ณ„์† ๊ณต๋ถ€ํ•˜๊ณ  ์ƒˆ๋กœ์šด ๊ธฐ์ˆ ์„ ์ตํ˜€์•ผ ํ•ด์š”. ๊ทผ๋ฐ ์ด๊ฒŒ ์–ด๋ ต์ง€๋งŒ ์•Š๊ณ  ์žฌ๋ฏธ์žˆ๊ธฐ๋„ ํ•˜๋‹ต๋‹ˆ๋‹ค! ๐Ÿ˜Ž ํŠนํžˆ ์ตœ์‹  ์›น ํ‘œ์ค€์„ ํ™œ์šฉํ•˜๋ฉด, ์ •๋ง ๋ฉ‹์ง„ ๋ ˆ์ด์•„์›ƒ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์–ด์š”. ์—ฌ๋Ÿฌ๋ถ„๋„ ์ด ๊ธ€์„ ๋‹ค ์ฝ๊ณ  ๋‚˜๋ฉด '์™€~ ์ด๋Ÿฐ ๊ฒŒ ๊ฐ€๋Šฅํ•˜๊ตฌ๋‚˜!' ํ•˜๊ณ  ๊นœ์ง ๋†€๋ผ์‹ค ๊ฑฐ์˜ˆ์š”.

๊ทธ๋ฆฌ๊ณ  ์ด๋Ÿฐ ์ตœ์‹  ๊ธฐ์ˆ ๋“ค์„ ์ตํžˆ๋ฉด, ์—ฌ๋Ÿฌ๋ถ„์˜ ์›น ๊ฐœ๋ฐœ ์‹ค๋ ฅ์ด ์‘ฅ์‘ฅ ๋Š˜์–ด๋‚  ๊ฑฐ์˜ˆ์š”. ํ˜น์‹œ ์—ฌ๋Ÿฌ๋ถ„ ์ค‘์— ์ž์‹ ์˜ ์žฌ๋Šฅ์„ ๋‚˜๋ˆ„๊ณ  ์‹ถ์œผ์‹  ๋ถ„ ์žˆ๋‚˜์š”? ๊ทธ๋ ‡๋‹ค๋ฉด ์žฌ๋Šฅ๋„ท์ด๋ผ๋Š” ํ”Œ๋žซํผ์„ ์ถ”์ฒœํ•ด๋“œ๋ ค์š”. ๊ฑฐ๊ธฐ์„œ ์—ฌ๋Ÿฌ๋ถ„์˜ ์›น ๊ฐœ๋ฐœ ์‹ค๋ ฅ์„ ๋ฝ๋‚ด๊ณ , ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค๊ณผ ์žฌ๋Šฅ์„ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋‹ต๋‹ˆ๋‹ค!

์ž, ์ด์ œ ๋ณธ๊ฒฉ์ ์œผ๋กœ ์‹œ์ž‘ํ•ด๋ณผ๊นŒ์š”? ์ค€๋น„๋˜์…จ๋‚˜์š”? ๊ทธ๋Ÿผ ๊ณ ๊ณ ์”ฝ~! ๐Ÿš€

๐ŸŒˆ ์›น ํ‘œ์ค€์ด ๋ญ๊ธธ๋ž˜? ์™œ ์ค‘์š”ํ•œ๋ฐ?

๋จผ์ €, ์›น ํ‘œ์ค€์ด ๋ญ”์ง€ ์•Œ์•„๋ณผ๊นŒ์š”? ์‰ฝ๊ฒŒ ๋งํ•ด์„œ ์›น ํ‘œ์ค€์€ '์›น ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค ๋•Œ ์ง€์ผœ์•ผ ํ•˜๋Š” ์•ฝ์†'์ด์—์š”. ๋งˆ์น˜ ์šฐ๋ฆฌ๊ฐ€ ๋Œ€ํ™”ํ•  ๋•Œ ๋ฌธ๋ฒ•์„ ์ง€ํ‚ค๋Š” ๊ฒƒ์ฒ˜๋Ÿผ์š”. ์ด ์•ฝ์†์„ ์ž˜ ์ง€ํ‚ค๋ฉด ์–ด๋–ค ์žฅ์ ์ด ์žˆ์„๊นŒ์š”?

  • ๐Ÿ”น ๋ชจ๋“  ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋˜‘๊ฐ™์ด ๋ณด์—ฌ์š”. (ํฌ๋กฌ, ์‚ฌํŒŒ๋ฆฌ, ํŒŒ์ด์–ดํญ์Šค ๋“ฑ)
  • ๐Ÿ”น ๊ฒ€์ƒ‰ ์—”์ง„์ด ์šฐ๋ฆฌ ์›น์‚ฌ์ดํŠธ๋ฅผ ๋” ์ž˜ ์ดํ•ดํ•ด์š”. (SEO์— ์ข‹์•„์š”!)
  • ๐Ÿ”น ์ ‘๊ทผ์„ฑ์ด ์ข‹์•„์ ธ์„œ ๋ชจ๋“  ์‚ฌ๋žŒ์ด ์‰ฝ๊ฒŒ ์ด์šฉํ•  ์ˆ˜ ์žˆ์–ด์š”.
  • ๐Ÿ”น ์ฝ”๋“œ ๊ด€๋ฆฌ๊ฐ€ ์‰ฌ์›Œ์ ธ์š”. (๋‚˜์ค‘์— ์ˆ˜์ •ํ•  ๋•Œ ํŽธํ•ด์š”!)

์›น ํ‘œ์ค€์„ ์ง€ํ‚ค๋Š” ๊ฑด ๋งˆ์น˜ ๋ ˆ๊ณ  ๋ธ”๋ก์œผ๋กœ ์ง‘์„ ์ง“๋Š” ๊ฒƒ๊ณผ ๋น„์Šทํ•ด์š”. ๊ฐ ๋ธ”๋ก(HTML, CSS, JavaScript)์„ ์ œ๋Œ€๋กœ ๋œ ์œ„์น˜์— ๋†“์œผ๋ฉด, ํŠผํŠผํ•˜๊ณ  ๋ฉ‹์ง„ ์ง‘(์›น์‚ฌ์ดํŠธ)์ด ์™„์„ฑ๋˜๋Š” ๊ฑฐ์ฃ !

๐Ÿค” ์ž ๊น! ์—ฌ๊ธฐ์„œ ํ€ด์ฆˆ!

Q: ์›น ํ‘œ์ค€์„ ์ง€ํ‚ค๋ฉด ์–ด๋–ค ์ ์ด ์ข‹์„๊นŒ์š”?
A: 1) ๋ชจ๋“  ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋™์ผํ•˜๊ฒŒ ๋ณด์ž„ 2) SEO์— ์œ ๋ฆฌ 3) ์ ‘๊ทผ์„ฑ ํ–ฅ์ƒ 4) ์ฝ”๋“œ ๊ด€๋ฆฌ ์šฉ์ด

์ •๋‹ต์€ ๋‹ค ๋งž์•„์š”! ใ…‹ใ…‹ใ…‹ ์›น ํ‘œ์ค€ ์งฑ์งฑ๋งจ์ด๋„ค์š”~ ๐Ÿ‘

์ž, ์ด์ œ ์›น ํ‘œ์ค€์ด ๋ญ”์ง€ ์•Œ์•˜์œผ๋‹ˆ๊นŒ, ์ด๊ฑธ ํ™œ์šฉํ•ด์„œ ์–ด๋–ป๊ฒŒ ๋ฉ‹์ง„ ๋ ˆ์ด์•„์›ƒ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ์•„๋ณผ๊นŒ์š”? ์ค€๋น„๋˜์…จ๋‚˜์š”? ๋‹ค์Œ ์„น์…˜์œผ๋กœ ๊ณ ๊ณ ! ๐Ÿƒโ€โ™‚๏ธ๐Ÿ’จ

๐ŸŽจ ํ˜„๋Œ€์  ๋ ˆ์ด์•„์›ƒ์˜ ๋น„๋ฐ€ ๋ฌด๊ธฐ: Flexbox์™€ Grid

์—ฌ๋Ÿฌ๋ถ„, ํ˜น์‹œ ๋ ˆ๊ณ  ๋ธ”๋ก ๊ฐ€์ง€๊ณ  ๋†€์•„๋ณธ ์  ์žˆ์œผ์„ธ์š”? ๊ทธ๋Ÿผ Flexbox์™€ Grid๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šธ ๊ฑฐ์˜ˆ์š”! ์ด ๋‘ ๊ฐ€์ง€๋Š” ํ˜„๋Œ€์ ์ธ ์›น ๋ ˆ์ด์•„์›ƒ์„ ๋งŒ๋“œ๋Š” ๋ฐ ์—†์–ด์„œ๋Š” ์•ˆ ๋  ์ดˆ๊ฐ•๋ ฅ ๋น„๋ฐ€ ๋ฌด๊ธฐ๋ž๋‹ˆ๋‹ค. ๐Ÿ˜Ž

๐Ÿฆธโ€โ™‚๏ธ Flexbox: ์œ ์—ฐํ•œ ์Šˆํผํžˆ์–ด๋กœ

Flexbox๋Š” ๋ง ๊ทธ๋Œ€๋กœ '์œ ์—ฐํ•œ ๋ฐ•์Šค'์˜ˆ์š”. ์ด ๋…€์„์„ ์‚ฌ์šฉํ•˜๋ฉด ์š”์†Œ๋“ค์„ ์›ํ•˜๋Š” ๋Œ€๋กœ ๋Š˜์ด๊ณ  ์ค„์ด๊ณ , ์ •๋ ฌํ•˜๊ณ  ๋ฐฐ์น˜ํ•  ์ˆ˜ ์žˆ์–ด์š”. ๋งˆ์น˜ ๊ณ ๋ฌด์ค„์ฒ˜๋Ÿผ ๋Š˜์—ˆ๋‹ค ์ค„์—ˆ๋‹ค ํ•˜๋Š” ๊ฑฐ์ฃ !

Flexbox์˜ ์ฃผ์š” ํŠน์ง•:

  • ๐Ÿ”ธ ํ•œ ๋ฐฉํ–ฅ์œผ๋กœ ์š”์†Œ๋ฅผ ๋ฐฐ์น˜ํ•ด์š”. (๊ฐ€๋กœ ๋˜๋Š” ์„ธ๋กœ)
  • ๐Ÿ”ธ ์š”์†Œ์˜ ํฌ๊ธฐ๋ฅผ ์ž๋™์œผ๋กœ ์กฐ์ ˆํ•ด์ค˜์š”.
  • ๐Ÿ”ธ ์š”์†Œ๋“ค์„ ์‰ฝ๊ฒŒ ์ •๋ ฌํ•  ์ˆ˜ ์žˆ์–ด์š”.
  • ๐Ÿ”ธ ๋ชจ๋ฐ”์ผ ํ™˜๊ฒฝ์— ๋”ฑ์ด์—์š”!

Flexbox๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ„๋‹จํ•œ ์˜ˆ์ œ๋ฅผ ๋ณผ๊นŒ์š”?


.container {
  display: flex;
  justify-content: space-between;
  align-items: center;
}

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด container ์•ˆ์˜ ์š”์†Œ๋“ค์ด ๊ฐ€๋กœ๋กœ ๊ท ๋“ฑํ•˜๊ฒŒ ๋ฐฐ์น˜๋˜๊ณ , ์„ธ๋กœ๋กœ๋Š” ์ค‘์•™์— ์ •๋ ฌ๋ผ์š”. ์ฟจํ•˜์ฃ ? ๐Ÿ˜Ž

๐Ÿฆนโ€โ™€๏ธ Grid: 2์ฐจ์›์˜ ๋งˆ๋ฒ•์‚ฌ

Grid๋Š” Flexbox๋ณด๋‹ค ํ•œ ๋‹จ๊ณ„ ๋” ์ง„ํ™”ํ•œ ๋…€์„์ด์—์š”. ์ด๋ฆ„์—์„œ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด, ๊ฒฉ์ž ๋ชจ์–‘์œผ๋กœ ๋ ˆ์ด์•„์›ƒ์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์–ด์š”. 2์ฐจ์›(๊ฐ€๋กœ์™€ ์„ธ๋กœ)์œผ๋กœ ์š”์†Œ๋ฅผ ๋ฐฐ์น˜ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒŒ ๊ฐ€์žฅ ํฐ ํŠน์ง•์ด์ฃ .

Grid์˜ ์ฃผ์š” ํŠน์ง•:

  • ๐Ÿ”น ํ–‰๊ณผ ์—ด์„ ์ž์œ ๋กญ๊ฒŒ ์ •์˜ํ•  ์ˆ˜ ์žˆ์–ด์š”.
  • ๐Ÿ”น ๋ณต์žกํ•œ ๋ ˆ์ด์•„์›ƒ๋„ ์‰ฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์–ด์š”.
  • ๐Ÿ”น ๋ฐ˜์‘ํ˜• ๋””์ž์ธ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์ข‹์•„์š”.
  • ๐Ÿ”น ์š”์†Œ์˜ ์ˆœ์„œ๋ฅผ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์–ด์š”.

Grid๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ„๋‹จํ•œ ์˜ˆ์ œ๋ฅผ ๋ณผ๊นŒ์š”?


.container {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
}

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด 3๊ฐœ์˜ ์—ด์„ ๊ฐ€์ง„ ๊ทธ๋ฆฌ๋“œ๊ฐ€ ๋งŒ๋“ค์–ด์ง€๊ณ , ๊ฐ ์—ด์˜ ๋„ˆ๋น„๋Š” ๋™์ผํ•ด์š”. ๊ทธ๋ฆฌ๊ณ  ์š”์†Œ๋“ค ์‚ฌ์ด์— 20px์˜ ๊ฐ„๊ฒฉ์ด ์ƒ๊ฒจ์š”. ์™„์ „ ๊น”๋”ํ•˜์ฃ ? โœจ

๐Ÿ’ก ๊ฟ€ํŒ!

Flexbox์™€ Grid๋Š” ์„œ๋กœ ๊ฒฝ์Ÿ ๊ด€๊ณ„๊ฐ€ ์•„๋‹ˆ์—์š”. ์ƒํ™ฉ์— ๋”ฐ๋ผ ์ ์ ˆํžˆ ์„ž์–ด ์“ฐ๋ฉด ๋” ๋ฉ‹์ง„ ๋ ˆ์ด์•„์›ƒ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ „์ฒด ํŽ˜์ด์ง€ ๊ตฌ์กฐ๋Š” Grid๋กœ ์žก๊ณ , ๊ฐ ์„น์…˜ ๋‚ด๋ถ€๋Š” Flexbox๋กœ ์ •๋ ฌํ•˜๋Š” ์‹์œผ๋กœ์š”!

์ž, ์ด์ œ Flexbox์™€ Grid์˜ ๊ธฐ๋ณธ์„ ์•Œ์•˜์œผ๋‹ˆ, ์ด๊ฑธ ํ™œ์šฉํ•ด์„œ ์‹ค์ œ๋กœ ์–ด๋–ป๊ฒŒ ๋ฉ‹์ง„ ๋ ˆ์ด์•„์›ƒ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š”์ง€ ๋” ์ž์„ธํžˆ ์•Œ์•„๋ณผ๊นŒ์š”? ๋‹ค์Œ ์„น์…˜์—์„œ ๊ณ„์†๋ฉ๋‹ˆ๋‹ค! ๐Ÿš€

๐ŸŽญ Flexbox๋กœ ๋†€์•„๋ณด์ž! ์‹ค์ „ ์˜ˆ์ œ

์ž, ์ด์ œ Flexbox๋ฅผ ์‹ค์ œ๋กœ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์ž์„ธํžˆ ์•Œ์•„๋ณผ๊นŒ์š”? Flexbox๋Š” ์ •๋ง ๋‹ค์žฌ๋‹ค๋Šฅํ•ด์„œ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ƒํ™ฉ์—์„œ ์œ ์šฉํ•˜๊ฒŒ ์“ธ ์ˆ˜ ์žˆ์–ด์š”. ์˜ˆ๋ฅผ ๋“ค์–ด๋ณผ๊ฒŒ์š”!

1. ๋„ค๋น„๊ฒŒ์ด์…˜ ๋ฐ” ๋งŒ๋“ค๊ธฐ

์›น์‚ฌ์ดํŠธ์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ๋ณผ ์ˆ˜ ์žˆ๋Š” ์š”์†Œ ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋ฐ”๋กœ ๋„ค๋น„๊ฒŒ์ด์…˜ ๋ฐ”์ฃ . Flexbox๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์•„์ฃผ ์‰ฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์–ด์š”.


.nav {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 1rem;
  background-color: #333;
}

.nav-links {
  display: flex;
  gap: 1rem;
}

.nav-links a {
  color: white;
  text-decoration: none;
}

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋กœ๊ณ ๋Š” ์™ผ์ชฝ์—, ๋ฉ”๋‰ด ํ•ญ๋ชฉ๋“ค์€ ์˜ค๋ฅธ์ชฝ์— ๊น”๋”ํ•˜๊ฒŒ ์ •๋ ฌ๋œ ๋„ค๋น„๊ฒŒ์ด์…˜ ๋ฐ”๊ฐ€ ์™„์„ฑ๋ผ์š”. ์งฑ์ด์ฃ ? ๐Ÿ‘

2. ์นด๋“œ ๋ ˆ์ด์•„์›ƒ ๋งŒ๋“ค๊ธฐ

์š”์ฆ˜ ๋งŽ์ด ๋ณผ ์ˆ˜ ์žˆ๋Š” ์นด๋“œ ํ˜•ํƒœ์˜ ๋ ˆ์ด์•„์›ƒ๋„ Flexbox๋กœ ์‰ฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์–ด์š”.


.card-container {
  display: flex;
  flex-wrap: wrap;
  gap: 1rem;
}

.card {
  flex: 1 1 300px;
  padding: 1rem;
  border: 1px solid #ddd;
  border-radius: 8px;
}

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์นด๋“œ๋“ค์ด ํ•œ ์ค„์— ์—ฌ๋Ÿฌ ๊ฐœ์”ฉ ๋‚˜์˜ค๊ณ , ํ™”๋ฉด ํฌ๊ธฐ์— ๋”ฐ๋ผ ์ž๋™์œผ๋กœ ์ค„๋ฐ”๊ฟˆ๋„ ๋ผ์š”. ๋ฐ˜์‘ํ˜• ์›น์˜ ๊ธฐ๋ณธ์ด์ฃ !

3. ์„ผํ„ฐ๋ง์˜ ๋ํŒ์™•

์˜ˆ์ „์—๋Š” ์š”์†Œ๋ฅผ ์ˆ˜์ง, ์ˆ˜ํ‰ ๊ฐ€์šด๋ฐ ์ •๋ ฌํ•˜๋Š” ๊ฒŒ ์ •๋ง ์–ด๋ ค์› ์–ด์š”. ๊ทผ๋ฐ Flexbox๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์•„์ฃผ ์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ต๋‹ˆ๋‹ค!


.center-container {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 100vh;
}

.centered-item {
  /* ์›ํ•˜๋Š” ์Šคํƒ€์ผ ์ถ”๊ฐ€ */
}

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด centered-item์ด ํ™”๋ฉด ์ •์ค‘์•™์— ์œ„์น˜ํ•˜๊ฒŒ ๋ผ์š”. ์™„์ „ ์‰ฝ์ฃ ? ๐Ÿ˜†

๐ŸŽ‰ Flexbox ๊ฟ€ํŒ!

1. flex-grow, flex-shrink, flex-basis๋ฅผ ํ•œ ๋ฒˆ์— ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋Š” flex ์†์„ฑ์„ ํ™œ์šฉํ•˜์„ธ์š”.
2. flex-wrap: wrap;์„ ์‚ฌ์šฉํ•˜๋ฉด ์š”์†Œ๋“ค์ด ๋„˜์น  ๋•Œ ์ž๋™์œผ๋กœ ๋‹ค์Œ ์ค„๋กœ ๋„˜์–ด๊ฐ€์š”.
3. align-self๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐœ๋ณ„ ์š”์†Œ์˜ ์ •๋ ฌ์„ ๋”ฐ๋กœ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์–ด์š”.

Flexbox๋Š” ์ •๋ง ๊ฐ•๋ ฅํ•˜๊ณ  ์œ ์šฉํ•œ ๋„๊ตฌ์˜ˆ์š”. ์ด๊ฑธ ๋งˆ์Šคํ„ฐํ•˜๋ฉด ๋ ˆ์ด์•„์›ƒ ์ž‘์—…์ด ํ•œ๊ฒฐ ์ˆ˜์›”ํ•ด์งˆ ๊ฑฐ์˜ˆ์š”. ๊ทธ๋ฆฌ๊ณ  ์—ฌ๋Ÿฌ๋ถ„์˜ ์›น ๊ฐœ๋ฐœ ์‹ค๋ ฅ๋„ ํ•œ์ธต ์—…๊ทธ๋ ˆ์ด๋“œ๋  ๊ฑฐ๊ณ ์š”! ๐Ÿ˜Ž

ํ˜น์‹œ ์ด๋Ÿฐ ๋ฉ‹์ง„ ๊ธฐ์ˆ ์„ ๋ฐฐ์šฐ๊ณ  ๋‚˜์„œ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค๊ณผ ๋‚˜๋ˆ„๊ณ  ์‹ถ๋‹ค๋ฉด? ์žฌ๋Šฅ๋„ท์„ ํ•œ ๋ฒˆ ์ด์šฉํ•ด๋ณด๋Š” ๊ฑด ์–ด๋–จ๊นŒ์š”? ์—ฌ๋Ÿฌ๋ถ„์˜ Flexbox ์‹ค๋ ฅ์„ ๋ฝ๋‚ด๋ฉด์„œ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋„์›€์„ ์ค„ ์ˆ˜ ์žˆ์„ ๊ฑฐ์˜ˆ์š”!

์ž, ์ด์ œ Flexbox์— ๋Œ€ํ•ด ์ข€ ๋” ์ž์„ธํžˆ ์•Œ์•„๋ดค์œผ๋‹ˆ, ๋‹ค์Œ์€ Grid์˜ ์ฐจ๋ก€์˜ˆ์š”. Grid๋กœ ์–ด๋–ค ๋ฉ‹์ง„ ๋ ˆ์ด์•„์›ƒ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š”์ง€ ํ•จ๊ป˜ ์•Œ์•„๋ณผ๊นŒ์š”? ๋‹ค์Œ ์„น์…˜์—์„œ ๊ณ„์†๋ฉ๋‹ˆ๋‹ค! ๐Ÿš€

๐Ÿง™โ€โ™‚๏ธ Grid์˜ ๋งˆ๋ฒ•์œผ๋กœ ๋ ˆ์ด์•„์›ƒ ๋Œ€๋ณ€์‹ !

์—ฌ๋Ÿฌ๋ถ„, ์ด์ œ Grid์˜ ์„ธ๊ณ„๋กœ ๋“ค์–ด๊ฐ€๋ณผ ์‹œ๊ฐ„์ด์—์š”! Grid๋Š” ์ •๋ง ๊ฐ•๋ ฅํ•œ ๋„๊ตฌ๋ผ์„œ, ์ด๊ฑธ ๋งˆ์Šคํ„ฐํ•˜๋ฉด ์—ฌ๋Ÿฌ๋ถ„์€ ์ง„์ •ํ•œ ๋ ˆ์ด์•„์›ƒ ๋งˆ๋ฒ•์‚ฌ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ต๋‹ˆ๋‹ค. ๐Ÿง™โ€โ™‚๏ธโœจ ์ž, ๊ทธ๋Ÿผ Grid๋กœ ์–ด๋–ค ๋ฉ‹์ง„ ๊ฒƒ๋“ค์„ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ์•„๋ณผ๊นŒ์š”?

1. ์ „์ฒด ํŽ˜์ด์ง€ ๋ ˆ์ด์•„์›ƒ ๋งŒ๋“ค๊ธฐ

Grid๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ „์ฒด ํŽ˜์ด์ง€ ๋ ˆ์ด์•„์›ƒ์„ ์•„์ฃผ ์‰ฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์–ด์š”. ํ—ค๋”, ๋ฉ”์ธ ์ฝ˜ํ…์ธ , ์‚ฌ์ด๋“œ๋ฐ”, ํ‘ธํ„ฐ ๋“ฑ์„ ํ•œ ๋ฒˆ์— ๋ฐฐ์น˜ํ•  ์ˆ˜ ์žˆ์ฃ .


body {
  display: grid;
  grid-template-areas: 
    "header header header"
    "nav main aside"
    "footer footer footer";
  grid-template-columns: 200px 1fr 200px;
  grid-template-rows: auto 1fr auto;
  min-height: 100vh;
}

header { grid-area: header; }
nav { grid-area: nav; }
main { grid-area: main; }
aside { grid-area: aside; }
footer { grid-area: footer; }

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ „์ฒด ํŽ˜์ด์ง€ ๊ตฌ์กฐ๊ฐ€ ํ•œ ๋ฒˆ์— ์žกํ˜€์š”. ์™„์ „ ๊น”๋”ํ•˜์ฃ ? ๐Ÿ˜Ž

2. ๊ฐค๋Ÿฌ๋ฆฌ ๋ ˆ์ด์•„์›ƒ ๋งŒ๋“ค๊ธฐ

Grid๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค์–‘ํ•œ ํฌ๊ธฐ์˜ ์ด๋ฏธ์ง€๋กœ ๊ตฌ์„ฑ๋œ ๊ฐค๋Ÿฌ๋ฆฌ๋„ ์‰ฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์–ด์š”.


.gallery {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 1rem;
}

.gallery-item {
  /* ์›ํ•˜๋Š” ์Šคํƒ€์ผ ์ถ”๊ฐ€ */
}

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ํ™”๋ฉด ํฌ๊ธฐ์— ๋”ฐ๋ผ ์ž๋™์œผ๋กœ ์—ด ์ˆ˜๊ฐ€ ์กฐ์ ˆ๋˜๋Š” ๋ฐ˜์‘ํ˜• ๊ฐค๋Ÿฌ๋ฆฌ๊ฐ€ ์™„์„ฑ๋ผ์š”. ๐Ÿ‘

3. ๋ณต์žกํ•œ ๋Œ€์‹œ๋ณด๋“œ ๋ ˆ์ด์•„์›ƒ

Grid์˜ ์ง„๊ฐ€๋Š” ๋ณต์žกํ•œ ๋ ˆ์ด์•„์›ƒ์—์„œ ๋”์šฑ ๋น›์„ ๋ฐœํ•ด์š”. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋Œ€์‹œ๋ณด๋“œ ๊ฐ™์€ ๋ณต์žกํ•œ ๊ตฌ์กฐ๋„ Grid๋กœ ์‰ฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ต๋‹ˆ๋‹ค.


.dashboard {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  grid-template-rows: repeat(3, auto);
  gap: 1rem;
}

.widget-large {
  grid-column: span 2;
  grid-row: span 2;
}

.widget-medium {
  grid-column: span 2;
}

.widget-small {
  grid-column: span 1;
}

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋‹ค์–‘ํ•œ ํฌ๊ธฐ์˜ ์œ„์ ฏ๋“ค๋กœ ๊ตฌ์„ฑ๋œ ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์–ด์š”. ๊ฐ ์œ„์ ฏ์˜ ํฌ๊ธฐ์™€ ์œ„์น˜๋ฅผ ์ž์œ ๋กญ๊ฒŒ ์กฐ์ ˆํ•  ์ˆ˜ ์žˆ์ฃ !

๐ŸŒŸ Grid ๊ฟ€ํŒ!

1. fr ๋‹จ์œ„๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋‚จ์€ ๊ณต๊ฐ„์„ ๋น„์œจ๋Œ€๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์–ด์š”.
2. minmax() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ตœ์†Œ, ์ตœ๋Œ€ ํฌ๊ธฐ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์–ด์š”.
3. auto-fit๊ณผ auto-fill์„ ํ™œ์šฉํ•˜๋ฉด ๋ฐ˜์‘ํ˜• ๊ทธ๋ฆฌ๋“œ๋ฅผ ์‰ฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์–ด์š”.
4. grid-template-areas๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ ˆ์ด์•„์›ƒ์„ ์‹œ๊ฐ์ ์œผ๋กœ ๋””์ž์ธํ•  ์ˆ˜ ์žˆ์–ด์š”.

Grid๋Š” ์ •๋ง ๊ฐ•๋ ฅํ•˜๊ณ  ์œ ์—ฐํ•ด์„œ, ์—ฌ๋Ÿฌ๋ถ„์˜ ์ƒ์ƒ๋ ฅ์„ ๋งˆ์Œ๊ป ํŽผ์น  ์ˆ˜ ์žˆ์–ด์š”. ๋ณต์žกํ•œ ๋ ˆ์ด์•„์›ƒ๋„ Grid๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ •๋ง ์‰ฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ต๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๋ถ„๋„ ์ด์ œ Grid ๋งˆ๋ฒ•์‚ฌ๊ฐ€ ๋œ ๊ฒƒ ๊ฐ™์€ ๊ธฐ๋ถ„์ด ๋“ค์ง€ ์•Š๋‚˜์š”? ใ…‹ใ…‹ใ…‹

๊ทธ๋ฆฌ๊ณ  ์ด๋ ‡๊ฒŒ ๋ฉ‹์ง„ Grid ๊ธฐ์ˆ ์„ ๋ฐฐ์› ์œผ๋‹ˆ, ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค๊ณผ ๋‚˜๋ˆ„๋Š” ๊ฒƒ๋„ ์ข‹์„ ๊ฒƒ ๊ฐ™์•„์š”. ์žฌ๋Šฅ๋„ท์—์„œ ์—ฌ๋Ÿฌ๋ถ„์˜ Grid ์‹ค๋ ฅ์„ ๋ฝ๋‚ด๋ณด๋Š” ๊ฑด ์–ด๋–จ๊นŒ์š”? ๋ˆ„๊ตฐ๊ฐ€์—๊ฒŒ๋Š” ์ •๋ง ์†Œ์ค‘ํ•œ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์„ ๊ฑฐ์˜ˆ์š”! ๐Ÿ’–

์ž, ์ด์ œ Flexbox์™€ Grid์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ดค์–ด์š”. ํ•˜์ง€๋งŒ ์ด๊ฒŒ ๋์ด ์•„๋‹ˆ์—์š”! ๋‹ค์Œ ์„น์…˜์—์„œ๋Š” ์ด ๋‘ ๊ฐ€์ง€๋ฅผ ์–ด๋–ป๊ฒŒ ์กฐํ•ฉํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ  ๋” ๋‚˜์•„๊ฐ€ ์ตœ์‹  CSS ๊ธฐ๋Šฅ๋“ค์€ ์–ด๋–ค ๊ฒƒ๋“ค์ด ์žˆ๋Š”์ง€ ์•Œ์•„๋ณผ ๊ฑฐ์˜ˆ์š”. ๊ณ„์† ๋”ฐ๋ผ์˜ค์„ธ์š”! ๐Ÿš€

๐ŸŽญ Flexbox์™€ Grid์˜ ํ™˜์ƒ์˜ ์ฝœ๋ผ๋ณด!

์—ฌ๋Ÿฌ๋ถ„, ์ง€๊ธˆ๊นŒ์ง€ Flexbox์™€ Grid์— ๋Œ€ํ•ด ๊ฐ๊ฐ ์•Œ์•„๋ดค๋Š”๋ฐ์š”. ์ด์ œ ์ด ๋‘˜์„ ์–ด๋–ป๊ฒŒ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉด ์ข‹์„์ง€ ์•Œ์•„๋ณผ ์ฐจ๋ก€์˜ˆ์š”! ์ด ๋‘ ๊ฐ€์ง€๋ฅผ ์ž˜ ์กฐํ•ฉํ•˜๋ฉด ์ •๋ง ๋ฉ‹์ง„ ๋ ˆ์ด์•„์›ƒ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ต๋‹ˆ๋‹ค. ๋งˆ์น˜ ์•„์ด์Šคํฌ๋ฆผ์— ์ดˆ์ฝœ๋ฆฟ ์‹œ๋Ÿฝ์„ ๋ฟŒ๋ฆฌ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ์š”! ๐Ÿฆ๐Ÿซ

1. ์ „์ฒด ๊ตฌ์กฐ๋Š” Grid, ๋‚ด๋ถ€๋Š” Flexbox

๊ฐ€์žฅ ํ”ํ•œ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๋Š” ์ „์ฒด ํŽ˜์ด์ง€ ๊ตฌ์กฐ๋Š” Grid๋กœ ์žก๊ณ , ๊ฐ ์„น์…˜ ๋‚ด๋ถ€์˜ ์š”์†Œ ๋ฐฐ์น˜๋Š” Flexbox๋กœ ํ•˜๋Š” ๊ฑฐ์˜ˆ์š”.


body {
  display: grid;
  grid-template-areas: 
    "header header"
    "main aside"
    "footer footer";
  grid-template-columns: 1fr 300px;
  grid-template-rows: auto 1fr auto;
  min-height: 100vh;
}

header, main, aside, footer {
  display: flex;
  /* ๊ฐ ์„น์…˜์— ๋งž๋Š” flex ์†์„ฑ ์ถ”๊ฐ€ */
}

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ „์ฒด์ ์ธ ๊ตฌ์กฐ๋Š” Grid๋กœ ๊น”๋”ํ•˜๊ฒŒ ์žกํžˆ๊ณ , ๊ฐ ์„น์…˜ ๋‚ด๋ถ€๋Š” Flexbox๋กœ ์œ ์—ฐํ•˜๊ฒŒ ๋ฐฐ์น˜ํ•  ์ˆ˜ ์žˆ์–ด์š”. ์™„์ „ ์ฐฐ๋–ก๊ถํ•ฉ์ด์ฃ ? ๐Ÿ‘

2. ์นด๋“œ ๋ ˆ์ด์•„์›ƒ์˜ ์ง„ํ™”

์นด๋“œ ๋ ˆ์ด์•„์›ƒ์„ ๋งŒ๋“ค ๋•Œ Grid์™€ Flexbox๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉด ๋”์šฑ ๋ฉ‹์ง„ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์–ด์š”.


.card-container {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: 1rem;
}

.card {
  display: flex;
  flex-direction: column;
  /* ์นด๋“œ ๋‚ด๋ถ€ ์Šคํƒ€์ผ */
}

.card-content {
  flex: 1;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
}

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์นด๋“œ์˜ ์ „์ฒด์ ์ธ ๋ฐฐ์น˜๋Š” Grid๋กœ ํ•˜๊ณ , ๊ฐ ์นด๋“œ ๋‚ด๋ถ€์˜ ์š”์†Œ ๋ฐฐ์น˜๋Š” Flexbox๋กœ ํ•  ์ˆ˜ ์žˆ์–ด์š”. ์นด๋“œ์˜ ๋†’์ด๊ฐ€ ๋‹ฌ๋ผ๋„ ๊น”๋”ํ•˜๊ฒŒ ์ •๋ ฌ๋˜์ฃ !

3. ๋ฐ˜์‘ํ˜• ๋‚ด๋น„๊ฒŒ์ด์…˜ ๋ฐ”

Grid์™€ Flexbox๋ฅผ ์กฐํ•ฉํ•ด ๋ฐ˜์‘ํ˜• ๋‚ด๋น„๊ฒŒ์ด์…˜ ๋ฐ”๋ฅผ ๋งŒ๋“ค ์ˆ˜๋„ ์žˆ์–ด์š”.


.nav {
  display: grid;
  grid-template-columns: auto 1fr;
  align-items: center;
}

.nav-links {
  display: flex;
  justify-content: flex-end;
  gap: 1rem;
}

@media (max-width: 768px) {
  .nav {
    grid-template-columns: 1fr;
  }
  
  .nav-links {
    flex-direction: column;
    align-items: center;
  }
}

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ํฐ ํ™”๋ฉด์—์„œ๋Š” ๊ฐ€๋กœ๋กœ, ์ž‘์€ ํ™”๋ฉด์—์„œ๋Š” ์„ธ๋กœ๋กœ ๋ฐฐ์น˜๋˜๋Š” ๋ฐ˜์‘ํ˜• ๋‚ด๋น„๊ฒŒ์ด์…˜ ๋ฐ”๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์–ด์š”. ์™„์ „ ์ฟจํ•˜์ฃ ? ๐Ÿ˜Ž

๐Ÿ’ก ์ฝœ๋ผ๋ณด ๊ฟ€ํŒ!

1. Grid๋Š” ํฐ ๊ตฌ์กฐ๋ฅผ, Flexbox๋Š” ์ž‘์€ ์š”์†Œ๋“ค์˜ ๋ฐฐ์น˜๋ฅผ ๋‹ด๋‹นํ•˜๊ฒŒ ํ•˜์„ธ์š”.
2. ๋ฐ˜์‘ํ˜• ๋””์ž์ธ์„ ๋งŒ๋“ค ๋•Œ Grid์™€ Flexbox๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉด ๋”์šฑ ์œ ์—ฐํ•œ ๋ ˆ์ด์•„์›ƒ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์–ด์š”.
3. Grid์˜ auto-fit๊ณผ Flexbox์˜ flex-grow๋ฅผ ์กฐํ•ฉํ•˜๋ฉด ๋‹ค์–‘ํ•œ ํ™”๋ฉด ํฌ๊ธฐ์— ์™„๋ฒฝํ•˜๊ฒŒ ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ์–ด์š”.

์ด๋ ‡๊ฒŒ Grid์™€ Flex box๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉด ์ •๋ง ๋ฌด๊ถ๋ฌด์ง„ํ•œ ๋ ˆ์ด์•„์›ƒ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์–ด์š”. ๋งˆ์น˜ ๋ ˆ๊ณ  ๋ธ”๋ก์ฒ˜๋Ÿผ ์ด ๋‘ ๊ฐ€์ง€๋ฅผ ์กฐํ•ฉํ•ด ์—ฌ๋Ÿฌ๋ถ„๋งŒ์˜ ๋…ํŠนํ•œ ๋””์ž์ธ์„ ๋งŒ๋“ค์–ด๋ณด์„ธ์š”! ๐Ÿ—๏ธ

๊ทธ๋ฆฌ๊ณ  ์ด๋Ÿฐ ๋ฉ‹์ง„ ๊ธฐ์ˆ ๋“ค์„ ๋ฐฐ์› ์œผ๋‹ˆ, ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค๊ณผ ๋‚˜๋ˆ„๋Š” ๊ฒƒ๋„ ์ข‹์„ ๊ฒƒ ๊ฐ™์•„์š”. ์žฌ๋Šฅ๋„ท์—์„œ ์—ฌ๋Ÿฌ๋ถ„์˜ Grid์™€ Flexbox ์ฝœ๋ผ๋ณด ์‹ค๋ ฅ์„ ๋ฝ๋‚ด๋ณด๋Š” ๊ฑด ์–ด๋–จ๊นŒ์š”? ๋ˆ„๊ตฐ๊ฐ€์—๊ฒŒ๋Š” ์ •๋ง ์†Œ์ค‘ํ•œ ์˜๊ฐ์ด ๋  ์ˆ˜ ์žˆ์„ ๊ฑฐ์˜ˆ์š”! ๐Ÿ’–

์ž, ์ด์ œ Grid์™€ Flexbox๋ฅผ ์กฐํ•ฉํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•๊นŒ์ง€ ์•Œ์•„๋ดค์–ด์š”. ํ•˜์ง€๋งŒ ์›น ํ‘œ์ค€๊ณผ ํ˜„๋Œ€์  ๋ ˆ์ด์•„์›ƒ์˜ ์„ธ๊ณ„๋Š” ์—ฌ๊ธฐ์„œ ๋์ด ์•„๋‹ˆ์—์š”! ๋‹ค์Œ ์„น์…˜์—์„œ๋Š” ์ตœ์‹  CSS ๊ธฐ๋Šฅ๋“ค๊ณผ ์•ž์œผ๋กœ์˜ ํŠธ๋ Œ๋“œ์— ๋Œ€ํ•ด ์•Œ์•„๋ณผ ๊ฑฐ์˜ˆ์š”. ๊ณ„์† ๋”ฐ๋ผ์˜ค์„ธ์š”! ๐Ÿš€

๐Ÿš€ ๋ฏธ๋ž˜๋ฅผ ํ–ฅํ•œ ์—ฌ์ •: ์ตœ์‹  CSS ๊ธฐ๋Šฅ๊ณผ ํŠธ๋ Œ๋“œ

์—ฌ๋Ÿฌ๋ถ„, ์ง€๊ธˆ๊นŒ์ง€ ๋ฐฐ์šด ๊ฒƒ๋“ค๋กœ๋„ ์ถฉ๋ถ„ํžˆ ๋ฉ‹์ง„ ์›น์‚ฌ์ดํŠธ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์–ด์š”. ํ•˜์ง€๋งŒ ์›น ๊ธฐ์ˆ ์˜ ์„ธ๊ณ„๋Š” ๊ณ„์†ํ•ด์„œ ๋ฐœ์ „ํ•˜๊ณ  ์žˆ์ฃ . ๊ทธ๋ž˜์„œ ์ด๋ฒˆ์—๋Š” ์ตœ์‹  CSS ๊ธฐ๋Šฅ๋“ค๊ณผ ์•ž์œผ๋กœ์˜ ํŠธ๋ Œ๋“œ์— ๋Œ€ํ•ด ์•Œ์•„๋ณผ ๊ฑฐ์˜ˆ์š”. ์ค€๋น„๋˜์…จ๋‚˜์š”? ๋ฏธ๋ž˜๋กœ ๋– ๋‚˜๋ณผ๊นŒ์š”? ๐Ÿš€

1. CSS ๋ณ€์ˆ˜ (Custom Properties)

CSS ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์Šคํƒ€์ผ์„ ๋”์šฑ ๋™์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด์š”. ๋งˆ์น˜ JavaScript์ฒ˜๋Ÿผ์š”!


:root {
  --main-color: #00CED1;
  --font-size: 16px;
}

body {
  color: var(--main-color);
  font-size: var(--font-size);
}

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ƒ‰์ƒ์ด๋‚˜ ํฌ๊ธฐ๋ฅผ ํ•œ ๊ณณ์—์„œ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ํ›จ์”ฌ ์‰ฌ์›Œ์ ธ์š”. ๊ฒŒ๋‹ค๊ฐ€ JavaScript๋กœ ์ด ๋ณ€์ˆ˜๋“ค์„ ์กฐ์ž‘ํ•  ์ˆ˜๋„ ์žˆ๋‹ต๋‹ˆ๋‹ค!

2. CSS Subgrid

Subgrid๋Š” Grid ์•ˆ์— Grid๋ฅผ ๋งŒ๋“ค ๋•Œ ๋ถ€๋ชจ Grid์˜ ํŠธ๋ž™ ํฌ๊ธฐ๋ฅผ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ์ด์—์š”.


.parent-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
}

.child-grid {
  grid-column: 1 / -1;
  display: grid;
  grid-template-columns: subgrid;
}

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋ณต์žกํ•œ ๋ ˆ์ด์•„์›ƒ๋„ ๋”์šฑ ์‰ฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์–ด์š”. ์•„์ง ๋ชจ๋“  ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ง€์›ํ•˜์ง€๋Š” ์•Š์ง€๋งŒ, ๊ณง ๋„๋ฆฌ ์‚ฌ์šฉ๋  ๊ฑฐ์˜ˆ์š”!

3. CSS Houdini

CSS Houdini๋Š” ๋ธŒ๋ผ์šฐ์ €์˜ ๋ Œ๋”๋ง ์—”์ง„์— ์ง์ ‘ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ์ƒˆ๋กœ์šด ๊ธฐ์ˆ ์ด์—์š”. ์ด๋ฅผ ํ†ตํ•ด ์™„์ „ํžˆ ์ƒˆ๋กœ์šด CSS ๊ธฐ๋Šฅ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์ฃ !


CSS.paintWorklet.addModule('myPaintWorklet.js');

.element {
  background-image: paint(myCustomPaint);
}

์ด๋Ÿฐ ์‹์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์š”. ์•„์ง์€ ์กฐ๊ธˆ ์–ด๋ ค์šธ ์ˆ˜ ์žˆ์ง€๋งŒ, ์•ž์œผ๋กœ ์ •๋ง ํฅ๋ฏธ๋กœ์šด ๊ฐ€๋Šฅ์„ฑ์„ ์ œ๊ณตํ•  ๊ฑฐ์˜ˆ์š”!

4. CSS Scroll Snap

์Šคํฌ๋กค ์Šค๋ƒ…์„ ์‚ฌ์šฉํ•˜๋ฉด ์Šคํฌ๋กค ์œ„์น˜๋ฅผ ํŠน์ • ์ง€์ ์— '์Šค๋ƒ…'ํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ์–ด์š”. ๋ชจ๋ฐ”์ผ์—์„œ ํŠนํžˆ ์œ ์šฉํ•˜์ฃ !


.container {
  scroll-snap-type: y mandatory;
}

.item {
  scroll-snap-align: start;
}

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์Šคํฌ๋กคํ•  ๋•Œ ๊ฐ ์•„์ดํ…œ์— ๋”ฑ๋”ฑ ๊ฑธ๋ฆฌ๋Š” ํšจ๊ณผ๋ฅผ ์ค„ ์ˆ˜ ์žˆ์–ด์š”. ์™„์ „ ์ฟจํ•˜์ฃ ? ๐Ÿ˜Ž

๐Ÿ”ฎ ๋ฏธ๋ž˜ ํŠธ๋ Œ๋“œ ์˜ˆ์ธก!

1. ๋‹คํฌ ๋ชจ๋“œ๊ฐ€ ๋”์šฑ ๋ณดํŽธํ™”๋  ๊ฑฐ์˜ˆ์š”. CSS ๋ณ€์ˆ˜๋ฅผ ํ™œ์šฉํ•˜๋ฉด ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์ฃ !
2. ์• ๋‹ˆ๋ฉ”์ด์…˜๊ณผ ์ „ํ™˜ ํšจ๊ณผ๊ฐ€ ๋”์šฑ ์ค‘์š”ํ•ด์งˆ ๊ฑฐ์˜ˆ์š”. ์„ฑ๋Šฅ์„ ๊ณ ๋ คํ•œ ์ตœ์ ํ™”๊ฐ€ ํ•„์š”ํ•  ๊ฑฐ์˜ˆ์š”.
3. ๋ฐ˜์‘ํ˜•์„ ๋„˜์–ด '์ ์‘ํ˜•' ๋””์ž์ธ์ด ํŠธ๋ Œ๋“œ๊ฐ€ ๋  ๊ฑฐ์˜ˆ์š”. ์‚ฌ์šฉ์ž์˜ ๊ธฐ๊ธฐ๋‚˜ ์„ ํ˜ธ๋„์— ๋”ฐ๋ผ ์™„์ „ํžˆ ๋‹ค๋ฅธ ๋ ˆ์ด์•„์›ƒ์„ ์ œ๊ณตํ•˜๋Š” ๊ฑฐ์ฃ .
4. ์ ‘๊ทผ์„ฑ์ด ๋”์šฑ ์ค‘์š”ํ•ด์งˆ ๊ฑฐ์˜ˆ์š”. ๋ชจ๋“  ์‚ฌ์šฉ์ž๊ฐ€ ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์›น์‚ฌ์ดํŠธ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒŒ ํ•„์ˆ˜๊ฐ€ ๋  ๊ฑฐ์˜ˆ์š”.

์™€~ ์ •๋ง ํฅ๋ฏธ์ง„์ง„ํ•˜์ฃ ? ์ด๋Ÿฐ ์ƒˆ๋กœ์šด ๊ธฐ์ˆ ๋“ค์„ ๋ฐฐ์šฐ๊ณ  ์ ์šฉํ•˜๋‹ค ๋ณด๋ฉด ์—ฌ๋Ÿฌ๋ถ„์˜ ์›น ๊ฐœ๋ฐœ ์‹ค๋ ฅ์€ ํ•˜๋Š˜์„ ์ฐŒ๋ฅผ ๊ฑฐ์˜ˆ์š”! ๐Ÿš€

๊ทธ๋ฆฌ๊ณ  ์ด๋ ‡๊ฒŒ ์ตœ์‹  ํŠธ๋ Œ๋“œ๋ฅผ ์ตํžˆ๊ณ  ๋‚˜๋ฉด, ์—ฌ๋Ÿฌ๋ถ„์˜ ์ง€์‹์„ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค๊ณผ ๋‚˜๋ˆ„๋Š” ๊ฒƒ๋„ ์ข‹์„ ๊ฒƒ ๊ฐ™์•„์š”. ์žฌ๋Šฅ๋„ท์—์„œ ์ตœ์‹  CSS ๊ธฐ์ˆ ์— ๋Œ€ํ•œ ๊ฐ•์˜๋ฅผ ๊ฐœ์„คํ•ด๋ณด๋Š” ๊ฑด ์–ด๋–จ๊นŒ์š”? ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์„ ๊ฑฐ์˜ˆ์š”! ๐Ÿ’–

์ž, ์ด์ œ ์šฐ๋ฆฌ์˜ ์—ฌ์ •์ด ๊ฑฐ์˜ ๋๋‚˜๊ฐ€๊ณ  ์žˆ์–ด์š”. ๋งˆ์ง€๋ง‰ ์„น์…˜์—์„œ๋Š” ์ง€๊ธˆ๊นŒ์ง€ ๋ฐฐ์šด ๋ชจ๋“  ๊ฒƒ์„ ์ข…ํ•ฉํ•ด์„œ ์‹ค์ œ ํ”„๋กœ์ ํŠธ์— ์–ด๋–ป๊ฒŒ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ์•„๋ณผ ๊ฑฐ์˜ˆ์š”. ๋๊นŒ์ง€ ํ•จ๊ป˜ํ•ด์š”! ๐Ÿ

๐Ÿ† ๋Œ€๋‹จ์›์˜ ๋: ์‹ค์ „ ํ”„๋กœ์ ํŠธ ์ ์šฉํ•˜๊ธฐ

์—ฌ๋Ÿฌ๋ถ„, ์ •๋ง ๋Œ€๋‹จํ•ด์š”! ์ง€๊ธˆ๊นŒ์ง€ ๊ธด ์—ฌ์ •์„ ํ•จ๊ป˜ ํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ด์ œ ์šฐ๋ฆฌ๊ฐ€ ๋ฐฐ์šด ๋ชจ๋“  ๊ฒƒ์„ ์ข…ํ•ฉํ•ด์„œ ์‹ค์ œ ํ”„๋กœ์ ํŠธ์— ์–ด๋–ป๊ฒŒ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ์•„๋ณผ ์ฐจ๋ก€์˜ˆ์š”. ์ค€๋น„๋˜์…จ๋‚˜์š”? ๋งˆ์ง€๋ง‰ ์ŠคํผํŠธ ํ•œ ๋ฒˆ ํ•ด๋ณผ๊นŒ์š”? ๐Ÿ’ช

1. ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ ์žก๊ธฐ

๋จผ์ € ์ „์ฒด ํ”„๋กœ์ ํŠธ์˜ ๊ตฌ์กฐ๋ฅผ Grid๋กœ ์žก์•„๋ณผ๊ฒŒ์š”.


body {
  display: grid;
  grid-template-areas:
    "header header header"
    "nav main aside"
    "footer footer footer";
  grid-template-columns: 200px 1fr 200px;
  grid-template-rows: auto 1fr auto;
  min-height: 100vh;
}

header { grid-area: header; }
nav { grid-area: nav; }
main { grid-area: main; }
aside { grid-area: aside; }
footer { grid-area: footer; }

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ „์ฒด์ ์ธ ๋ ˆ์ด์•„์›ƒ์ด ๊น”๋”ํ•˜๊ฒŒ ์žกํžˆ์ฃ ?

2. ์ปดํฌ๋„ŒํŠธ ๋””์ž์ธํ•˜๊ธฐ

์ด์ œ ๊ฐ ์„น์…˜ ๋‚ด๋ถ€๋ฅผ Flexbox๋กœ ๋””์ž์ธํ•ด๋ณผ๊ฒŒ์š”.


header, footer {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 1rem;
}

nav ul {
  display: flex;
  flex-direction: column;
  gap: 1rem;
}

main {
  display: flex;
  flex-wrap: wrap;
  gap: 1rem;
}

.card {
  flex: 1 1 300px;
  display: flex;
  flex-direction: column;
}

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๊ฐ ์„น์…˜์ด ๊น”๋”ํ•˜๊ณ  ์œ ์—ฐํ•˜๊ฒŒ ์ •๋ ฌ๋˜์ฃ !

3. ๋ฐ˜์‘ํ˜• ๋””์ž์ธ ์ ์šฉํ•˜๊ธฐ

์ด์ œ ๋ฏธ๋””์–ด ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ด ๋ฐ˜์‘ํ˜•์œผ๋กœ ๋งŒ๋“ค์–ด๋ณผ๊ฒŒ์š”.


@media (max-width: 768px) {
  body {
    grid-template-areas:
      "header"
      "nav"
      "main"
      "aside"
      "footer";
    grid-template-columns: 1fr;
  }

  nav ul {
    flex-direction: row;
    justify-content: center;
  }
}

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ํ™”๋ฉด ํฌ๊ธฐ๊ฐ€ ์ž‘์•„์กŒ์„ ๋•Œ ๋ ˆ์ด์•„์›ƒ์ด ์ž๋™์œผ๋กœ ์กฐ์ •๋ผ์š”!

4. ์ตœ์‹  ๊ธฐ๋Šฅ ์ถ”๊ฐ€ํ•˜๊ธฐ

๋งˆ์ง€๋ง‰์œผ๋กœ CSS ๋ณ€์ˆ˜์™€ ์Šคํฌ๋กค ์Šค๋ƒ… ๊ฐ™์€ ์ตœ์‹  ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•ด๋ณผ๊ฒŒ์š”.


:root {
  --main-color: #DAA520;
  --bg-color: #fafad2;
}

body {
  color: var(--main-color);
  background-color: var(--bg-color);
}

main {
  scroll-snap-type: y mandatory;
}

.card {
  scroll-snap-align: start;
}

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ํ…Œ๋งˆ ๋ณ€๊ฒฝ๋„ ์‰ฝ๊ณ , ์Šคํฌ๋กค๋„ ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ์–ด์š”!

๐ŸŒŸ ์ตœ์ข… ๊ฟ€ํŒ!

1. ํ•ญ์ƒ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์ตœ์šฐ์„ ์œผ๋กœ ์ƒ๊ฐํ•˜์„ธ์š”. ๋ฉ‹์ง„ ๊ธฐ์ˆ ๋„ ์ข‹์ง€๋งŒ, ์‚ฌ์šฉํ•˜๊ธฐ ํŽธํ•ด์•ผ ํ•ด์š”!
2. ์„ฑ๋Šฅ ์ตœ์ ํ™”๋ฅผ ์žŠ์ง€ ๋งˆ์„ธ์š”. ์• ๋‹ˆ๋ฉ”์ด์…˜์ด๋‚˜ ๋ณต์žกํ•œ ๋ ˆ์ด์•„์›ƒ์€ ์„ฑ๋Šฅ์— ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ์–ด์š”.
3. ์ ‘๊ทผ์„ฑ์„ ๊ณ ๋ คํ•˜์„ธ์š”. ๋ชจ๋“  ์‚ฌ์šฉ์ž๊ฐ€ ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ค์–ด์•ผ ํ•ด์š”.
4. ๊ณ„์†ํ•ด์„œ ์ƒˆ๋กœ์šด ๊ธฐ์ˆ ์„ ํ•™์Šตํ•˜์„ธ์š”. ์›น ๊ฐœ๋ฐœ ์„ธ๊ณ„๋Š” ๋น ๋ฅด๊ฒŒ ๋ณ€ํ™”ํ•˜๋‹ˆ๊นŒ์š”!

์™€~ ์—ฌ๋Ÿฌ๋ถ„, ์ •๋ง ๋Œ€๋‹จํ•ด์š”! ์ด์ œ ์—ฌ๋Ÿฌ๋ถ„์€ ํ˜„๋Œ€์ ์ธ ์›น ๋ ˆ์ด์•„์›ƒ์˜ ๋‹ฌ์ธ์ด ๋˜์—ˆ์–ด์š”. Grid์™€ Flexbox๋ฅผ ์ž์œ ์ž์žฌ๋กœ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๊ณ , ์ตœ์‹  CSS ๊ธฐ๋Šฅ๋“ค๋„ ๋Šฅ์ˆ™ํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์ฃ . ๐Ÿ‘๐Ÿ‘๐Ÿ‘

์ด๋ ‡๊ฒŒ ๋ฉ‹์ง„ ์‹ค๋ ฅ์„ ๊ฐ–์ถ”๊ฒŒ ๋˜์—ˆ์œผ๋‹ˆ, ์ด์ œ ์—ฌ๋Ÿฌ๋ถ„์˜ ์ง€์‹์„ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค๊ณผ ๋‚˜๋ˆ ๋ณด๋Š” ๊ฑด ์–ด๋–จ๊นŒ์š”? ์žฌ๋Šฅ๋„ท์—์„œ ์›น ๋ ˆ์ด์•„์›ƒ ๋งˆ์Šคํ„ฐ ํด๋ž˜์Šค๋ฅผ ๊ฐœ์„คํ•ด๋ณด๋Š” ๊ฑด ์–ด๋–จ๊นŒ์š”? ์—ฌ๋Ÿฌ๋ถ„์˜ ๊ฒฝํ—˜๊ณผ ๋…ธํ•˜์šฐ๊ฐ€ ๋ˆ„๊ตฐ๊ฐ€์—๊ฒŒ๋Š” ์ •๋ง ๊ฐ’์ง„ ๋ณด๋ฌผ์ด ๋  ์ˆ˜ ์žˆ์„ ๊ฑฐ์˜ˆ์š”! ๐Ÿ’–

์ž, ์ด์ œ ์ •๋ง ๋์ด์—์š”. ์—ฌ๋Ÿฌ๋ถ„์˜ ์›น ๊ฐœ๋ฐœ ์—ฌ์ •์— ์ด ๊ธ€์ด ์กฐ๊ธˆ์ด๋‚˜๋งˆ ๋„์›€์ด ๋˜์—ˆ๊ธธ ๋ฐ”๋ผ์š”. ์•ž์œผ๋กœ๋„ ๊ณ„์†ํ•ด์„œ ์„ฑ์žฅํ•˜๊ณ , ๋ฉ‹์ง„ ์›น์‚ฌ์ดํŠธ๋ฅผ ๋งŒ๋“ค์–ด ๋‚˜๊ฐ€์„ธ์š”. ์—ฌ๋Ÿฌ๋ถ„์˜ ๋ฏธ๋ž˜๊ฐ€ ์ •๋ง ๊ธฐ๋Œ€๋ผ์š”! ํ™”์ดํŒ…! ๐Ÿš€โœจ