๐Ÿชด ์„ฑ์žฅ์ผ์ง€ 2.0

์ฑ… ํ–‰๋ณตํ•œ ์ด๊ธฐ์ฃผ์˜์ž(์›จ์ธ ๋‹ค์ด์–ด)์˜ ๋‚ด์šฉ์— ์ž๊ทน๋ฐ›์•„ ์‹œ์ž‘ํ•˜๋Š” ์†Œ๋ฐ•ํ•œ ์„ฑ์žฅ๊ธฐ๋ก

์‚ด์•„์žˆ๋Š” ๊ฝƒ๊ณผ ์ฃฝ์€ ๊ฝƒ์€ ์–ด๋–ป๊ฒŒ ๊ตฌ๋ณ„ํ•˜๋Š”๊ฐ€?
์„ฑ์žฅํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ด ์‚ด์•„ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.
์ƒ๋ช…์˜ ์œ ์ผํ•œ ์ฆ๊ฑฐ๋Š” ์„ฑ์žฅ์ด๋‹ค!

๐ŸŒณ ํ‚ค์›Œ๋“œ (1.0) ์ตœ๋Œ€ํ•œ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ •๋ฆฌ, ์ถ”ํ›„์— ๋ณด๋ฉด์„œ ์Šค์Šค๋กœ ์„ค๋ช… ๐Ÿ‰ ๊ฒฝํ—˜ ์œ„์ฃผ๋กœ (2.0) ๋‹จ์ˆœ ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•˜๊ธฐ๋ณด๋‹ค ๋ฌด์—‡์„ ๋ฐฐ์› ๊ณ  ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ–ˆ๋Š”์ง€ ์งง๊ณ  ๊ฐ„๋‹จํ•˜๊ฒŒ ์ž‘์„ฑํ•˜์ž

CSS ๋ฐ˜์‘ํ˜•(feat. media query)

ํ•˜๋‚˜์˜ css ํ…œํ”Œ๋ฆฟ ๋‚ด์—์„œ media query๋ฅผ ํ†ตํ•ด ํŠน์ • ์กฐ๊ฑด(๊ธฐ๊ธฐ์˜ ์ข…๋ฅ˜, ํ™”๋ฉด ํฌ๊ธฐ ๋“ฑ๋“ฑ)์— ๋งž๋Š” ์Šคํƒ€์ผ์„ ์ ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•

์‚ฌ์šฉ ๋ฐฉ๋ฒ•

  • (1) html link์—์„œ ์กฐ๊ฑด์„ ์ฃผ๊ณ  ๊ทธ ์กฐ๊ฑด์— ๋งž๋Š” css ํŒŒ์ผ์„ ์ ์šฉํ•˜๊ธฐ
<link rel="stylesheet" media="screen and (max-width: 768px)" href="jaystyle.css" />
<!-- ๊ฐ€๋กœํญ์ด 768px์ด ์ตœ๋Œ€ ์ฆ‰, 768px ์ดํ•˜์ด๊ณ  media type์ด screen์ธ ๊ฒฝ์šฐ jaystyle.css๋ฅผ ์ ์šฉํ•œ๋‹ค๋Š” ์˜๋ฏธ -->
  • (2) css์˜ media query ์ž์ฒด๋ฅผ ์ด์šฉํ•˜๊ธฐ
/* ์ด๊ณณ์—๋Š” desktop์„ ์œ„ํ•œ style ์ž‘์„ฑ */

/* (1) media rule */
@media screen and (max-width: 768px) {
  /* ๊ฐ€๋กœํญ 768px์ดํ•˜, media type์ด screen -> ๋ณดํ†ต ๋ชจ๋ฐ”์ผ ์ „์šฉ style์— ํ•ด๋‹น
  ์—ฌ๊ธฐ์— ์ผ๋ฐ˜์ ์ธ style ๋ฌธ๋ฒ• ์ž‘์„ฑํ•˜๋ฉด ๋œ๋‹ค. */
}

