Flexbox์ ๊ธฐ๋ณธ์ ๋์ด์ ์ง์ ํ ๋ง์คํฐ. align-content, flex-grow, flex-shrink์ ์ค์ ๋ ์ด์์ ์๋๋ฆฌ์ค๋ฅผ ํตํด ๊ณ ๊ธ ์ ๋ ฌ ๋ฐ ๋ฐฐํฌ๋ฅผ ์๋ฒฝํ๊ฒ ์ตํ์ธ์.
CSS Flexbox ๋ง์คํฐํ๊ธฐ: ๊ณ ๊ธ ์ ๋ ฌ ๋ฐ ๋ฐฐํฌ
์๋
๋์ CSS Flexbox๋ ์ต์ ์น ๋ ์ด์์์ ์ด์์ด ๋์ด ์์ต๋๋ค. ๋๋ถ๋ถ์ ๊ฐ๋ฐ์๋ display: flex๋ฅผ ์ฌ์ฉํ์ฌ ํญ๋ชฉ์ ํ์ผ๋ก ์ ๋ ฌํ๊ฑฐ๋ ๊ฐ๋จํ ์ค์ ์ ๋ ฌ ๊ตฌ์ฑ ์์๋ฅผ ๋ง๋๋ ๋ฐ ์ต์ํฉ๋๋ค. ๊ทธ๋ฌ๋ Flexbox์ ์ง์ ํ ์๋ฌ์ ๊ณ ๊ธ ์ ๋ ฌ ๋ฐ ๋์ ๋ฐฐํฌ๋ฅผ ์ํ ๋ณด๋ค ๋ฏธ๋ฌํ ์์ฑ์ ์ดํดํ๋ ๋ฐ ์์ต๋๋ค. justify-content: center ๋ฐ align-items: center์ ๊ธฐ๋ณธ์ ๋์ด์ค ๋, ๋๋ผ์ธ ์ ๋๋ก ์ฝ๊ฒ ๋ณต์กํ๊ณ ๋ฐ์ํ์ด๋ฉฐ ๋ณธ์ง์ ์ผ๋ก ์ ์ฐํ ๋ ์ด์์์ ์์ฑํ ์ ์๋ ์ ์ฌ๋ ฅ์ ๋ฐํํ ์ ์์ต๋๋ค.
์ด ๊ฐ์ด๋๋ ๊ธฐ๋ณธ์ ์๊ณ ์์ง๋ง ์ดํด๋ฅผ ์ฌํํ๊ณ ์ถ์ ๊ฐ๋ฐ์๋ฅผ ์ํ ๊ฒ์ ๋๋ค. ๋ค์ค ๋ผ์ธ ์ ๋ ฌ์ ์ ์ดํ๋ โโ์์ฑ, ํ๋ ์ค ํญ๋ชฉ์ด ๋์ด๋๊ณ ์ค์ด๋๋ ๋ฐฉ์ ๋ค์ ์จ๊ฒจ์ง ์ ๊ตํ ๋ ผ๋ฆฌ, ๊ทธ๋ฆฌ๊ณ ์ผ๋ฐ์ ์ธ ๋ ์ด์์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ช ๊ฐ์ง ๊ฐ๋ ฅํ ํจํด์ ํ๊ตฌํ ๊ฒ์ ๋๋ค. ํ๋ฒํ ์ฌ์ฉ์์์ ์์ ๊ฐ ์๋ Flexbox ์ค๊ณ์๋ก ๊ฑฐ๋ญ๋ ์ค๋น๋ฅผ ํ์ญ์์ค.
๊ธฐ์ด: ์ฃผ์ถ๊ณผ ๊ต์ฐจ์ถ์ ๋ํ ๊ฐ๋ตํ ๋ณต์ต
๊ณ ๊ธ ์ฃผ์ ๋ก ๋ค์ด๊ฐ๊ธฐ ์ ์ ๋ชจ๋ ํ๋ ์ค ์ปจํ ์ด๋๋ฅผ ์ง๋ฐฐํ๋ ๋ ์ถ์ ๋ํ ํ๊ณ ํ ์ดํด๊ฐ ์ค์ํฉ๋๋ค. Flexbox์ ๋ชจ๋ ์ ๋ ฌ ๋ฐ ๋ฐฐํฌ ์์ฑ์ ์ด ๋ ์ถ ์ค ํ๋๋ฅผ ๋ฐ๋ผ ์๋ํฉ๋๋ค.
- ์ฃผ์ถ(Main Axis): ํ๋ ์ค ํญ๋ชฉ์ด ๋ฐฐ์น๋๋ ์ฃผ์ถ์
๋๋ค. ์ด ๋ฐฉํฅ์
flex-direction์์ฑ์ผ๋ก ์ ์๋ฉ๋๋ค. - ๊ต์ฐจ์ถ(Cross Axis): ์ด ์ถ์ ํญ์ ์ฃผ์ถ์ ์์ง์ ๋๋ค.
ํต์ฌ์ ์ด๋ฌํ ์ถ์ด ๊ณ ์ ๋์ด ์์ง ์๋ค๋ ๊ฒ์
๋๋ค. flex-direction ๊ฐ์ ๋ฐ๋ผ ์์ฒด์ ์ผ๋ก ๋ฐฉํฅ์ ์ฌ์กฐ์ ํฉ๋๋ค:
flex-direction: row(๊ธฐ๋ณธ๊ฐ): ์ฃผ์ถ์ ์ํ(์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ)์ด๋ฉฐ, ๊ต์ฐจ์ถ์ ์์ง(์์์ ์๋)์ ๋๋ค.flex-direction: column: ์ฃผ์ถ์ ์์ง(์์์ ์๋)์ด ๋๊ณ , ๊ต์ฐจ์ถ์ ์ํ(์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ)์ด ๋ฉ๋๋ค.flex-direction: row-reverse: ์ฃผ์ถ์ ์ํ์ด์ง๋ง ์ค๋ฅธ์ชฝ์์ ์ผ์ชฝ์ผ๋ก ์คํ๋ฉ๋๋ค.flex-direction: column-reverse: ์ฃผ์ถ์ ์์ง์ด์ง๋ง ์๋์์ ์๋ก ์คํ๋ฉ๋๋ค.
์ด ๊ทผ๋ณธ์ ์ธ ๊ฐ๋ ์ ์๋ ๊ฒ์ด ๋๋ถ๋ถ์ Flexbox ํผ๋์ ์์ธ์ ๋๋ค. ์ ๋ ฌ ์์ฑ์ ์ ์ฉํ๊ธฐ ์ ์ ํญ์ ์ค์ค๋ก์๊ฒ ์ง๋ฌธํ์ญ์์ค: "๋ด ์ฃผ์ถ์ ์ด๋ ๋ฐฉํฅ์ ๊ฐ๋ฆฌํค๊ณ ์๋๊ฐ?"
justify-content๋ก ์ฃผ์ถ ๋ฐฐํฌ ๋ง์คํฐํ๊ธฐ
justify-content ์์ฑ์ ์ฃผ์ถ์ ๋ฐ๋ผ ํ๋ ์ค ํญ๋ชฉ ์ฌ์ด์ ์ฃผ๋ณ์ ๊ณต๊ฐ์ด ์ด๋ป๊ฒ ๋ฐฐํฌ๋๋์ง๋ฅผ ์ ์ดํฉ๋๋ค. flex-start, flex-end, center๋ ์ง๊ด์ ์ด์ง๋ง, ์ง์ ํ ํ์ ๊ณต๊ฐ ๋ฐฐํฌ ๊ฐ์ ์์ต๋๋ค.
๊ณต๊ฐ ๋ฐฐํฌ ์ฌ์ธต ๋ถ์
space-between, space-around, space-evenly ์ฌ์ด์ ๋ฏธ๋ฌํ์ง๋ง ์ค์ํ ์ฐจ์ด์ ์ ๋ช
ํํ ํด๋ด
์๋ค.
-
justify-content: space-between;์ด ๊ฐ์ ์ฃผ์ถ์์ ํญ๋ชฉ์ ๊ท ๋ฑํ๊ฒ ๋ฐฐํฌํฉ๋๋ค. ์ฒซ ๋ฒ์งธ ํญ๋ชฉ์ ์ปจํ ์ด๋์ ๋งจ ์์ ๋ถ๋ถ์ผ๋ก ๋ฐ์ด์ง๊ณ , ๋ง์ง๋ง ํญ๋ชฉ์ ๋งจ ๋ ๋ถ๋ถ์ผ๋ก ๋ฐ์ด์ง๋๋ค. ๋จ์ ๋ชจ๋ ๊ณต๊ฐ์ ํญ๋ชฉ ์ฌ์ด์ ๊ท ๋ฑํ๊ฒ ๋ถํ ๋ฉ๋๋ค. ๋ฐ๊นฅ์ชฝ ๊ฐ์ฅ์๋ฆฌ์๋ ๊ณต๊ฐ์ด ์์ต๋๋ค.
์ฌ์ฉ ์ฌ๋ก: ๋ก๊ณ ๋ฅผ ๋งจ ์ผ์ชฝ์ผ๋ก, ๋งํฌ๋ฅผ ๋งจ ์ค๋ฅธ์ชฝ์ผ๋ก ๋ฐฐ์นํ๊ณ ๋งํฌ ์ฌ์ด์ ๊ท ๋ฑํ ๊ฐ๊ฒฉ์ ์ํ๋ ๋ด๋น๊ฒ์ด์ ๋ฐ์ ์๋ฒฝํฉ๋๋ค.
-
justify-content: space-around;์ด ๊ฐ์ ๊ฐ ํญ๋ชฉ ์ฃผ๋ณ์ ๋์ผํ ๊ณต๊ฐ์ ๋๊ณ ํญ๋ชฉ์ ๋ฐฐํฌํฉ๋๋ค. ๊ฐ ํญ๋ชฉ์ด ์ผ์ชฝ๊ณผ ์ค๋ฅธ์ชฝ์ ๊ณต๊ฐ์ "๊ฑฐํ"์ ๊ฐ์ง๊ณ ์๋ค๊ณ ์๊ฐํ์ญ์์ค. ์ธ์ ํ ํญ๋ชฉ์ ๊ฑฐํ์ด ๋ง๋๋ฉด, ๊ทธ๋ค ์ฌ์ด์ ๊ณต๊ฐ์ ์ปจํ ์ด๋ ๊ฐ์ฅ์๋ฆฌ ๊ณต๊ฐ์ ๋ ๋ฐฐ๋ก ๋ํ๋ฉ๋๋ค. ํนํ, ๋ฐ๊นฅ์ชฝ ๊ฐ์ฅ์๋ฆฌ์ ๊ณต๊ฐ์ ํญ๋ชฉ ์ฌ์ด ๊ณต๊ฐ์ ์ ๋ฐ ํฌ๊ธฐ์ ๋๋ค.
์ฌ์ฉ ์ฌ๋ก: ์ปจํ ์ด๋ ๊ฐ์ฅ์๋ฆฌ์ ๋๋ฌด ๋ถ์ง ์์ผ๋ฉด์ ํญ๋ชฉ์ด ์ฝ๊ฐ์ ์ฌ์ ๊ณต๊ฐ์ ๊ฐ๋๋ก ํ๋ ค๋ ์นด๋ ๋ ์ด์์์ด๋ ๊ฐค๋ฌ๋ฆฌ์ ์ ์ฉํฉ๋๋ค.
-
justify-content: space-evenly;์ด ์ธ ๊ฐ์ง ์ค ๊ฐ์ฅ ์ง๊ด์ ์ธ ๊ฐ์ ๋๋ค. ๋ ํญ๋ชฉ ์ฌ์ด์ ๊ณต๊ฐ์ด ์ฒซ ๋ฒ์งธ/๋ง์ง๋ง ํญ๋ชฉ๊ณผ ์ปจํ ์ด๋ ๊ฐ์ฅ์๋ฆฌ ์ฌ์ด์ ๊ณต๊ฐ๊ณผ ์ ํํ ๊ฐ๋๋ก ๋ณด์ฅํฉ๋๋ค. ๋ชจ๋ ๊ฐ๊ฒฉ์ด ๋์ผํฉ๋๋ค.
์ฌ์ฉ ์ฌ๋ก: ์๋ฒฝํ๊ฒ ๊ท ํ ์กํ๊ณ ๋์นญ์ ์ธ ๋ ์ด์์์ด ํ์ํ ๋ ์ด์์ ์ ๋๋ค. ๋์์ด๋๊ฐ "๊ท ๋ฑํ ๊ฐ๊ฒฉ"์ ์์ฒญํ ๋ ์๋ฌต์ ์ผ๋ก ์ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
align-items ๋ฐ align-self๋ก ๊ต์ฐจ์ถ ์ ๋ ฌ ์ ๋ณตํ๊ธฐ
justify-content๊ฐ ์ฃผ์ถ์ ๋ค๋ฃจ๋ ๋ฐ๋ฉด, align-items๋ ๋จ์ผ ๋ผ์ธ ๋ด์์ ๊ต์ฐจ์ถ์ ๋ฐ๋ผ ํญ๋ชฉ์ ๊ธฐ๋ณธ ์ ๋ ฌ์ ๊ด๋ฆฌํฉ๋๋ค.
\`align-items\` ๊ฐ ์ดํดํ๊ธฐ
align-items: stretch;(๊ธฐ๋ณธ๊ฐ): ์ด๊ฒ์ด ๋ฐ๋ก ํ๋ ์ค ํญ๋ชฉ์ด ์์ฒญํ์ง ์์๋ ์ปจํ ์ด๋์ ๋์ด๋ฅผ ์ฑ์ฐ๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๋ ์ด์ ์ ๋๋ค. ํญ๋ชฉ์ ๊ต์ฐจ์ถ์ ๋ฐ๋ผ ์ปจํ ์ด๋ ํฌ๊ธฐ๋ฅผ ์ฑ์ฐ๋๋ก ๋์ด๋ฉ๋๋ค (์: `flex-direction: row` ์ปจํ ์ด๋์์ ๋์ด).align-items: flex-start;: ํญ๋ชฉ์ด ๊ต์ฐจ์ถ์ ์์ ๋ถ๋ถ์ ๋ชจ์ ๋๋ค.align-items: flex-end;: ํญ๋ชฉ์ด ๊ต์ฐจ์ถ์ ๋ ๋ถ๋ถ์ ๋ชจ์ ๋๋ค.align-items: center;: ํญ๋ชฉ์ด ๊ต์ฐจ์ถ์ ๋ฐ๋ผ ์ค์์ ์ ๋ ฌ๋ฉ๋๋ค.align-items: baseline;: ์ด๊ฒ์ ๊ฐ๋ ฅํ๊ณ ์ ํ์ฉ๋์ง ์๋ ๊ฐ์ ๋๋ค. ํญ๋ชฉ์ ํ ์คํธ ๊ธฐ์ค์ ์ด ์ผ์นํ๋๋ก ์ ๋ ฌ๋ฉ๋๋ค. ์ด๋ ๊ธ๊ผด ํฌ๊ธฐ๊ฐ ๋ค๋ฅธ ํญ๋ชฉ(์: ๋ถ์ ๋ชฉ ์์ ๋ฉ์ธ ์ ๋ชฉ)์ด ์๊ณ ์์ ๊ฒฝ๊ณ๊ฐ ์๋ ํ ์คํธ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ๋๊ธฐ๋ฅผ ์ํ ๋ ๋งค์ฐ ์ ์ฉํฉ๋๋ค.
align-self๋ก ์ฌ์ ์ํ๊ธฐ
ํน์ ํญ๋ชฉ ํ๋๋ง ๋ค๋ฅธ ํญ๋ชฉ๊ณผ ๋ค๋ฅด๊ฒ ๋์ํ๋๋ก ํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ ๊น์? ๋ฐ๋ก ์ด๋ด ๋ align-self๊ฐ ์ฌ์ฉ๋ฉ๋๋ค. ๊ฐ๋ณ ํ๋ ์ค ํญ๋ชฉ์ ์ ์ฉ๋๋ฉฐ, ํด๋น ํญ๋ชฉ์ ๋ํด์๋ง ์ปจํ
์ด๋์ align-items ์์ฑ์ ์ฌ์ ์ํฉ๋๋ค. align-items์ ๋์ผํ ๋ชจ๋ ๊ฐ์ ํ์ฉํฉ๋๋ค (์ปจํ
์ด๋ ๊ฐ์ผ๋ก ์ฌ์ค์ ํ๋ \`auto\` ํฌํจ).
์์: align-items: center๋ก ๋ชจ๋ ์ค์์ ์ ๋ ฌ๋ ์นด๋ ํ์ด ์๋ค๊ณ ์์ํด ๋ณด์ญ์์ค. ํ๋์ "ํน์ง" ์นด๋๋ฅผ align-self: stretch;๋ฅผ ์ ์ฉํ์ฌ ๋ค๋ฅธ ์นด๋๋ณด๋ค ๋๊ฒ ๋ง๋ค์ด ๋๋ณด์ด๊ฒ ํ ์ ์์ต๋๋ค.
์จ๊ฒจ์ง ์์
: align-content๋ฅผ ์ฌ์ฉํ ๊ณ ๊ธ ๋ฐฐํฌ
์ด๊ฒ์ Flexbox์์ ๊ฐ์ฅ ์คํด๋ฐ๋ ์์ฑ ์ค ํ๋์ด๋ฉฐ, ์ด๊ฒ์ ๋ง์คํฐํ๋ ๊ฒ์ ๊ณ ๊ธ ์๋ จ๋์ ์์ง์
๋๋ค. ํํ ํผ๋ ์ง์ ์ align-items์์ ์ ์ฌ์ฑ์
๋๋ค.
์ฌ๊ธฐ์ ์ค์ํ ๊ท์น์ด ์์ต๋๋ค: align-content๋ ํ๋ ์ค ํญ๋ชฉ์ด ๋ชจ๋ ๋จ์ผ ๋ผ์ธ์ ์์ ๋๋ ํจ๊ณผ๊ฐ ์์ต๋๋ค. ์ด๋ ๋ค์ค ๋ผ์ธ ํ๋ ์ค ์ปจํ
์ด๋(์ฆ, flex-wrap: wrap;์ ์ค์ ํ๊ณ ํญ๋ชฉ์ด ์ค์ ๋ก ์ ๋ผ์ธ์ผ๋ก ์ค ๋ฐ๊ฟ๋์์ ๋)์์๋ง ์๋ํฉ๋๋ค.
์ด๋ ๊ฒ ์๊ฐํด ๋ณด์ธ์:
align-items๋ ํญ๋ชฉ์ ์์ ์ ๋ผ์ธ ๋ด์์ ์ ๋ ฌํฉ๋๋ค.align-content๋ ์ปจํ ์ด๋ ๋ด์ ๋ผ์ธ ์์ฒด๋ฅผ ์ ๋ ฌํฉ๋๋ค. ์ด๋ ํญ๋ชฉ ํ ์ฌ์ด์ ๊ต์ฐจ์ถ์์ ๊ณต๊ฐ ๋ฐฐํฌ๋ฅผ ์ ์ดํฉ๋๋ค.
์ด๊ฒ์ ๋ณธ์ง์ ์ผ๋ก justify-content์ ์ ์ฌํ๊ฒ ์๋ํ์ง๋ง, ๊ต์ฐจ์ถ์ ๋ํ ๊ฒ์
๋๋ค. ๊ทธ ๊ฐ์ ๊ฑฐ์ ๋์ผํฉ๋๋ค:
align-content: flex-start;(๊ธฐ๋ณธ๊ฐ): ๋ชจ๋ ๋ผ์ธ์ด ์ปจํ ์ด๋์ ์์ ๋ถ๋ถ์ ๋ชจ์ ๋๋ค.align-content: flex-end;: ๋ชจ๋ ๋ผ์ธ์ด ๋ ๋ถ๋ถ์ ๋ชจ์ ๋๋ค.align-content: center;: ๋ชจ๋ ๋ผ์ธ์ด ์ค์์ ๋ชจ์ ๋๋ค.align-content: space-between;: ์ฒซ ๋ฒ์งธ ๋ผ์ธ์ ์์ ๋ถ๋ถ์, ๋ง์ง๋ง ๋ผ์ธ์ ๋ ๋ถ๋ถ์ ์์ผ๋ฉฐ, ๊ณต๊ฐ์ ๋ผ์ธ ์ฌ์ด์ ๊ท ๋ฑํ๊ฒ ๋ฐฐํฌ๋ฉ๋๋ค.align-content: space-around;: ๊ฐ ๋ผ์ธ ์ฃผ๋ณ์ ๋์ผํ ๊ณต๊ฐ์ด ๋ฐฐ์น๋ฉ๋๋ค.align-content: space-evenly;: ๊ฐ ๋ผ์ธ ์ฌ์ด์ ๊ฐ๊ฒฉ์ด ๋์ผํฉ๋๋ค.align-content: stretch;: ๋ผ์ธ์ด ๋จ์ ๊ณต๊ฐ์ ์ฐจ์งํ๋๋ก ๋์ด๋ฉ๋๋ค.
์ฌ์ฉ ์ฌ๋ก: ํญ๋ชฉ์ด ์ค ๋ฐ๊ฟ๋๋ ์ฌ์ง ๊ฐค๋ฌ๋ฆฌ๋ฅผ ์์ํด ๋ณด์ญ์์ค. ์ปจํ
์ด๋์ ๊ณ ์ ๋ ๋์ด๊ฐ ์๋ค๋ฉด ์ถ๊ฐ์ ์ธ ์์ง ๊ณต๊ฐ์ด ๋จ์ ์ ์์ต๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์ด ๊ณต๊ฐ์ ์๋์ชฝ์ ๋ํ๋ฉ๋๋ค. align-content: space-between; ๋๋ align-content: center;๋ฅผ ์ฌ์ฉํ๋ฉด ์ ์ฒด ์ฌ์ง ๊ทธ๋ฆฌ๋์ ์์ง ๋ฐฐํฌ๋ฅผ ์ ์ดํ์ฌ ํจ์ฌ ๋ ์ ๋ฌธ์ ์ธ ๋ ์ด์์์ ๋ง๋ค ์ ์์ต๋๋ค.
๋์ ํฌ๊ธฐ ์กฐ์ ๋ฐ ๋ฐฐํฌ: flex ๋จ์ถ ์์ฑ
์ ์ ๋ ์ด์์์ ๋๋ญ
๋๋ค. Flexbox์ ์ง์ ํ ํ์ ๋์ ์ฝํ
์ธ ์ ์ฌ์ฉ ๊ฐ๋ฅํ ๊ณต๊ฐ์ ์ฒ๋ฆฌํ๋ ๋ฅ๋ ฅ์์ ๋์ต๋๋ค. ์ด๋ ์ข
์ข
flex ๋จ์ถ ์์ฑ์ ํตํด ์ค์ ๋๋ ์ธ ๊ฐ์ง ์์ฑ์ธ flex-grow, flex-shrink, flex-basis๋ก ์ ์ด๋ฉ๋๋ค.
1. flex-basis: ์์์
์ด๋ค ๋๋ฆฌ๊ฑฐ๋ ์ค์ด๋ ์์
์ด ๋ฐ์ํ๊ธฐ ์ ์, Flexbox๋ ๊ฐ ํญ๋ชฉ์ ์์ ํฌ๊ธฐ๋ฅผ ํ์๋ก ํฉ๋๋ค. ์ด๊ฒ์ด flex-basis์ ์ญํ ์
๋๋ค. ์ด๋ ์ฃผ์ถ์ ๋ฐ๋ผ ์์์ ๊ธฐ๋ณธ ํฌ๊ธฐ๋ฅผ ์ ์ํฉ๋๋ค.
- ํน์ ๊ธธ์ด(์:
200px๋๋10rem)๋ก ์ค์ ๋๋ฉด, ๊ทธ๊ฒ์ด ํญ๋ชฉ์ ์ด๊ธฐ ํฌ๊ธฐ๊ฐ ๋ฉ๋๋ค. auto๋ก ์ค์ ๋๋ฉด, ํญ๋ชฉ์ \`width\` ๋๋ \`height\` ์์ฑ์ ์ฐพ์ต๋๋ค. ์๋ฌด๊ฒ๋ ์์ผ๋ฉด ํญ๋ชฉ์ ์ฝํ ์ธ ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํฌ๊ธฐ๋ฅผ ์กฐ์ ํฉ๋๋ค.0์ผ๋ก ์ค์ ๋๋ฉด, ํญ๋ชฉ์ ์์ ํฌ๊ธฐ๊ฐ ์์ผ๋ฉฐ ์ต์ข ํฌ๊ธฐ๋ ์ ์ ์ผ๋ก \`flex-grow\` ๋น์จ์ ์ํด ๊ฒฐ์ ๋ฉ๋๋ค.
๋ชจ๋ฒ ์ฌ๋ก: Flex ์ปจํ
์คํธ์์๋ \`width\` ๋์ flex-basis๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข
์ข
๋ ์ข์ต๋๋ค. ์ฃผ์ถ ์ปจํ
์คํธ์์ ํญ๋ชฉ์ ํฌ๊ธฐ๋ฅผ ์ ์ํ๋ ๋ฐ ๋ ๋ช
ํํ๊ธฐ ๋๋ฌธ์
๋๋ค.
2. flex-grow: ์์ ๊ณต๊ฐ ์ฌ์ฉ
ํ๋ ์ค ์ปจํ
์ด๋๊ฐ ์ฃผ์ถ์ ๋ฐ๋ผ ์ฌ๋ถ์ ๊ณต๊ฐ์ ๊ฐ์ง ๋, flex-grow๋ ๊ทธ ๊ณต๊ฐ์ด ์ด๋ป๊ฒ ๋ฐฐํฌ๋๋์ง๋ฅผ ๊ฒฐ์ ํฉ๋๋ค. ์ด๋ ๋จ์ ์๋ ๋น์จ์
๋๋ค.
- ๊ธฐ๋ณธ๊ฐ์
0์ด๋ฉฐ, ํญ๋ชฉ์ด ์ถ๊ฐ ๊ณต๊ฐ์ ์ฑ์ฐ๊ธฐ ์ํด ๋์ด๋์ง ์์์ ์๋ฏธํฉ๋๋ค. - ๋ชจ๋ ํญ๋ชฉ์ด
flex-grow: 1์ ๊ฐ์ง๋ฉด, ์ถ๊ฐ ๊ณต๊ฐ์ ๊ทธ๋ค ์ฌ์ด์ ๊ท ๋ฑํ๊ฒ ๋ฐฐํฌ๋ฉ๋๋ค. - ํ๋์ ํญ๋ชฉ์ด
flex-grow: 2๋ฅผ ๊ฐ์ง๊ณ ๋ค๋ฅธ ํญ๋ชฉ์ดflex-grow: 1์ ๊ฐ์ง๋ฉด, ์ฒซ ๋ฒ์งธ ํญ๋ชฉ์ ๋ ๋ฒ์งธ ํญ๋ชฉ๋ณด๋ค ๋ ๋ฐฐ ๋ง์ ์ถ๊ฐ ๊ณต๊ฐ์ ๋ฐ๊ฒ ๋ฉ๋๋ค.
3. flex-shrink: ์์ ๊ณต๊ฐ(์ค๋ฒํ๋ก์ฐ) ์ฒ๋ฆฌ
์ด๊ฒ์ \`flex-grow\`์ ๋ฐ๋ ๊ฐ๋
์
๋๋ค. ์ปจํ
์ด๋์ ๋ชจ๋ ํญ๋ชฉ์ด \`flex-basis\` ํฌ๊ธฐ๋ก ๋ง์ ๊ณต๊ฐ์ด ์ถฉ๋ถํ์ง ์์ ๋, ํญ๋ชฉ๋ค์ ์ค์ด๋ค์ด์ผ ํฉ๋๋ค. flex-shrink๋ ํญ๋ชฉ์ด ์ผ๋ง๋ ์ค์ด๋ค์ง๋ฅผ ์ ์ดํฉ๋๋ค.
- ๊ธฐ๋ณธ๊ฐ์
1์ด๋ฉฐ, ๋ชจ๋ ํญ๋ชฉ์ด ์ค๋ฒํ๋ก์ฐ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ๊ธฐ๋ณธ์ ์ผ๋ก ๋น๋ก์ ์ผ๋ก ์ค์ด๋ฆ์ ์๋ฏธํฉ๋๋ค. - ํญ๋ชฉ์
flex-shrink: 0์ ์ค์ ํ๋ฉด ์ค์ด๋ค์ง ์์ต๋๋ค. \`flex-basis\` ํฌ๊ธฐ๋ฅผ ์ ์งํ๋ฉฐ, ์ ์ฌ์ ์ผ๋ก ์ปจํ ์ด๋๊ฐ ์ค๋ฒํ๋ก์ฐ๋ ์ ์์ต๋๋ค. ์ด๋ ์์ถ๋์ด์๋ ์ ๋๋ ๋ก๊ณ ๋ ๋ฒํผ๊ณผ ๊ฐ์ ์์์ ์ ์ฉํฉ๋๋ค.
flex ๋จ์ถ ์์ฑ: ๋ชจ๋ ํจ๊ป ์ ์ฉํ๊ธฐ
flex ์์ฑ์ flex-grow, flex-shrink, flex-basis์ ์์๋ก ๋ ๋จ์ถ ์์ฑ์
๋๋ค.
flex: 0 1 auto;(๊ธฐ๋ณธ๊ฐ): ํญ๋ชฉ์ ๋์ด๋ ์ ์๊ณ , ์ค์ด๋ค ์ ์์ผ๋ฉฐ, ๊ทธ ๊ธฐ์ค์ ๋๋น/๋์ด ๋๋ ์ฝํ ์ธ ์ ์ํด ๊ฒฐ์ ๋ฉ๋๋ค.flex: 1;(flex: 1 1 0;์ ๋จ์ถ): ๋งค์ฐ ํํ ๊ฐ์ ๋๋ค. ํญ๋ชฉ์ ๋์ด๋๊ณ ์ค์ด๋ค ์ ์์ผ๋ฉฐ, ์์ ํฌ๊ธฐ๋ 0์ ๋๋ค. ์ด๋ ํญ๋ชฉ์ด ์์ ํ flex-grow ๋น์จ์ ๋ฐ๋ผ ๊ณต๊ฐ์ ๊ณต์ ํ๋๋ก ํจ๊ณผ์ ์ผ๋ก ๋ง๋ญ๋๋ค.flex: auto;(flex: 1 1 auto;์ ๋จ์ถ): ํญ๋ชฉ์ ๋์ด๋๊ณ ์ค์ด๋ค ์ ์์ผ๋ฉฐ, ๊ทธ ๊ธฐ์ค์ ์ฝํ ์ธ ์ ์ํด ๊ฒฐ์ ๋ฉ๋๋ค. ์ด๋ ํญ๋ชฉ์ด ์ฝํ ์ธ ์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ํฌ๊ธฐ ์กฐ์ ๋ ์ ์์ง๋ง, ์ฌ์ ํ ์ถ๊ฐ ๊ณต๊ฐ์ ์ ์ฐํ๊ฒ ํก์ํ๋๋ก ํ์ฉํฉ๋๋ค.flex: none;(flex: 0 0 auto;์ ๋จ์ถ): ํญ๋ชฉ์ ์์ ํ ์ ์ฐํ์ง ์์ต๋๋ค. ๋์ด๋๊ฑฐ๋ ์ค์ด๋ค ์ ์์ต๋๋ค.
์ค์ฉ์ ์ธ ์ฌ์ฉ ์ฌ๋ก ๋ฐ ๊ณ ๊ธ ์๋๋ฆฌ์ค
์๋๋ฆฌ์ค 1: ์คํฐํค ํธํฐ (์ฑ๋ฐฐ ๋ ์ด์์)
๊ณ ์ ์ ์ธ ์น ๋์์ธ ๋ฌธ์ : ์ฝํ ์ธ ๊ฐ ์งง์ ๋๋ ํธํฐ๋ฅผ ํ์ด์ง ํ๋จ์ ๊ณ ์ ์ํค๋ฉด์, ์ฝํ ์ธ ๊ฐ ๊ธธ ๋๋ ์์ฐ์ค๋ฝ๊ฒ ์๋๋ก ๋ฐ๋ ค๋๊ฒ ํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
.page-container {
display: flex;
flex-direction: column;
min-height: 100vh; /* ๋ทฐํฌํธ ๋์ด */
}
.main-content {
flex-grow: 1; /* ๋๋ flex: 1; */
}
๋ฉ์ธ ํ์ด์ง ์ปจํ
์ด๋๋ฅผ ์ด ๊ธฐ๋ฐ ํ๋ ์ค๋ฐ์ค๋ก ๋ง๋ค๊ณ ๋ฉ์ธ ์ฝํ
์ธ ์์ญ์ flex-grow: 1๋ก ์ค์ ํจ์ผ๋ก์จ, ์ฌ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ ์์ง ๊ณต๊ฐ์ ์๋นํ์ฌ ํธํฐ๋ฅผ ๋ทฐํฌํธ ํ๋จ์ผ๋ก ๋ฐ์ด๋ด๋๋ก ์ง์ํฉ๋๋ค.
์๋๋ฆฌ์ค 2: ๊ทธ๋ฃน ๋ถํ ์ ์ํ ์๋ ๋ง์ง
๋งจ ์ผ์ชฝ์ ๋ก๊ณ ๊ฐ ์๊ณ ๋งจ ์ค๋ฅธ์ชฝ์ ๋งํฌ ๊ทธ๋ฃน์ด ์๋ ๋ด๋น๊ฒ์ด์
๋ฐ๋ฅผ ์ด๋ป๊ฒ ๋ง๋ค๊น์? ๋ก๊ณ ๊ฐ ๋จ์ผ ํ๋ ์ค ํญ๋ชฉ์ผ ๊ฒฝ์ฐ justify-content: space-between์ด ์๋ํ์ง๋ง, ์ค๋ฅธ์ชฝ์ ์ฌ๋ฌ ํญ๋ชฉ์ด ์๋ค๋ฉด ์ด๋จ๊น์?
ํด๊ฒฐ์ฑ ์ Flexbox์ ์๋ ๋ง์ง์ ๋ง๋ฒ์ ์์ต๋๋ค.
.navbar {
display: flex;
}
.logo {
/* ํน๋ณํ ์์ฑ ํ์ ์์ */
}
.nav-links {
margin-left: auto;
}
ํ๋ ์ค ์ปจํ
์ด๋์์ ์๋ ๋ง์ง์ ์ ์ฉ๋ ๋ฐฉํฅ์ผ๋ก ์ฌ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ ๊ณต๊ฐ์ ํ์์ค๋ฝ๊ฒ ์๋นํฉ๋๋ค. ๋ด๋น๊ฒ์ด์
๋งํฌ ๊ทธ๋ฃน์ margin-left: auto๋ฅผ ์ค์ ํจ์ผ๋ก์จ, ๋ก๊ณ ์ ๋งํฌ ์ฌ์ด์ ์ ์ฐํ ๋น ๊ณต๊ฐ์ ์์ฑํ์ฌ ๋งํฌ๋ฅผ ๋งจ ์ค๋ฅธ์ชฝ์ผ๋ก ๋ฐ์ด๋
๋๋ค.
์๋๋ฆฌ์ค 3: ๋ฏธ๋์ด ๊ฐ์ฒด
ํํ UI ํจํด์ ํ์ชฝ์ ์ด๋ฏธ์ง ๋๋ ์์ด์ฝ์ด ์๊ณ ๋ค๋ฅธ ์ชฝ์ ์ค๋ช ํ ์คํธ๊ฐ ์๋ ํํ์ ๋๋ค. ํ ์คํธ๋ ๋จ์ ๋ชจ๋ ๊ณต๊ฐ์ ์ฐจ์งํ๊ณ ์ ์ ํ๊ฒ ์ค ๋ฐ๊ฟ๋์ด์ผ ํฉ๋๋ค.
.media-object {
display: flex;
align-items: flex-start; /* ์ด๋ฏธ์ง์ ํ
์คํธ๋ฅผ ์์ชฝ์ ์ ๋ ฌ */
}
.media-image {
margin-right: 1rem;
flex-shrink: 0; /* ์ด๋ฏธ์ง๊ฐ ์ฐ๊ทธ๋ฌ์ง๋ ๊ฒ์ ๋ฐฉ์ง */
}
.media-body {
flex-grow: 1; /* ๋จ์ ๋ชจ๋ ์ํ ๊ณต๊ฐ์ ์ฐจ์ง */
}
์ฌ๊ธฐ์ ํ
์คํธ ์ปจํ
์ด๋์ flex-grow: 1์ด ํต์ฌ์
๋๋ค. ์ด๋ ์ด๋ฏธ์ง ๋๋น์ ๊ด๊ณ์์ด ํ
์คํธ ๋ณธ๋ฌธ์ด ์ปจํ
์ด๋์ ๋จ์ ์ฌ์ฉ ๊ฐ๋ฅํ ๋๋น๋ฅผ ์ฑ์ฐ๋๋ก ํ์ฅ๋๋๋ก ๋ณด์ฅํฉ๋๋ค.
๊ฒฐ๋ก : ์ ๋ ฌ์ ๋์ด ์๋์ ์ธ ๋ ์ด์์์ผ๋ก
Flexbox๋ฅผ ๋ง์คํฐํ๋ค๋ ๊ฒ์ ๋จ์ํ ์์๋ฅผ ์ค์์ ๋ฐฐ์นํ๋ ๊ฒ์ ๋์ด์ญ๋๋ค. ์ด๋ ์ถ ๊ฐ์ ์ํธ ์์ฉ, ๊ณต๊ฐ ๋ฐฐํฌ์ ๋
ผ๋ฆฌ, ๊ทธ๋ฆฌ๊ณ ํญ๋ชฉ ํฌ๊ธฐ ์กฐ์ ์ ์ ์ฐ์ฑ์ ์ดํดํ๋ ๊ฒ์
๋๋ค. ๋ค์ค ๋ผ์ธ ๋ ์ด์์์ ์ํ align-content, ๋์ ํฌ๊ธฐ ์กฐ์ ์ ์ํ flex ๋จ์ถ ์์ฑ, ๊ทธ๋ฆฌ๊ณ ์๋ ๋ง์ง๊ณผ ๊ฐ์ ๊ฐ๋ ฅํ ํจํด์ ํ์คํ ์ดํดํจ์ผ๋ก์จ, ์๊ฐ์ ์ผ๋ก ๋งค๋ ฅ์ ์ผ ๋ฟ๋ง ์๋๋ผ ๊ฒฌ๊ณ ํ๊ณ ๋ฐ์์ ์ด๋ฉฐ ์๋ฏธ์ ์ผ๋ก ๊นจ๋ํ ๋ ์ด์์์ ๊ตฌ์ถํ ์ ์์ต๋๋ค.
๋ค์ ๋ฒ์ ๋ณต์กํ ๋ ์ด์์ ๋ฌธ์ ์ ์ง๋ฉดํ ๋, float๋ ๋ณต์กํ ํฌ์ง์ ๋ ๊ผผ์๋ฅผ ์ฌ์ฉํ๋ ค๋ ์ถฉ๋์ ์ฐธ์ผ์ญ์์ค. ๋์ ์ค์ค๋ก์๊ฒ ์ง๋ฌธํ์ญ์์ค: ์ด ๋ฌธ์ ๋ฅผ ์๋์ ์ธ ๊ณต๊ฐ ๋ฐฐํฌ๋ก ํด๊ฒฐํ ์ ์๋๊ฐ? ๋ต์ ๋๊ฐ CSS Flexbox์ ๊ณ ๊ธ ๊ธฐ๋ฅ์์ ์ฐพ์ ์ ์์ ๊ฒ์ ๋๋ค.