/* (2) import rule */
/* media type์ด screen์ด๊ณ  ๊ฐ€๋กœํญ์ด 768px์ดํ•˜์ผ ๋•Œ `style.css`๋ฅผ importํ•˜์—ฌ ์ ์šฉํ•œ๋‹ค๋Š” ์˜๋ฏธ*/
@import url (style.css) screen and (max-width: 768px);

CSS flex - grow์™€ shrink

flex-basis

์–ผํ•๋ณด๋ฉด width์™€ ์œ ์‚ฌํ•˜๋‹ค.

  • flex-direction์— ๋”ฐ๋ผ์„œ ์ฃผ์ถ•์— ํ•ด๋‹นํ•˜๋Š” ๋ถ€๋ถ„์˜ ๊ธธ์ด๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค.
  • ๋ถ€๋ชจ ํƒœ๊ทธ ์•„๋ž˜์— ์ž์‹ ํƒœ๊ทธ๊ฐ€ ์žˆ์„ ๋•Œ, ์ž์‹ ํƒœ๊ทธ์˜ ํฌ๊ธฐ๋ฅผ width, height์œผ๋กœ ์ง€์ •ํ•œ ๊ฒฝ์šฐ ๋ถ€๋ชจ ํƒœ๊ทธ๋ฅผ ๊ฐ•์ œ์ ์œผ๋กœ ๋„˜์–ด๊ฐ„๋‹ค.
  • ๊ทธ๋Ÿฌ๋‚˜ flex-basis๋ฅผ ์‚ฌ์šฉ ์‹œ, ๋ถ€๋ชจ ํƒœ๊ทธ์˜ ํฌ๊ธฐ๋ฅผ ๊ณ ๋ คํ•ด์„œ ๋„˜์–ด๊ฐ€์ง€ ์•Š๋Š” ์„ ์—์„œ ์ตœ๋Œ€์˜ ํฌ๊ธฐ๋ฅผ ๊ฐ–๊ฒŒ ๋œ๋‹ค.
  • flex-basis์™€ width๋ฅผ ๋™์‹œ ์ ์šฉ ์‹œ, flex-basis๊ฐ€ ๋” ์šฐ์„ ๊ถŒ์„ ๊ฐ–๋Š”๋‹ค.
  • flex-grow์™€ flex-shrink๋ฅผ ํ†ตํ•ด ํฌ๊ธฐ๋ฅผ ์ค„์ด๊ฑฐ๋‚˜ ๋Š˜๋ฆฌ๊ธฐ ์ „์˜ ๊ธฐ๋ณธ ํฌ๊ธฐ๋ฅผ ๊ฒฐ์ •

flex-wrap

๊ธฐ๋ณธ์ ์œผ๋กœ nowrap์ด ์ ์šฉ๋˜์–ด์žˆ๋‹ค.

  • flex-wrap: nowrap - ๋ถ€๋ชจ ํƒœ๊ทธ์˜ ํฌ๊ธฐ๋ณด๋‹ค ์ž์‹ ํƒœ๊ทธ๋“ค์˜ ํฌ๊ธฐ ํ•ฉ์ด ๋” ํด ๋•Œ, ์•Œ์•„์„œ ๋ถ€๋ชจ ํƒœ๊ทธ์˜ ํฌ๊ธฐ์— ๋งž๊ฒŒ ์ž์‹ ํƒœ๊ทธ๋ฅผ ์ค„์—ฌ์„œ ํ•œ ์ค„์— ๋„ฃ๊ฒŒ ๋œ๋‹ค.(์ผ๋ฐ˜์ ์ธ flex)
  • flex-wrap: wrap - ๋ถ€๋ชจ ํƒœ๊ทธ์˜ ํฌ๊ธฐ๋ฅผ ์ž์‹ ํƒœ๊ทธ๋“ค์ด ๋„˜์–ด๊ฐˆ ๋•Œ, ๋„˜์–ด๊ฐ€๋Š” ์ž์‹ ํƒœ๊ทธ๋“ค์„ ์ž๋™์œผ๋กœ ๋‹ค์Œ ์ค„๋กœ ์˜ฎ๊ฒจ์ค€๋‹ค.

flex-grow

๋ถ€๋ชจ ํƒœ๊ทธ๊ฐ€ ์ž์‹ ํƒœ๊ทธ๋“ค๋ณด๋‹ค ํด ๋•Œ, ๋ถ€๋ชจ ํƒœ๊ทธ์˜ ํฌ๊ธฐ์— ๋Œ€ํ•ด์„œ ์ž์‹ ํƒœ๊ทธ๋“ค์ด ๋‚จ๊ธด ๊ณต๊ฐ„์„ ์ฑ„์šฐ๊ธฐ ์œ„ํ•œ ์†์„ฑ
์ž์‹ ํƒœ๊ทธ๋งˆ๋‹ค ๋Š˜์–ด๋‚˜์„œ ๋‚จ์€ ๊ณต๊ฐ„์„ ์ฑ„์šธ ๋น„์œจ์„ ํ• ๋‹นํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค.
๋ถ€๋ชจ ํƒœ๊ทธ์˜ ํฌ๊ธฐ๋ฅผ x, ์ž์‹ ํƒœ๊ทธ๋“ค์˜ ํฌ๊ธฐ ํ•ฉ์„ y๋ผ๊ณ  ํ•  ๋•Œ (x - y)๊ฐ’์„ ์•„๋ž˜ ์ •ํ•œ ๋น„์œจ๋งŒํผ ๋‚˜๋ˆ ๊ฐ–๊ณ  ํฌ๊ธฐ๋ฅผ ํ‚ค์šด๋‹ค.

.child:nth-child(1) {
  display: flex;
  flex-grow: 1
}

.child:nth-child(2) {
  display: flex;
  flex-grow: 2

flex-shrink

grow์˜ ๋ฐ˜๋Œ€ ๊ฐœ๋…์œผ๋กœ ๋ถ€๋ชจ ํƒœ๊ทธ๊ฐ€ ์ž์‹ ํƒœ๊ทธ๋“ค๋ณด๋‹ค ์ž‘์„ ๋•Œ, ๋ถ€๋ชจ ํƒœ๊ทธ์˜ ํฌ๊ธฐ์— ๋Œ€ํ•ด์„œ ์ž์‹ ํƒœ๊ทธ๋“ค์ด ๋„˜์–ด๊ฐ„ ๊ณต๊ฐ„์„ ์ค„์ด๊ธฐ ์œ„ํ•œ ์†์„ฑ
์ž์‹ ํƒœ๊ทธ๋งˆ๋‹ค ๋„˜์–ด๊ฐ€๋Š” ๊ณต๊ฐ„์— ๋Œ€ํ•ด ์ค„์–ด๋“ค๊ฒŒ ํ•  ๋น„์œจ์„ ํ• ๋‹นํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค.
๋ถ€๋ชจ ํƒœ๊ทธ์˜ ํฌ๊ธฐ๋ฅผ x, ์ž์‹ ํƒœ๊ทธ๋“ค์˜ ํฌ๊ธฐ ํ•ฉ์„ y๋ผ๊ณ  ํ•  ๋•Œ (y - x)๊ฐ’์„ ์•„๋ž˜ ์ •ํ•œ ๋น„์œจ๋งŒํผ ๋‚˜๋ˆ ๊ฐ–๊ณ  ํฌ๊ธฐ๋ฅผ ํ‚ค์šด๋‹ค.
์ฆ‰, ์•„๋ž˜์—์„œ 2๋ฒˆ์งธ ์ž์‹ ํƒœ๊ทธ๋Š” 1๋ฒˆ์งธ ์ž์‹ ํƒœ๊ทธ๋ณด๋‹ค 2๋ฐฐ ๋” ์ค„์–ด๋“œ๋Š” ๊ฒƒ์ด๋‹ค.

.child:nth-child(1) {
  display: flex;
  flex-shrink: 1
}

.child:nth-child(2) {
  display: flex;
  flex-shrink: 2

์ถ”๊ฐ€: flex-flow

  • flex-flow: row wrap; -> flex-direction๊ณผ flex-wrap์„ ํ•œ ์ค„์— ํ‘œํ˜„ํ•˜๊ฒŒ ํ•ด์ค€๋‹ค.