FlexBox๋?
๐ธFlexible Box Layout
- ํ๊ณผ ์ด ํํ๋ก ํญ๋ชฉ ๋ฌด๋ฆฌ๋ฅผ ๋ฐฐ์นํ๋ 1์ฐจ์ ๋ ์ด์์ ๋ฉ์๋
- ์ปจํ
์ด๋ ๋ถ๋ชจ๊ฐ ํ์ํ๊ณ ๊ทธ ์์ ์์ดํ
์ด ํ๋ ์ด์์ด ์์ ๋ flex ์ฌ์ฉํ ์ ์๋ค.
๊ตฌ์ฑ ์์, ์ฉ์ด
โ
flex container :
๋ถ๋ชจ ์์
โ
flex item :
์์ ์์, ์ ๋ ฌ์ด ํ์ํ ๊ฐ๊ฐ์ ์์ดํ
์ ๋ด์ ๋๋ ๊ณณ
main axis : ๊ฐ๋ก ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ์ด ๊ธฐ๋ณธ๊ฐ, ์ฃผ์ถ
cross axis : ์ธ๋ก ์์์ ์๋๋ก ๊ธฐ๋ณธ๊ฐ, ๊ต์ฐจ์ถ
Flex Container ์์ฑ
๐ธ display: flex
- Flex ์ปจํ
์ด๋์ display: flex;๋ฅผ ์ ์ฉํ๋๊ฒ ์์
- Flex ์์ดํ
๋ค์ ๊ฐ๋ก ๋ฐฉํฅ์ผ๋ก ๋ฐฐ์น๋๊ณ , ์์ ์ด ๊ฐ์ง ๋ด์ฉ๋ฌผ์ width ๋งํผ๋ง ์ฐจ์งํ๊ฒ ๋จ. ๋ง์น inline ์์๊ณผ ๊ฐ๋ค. height๋ ์ปจํ
์ด๋์ ๋์ด๋งํผ ๋์ด๋จ.
๐ธ flexโdirection
- ์ปจํ
์ด๋ ๋ด์ ์์ดํ
์ ๋ฐฐ์นํ ๋ ์ฌ์ฉ. ์ฌ์ฉ ํ ์ฃผ์ถ ๋ฐ ๋ฐฉํฅ ์ค์ ๊ฐ๋ฅ
- ์ฃผ์ถ์ ์์น - ์ํ, ์์ง
- ์ฃผ์ถ์ ๋ฐฉํฅ - ์ ๋ฐฉํฅ, ์ญ๋ฐฉํฅ
๊ฐ (value)
- row : ๊ธฐ๋ณธ ๊ฐ. ์ฃผ์ถ์ ์์์ ๊ณผ ๋์ ์ด ์ฝํ
์ธ ๋ฐฉํฅ๊ณผ ๋์ผ
- row-reverse : row์ ๋์ผํ๊ฒ ๋์ํ์ง๋ง ์ฃผ์ถ์ ์์์ ๊ณผ ๋์ ์ด ๋ฐ๋์ ์์น
- column : ์ธ๋ก๋ก ์ ๋ ฌ ๋๋ block์ถ๊ณผ ๋์ผ. ์ฃผ์ถ์ ์ผ์ชฝ ์์์ ์๋๋ก
- column : ์์ง์ธ๋ฐ ๋ฐฉํฅ์ด ์ฃผ์ถ์ ์ผ์ชฝ ์๋์์ ์๋ก
๐ธ flexโwrap
- item ์์ ์ ์๋ ํฌ๊ธฐ๋ฅผ ์์ง ์๊ฒ ๋ํํ๋ ๊ฐ๋
.
- flex-item ์์๋ค์ด ๊ฐ์ ๋ก ํ ์ค์ ๋ฐฐ์น๋๊ฒ ํ ๊ฒ์ธ์ง, ๋๋ ๊ฐ๋ฅํ ์์ญ ๋ด์์ ๋ฒ์ด๋์ง ์๊ณ ์ฌ๋ฌํ์ผ๋ก ๋๋์ด ํํ ํ ๊ฒ์ธ์ง๋ฅผ ๊ฒฐ์ ํ๋ ์์ฑ
- ์ฆ, ์์ ์ width๊ฐ์ ๋ณ๊ฒฝํ์ง ์๊ณ ์๋์ผ๋ก ์ฌ๋ฌํ์ผ๋ก ๋๋์ด์ง๊ฒ
๊ฐ (value)
- nowrap : ๊ธฐ๋ณธ๊ฐ. ๋ฌด์กฐ๊ฑด ํ ์ค์ ๋ฐฐ์น. ์์์ ์ flex-direction์ ๋ฐ๋ฆ
- wrap : ์ฌ๋ฌํ์ผ๋ก ๊ฑธ์ณ์ ๋ฐฐ์น. ์์์ ์ flex-direction์ ๋ฐ๋ฆ
- wrap-reverse : wrap ์์ฑ๊ณผ ๋์ผ. ์์๊ฐ ๋์ด๋๋ ์์์ ๊ณผ ๋์ ์ ๊ธฐ์ค์ด ๋ฐ๋๋ก ๋ฐฐ์น
๐ธ flex-flow (shorthand)
- flexโdirection, flexโwrap ๋ ๊ฐ์ง๋ฅผ ํฉ์ณ์ ์. ์คํ์ด์ฑ์ผ๋ก ๊ตฌ๋ถ
๐ธ justify-content
- ์ฃผ์ถ์ ๊ธฐ์ค์ผ๋ก ์์ดํ
๋ค์ ์ด๋ป๊ฒ ์ ๋ ฌํ ์ง์ ๋ํ ์์ฑ
๊ฐ (value)
๐ธ align-items
- ๊ธฐ๋ณธ ๊ฐ : stretch
- ํ ์ค๋ก ์ ๋ ฌ๋์ด์๋ ์์ดํ
๋ค์ ๊ต์ฐจ์ถ์ ์ด๋ ์์น๋ก ํ ๊ฒ์ธ์ง ์ ๋ ฌํ ๊ฒ์ธ์ง
- ์์์ด height ๊ฐ์ด ์์ผ๋ฉด ๋ถ๋ชจ ๊ธธ์ด ๋งํผ ์ญ ๋์ด๋จ
๊ฐ (value)
๐ธ align-content
- ์ฌ๋ฌ ์ค์ ๋ํ ๊ต์ฐจ์ถ์ ์ ๋ ฌ
๊ฐ (value)
Flex Item ์์ฑ
๐ธ order
- ๊ธฐ๋ณธ๊ฐ : 0
- flex, grid ์ปจํ
์ด๋ ์์์ ํ์ฌ ์์์ ๋ฐฐ์น ์์๋ฅผ ์ง์
- HTML ๊ฑด๋๋ฆฌ์ง ์๊ณ CSS๋ง์ผ๋ก ์์ ๋ฐ๊ฟ ์ ์๋
- ๊ฐ์ ์ ์ ์ฌ์ฉ.
- ๊ธฐ๋ณธ์ผ๋ก๋ ๋ค 0์ด๊ณ ์ฝ๋ ์์๋๋ก ๋ฐ๋ฆ
๐ธ flex-grow
- ๊ธฐ๋ณธ๊ฐ : 0
- ํ ๋น์ด ๊ฐ๋ฅํ ์์ฉ ๊ฐ๋ฅํ ๊ณต๊ฐ์ด ๋จ๋๋ค๋ฉด ์์ดํ
๋ค๋ผ๋ฆฌ ๋๋ ์ ์ฌ์ฉํ ์ ์๋ค.
- 1์ด๋ผ๋ฉด 1๋ 1์ ๋น์จ(๋์ด๋๋ ์์ญ)๋ก ๋๋ ๊ฐ๋๋ค
- flex-wrap์ ์ปจํ
์ด๋์์ ์ง์ ํ๊ฒ ๋๋ฉด ๋จ์ด์ง๋ ์์ดํ
๋ค๋ ์ ์ฐํ๊ฒ ํฌ๊ธฐ๊ฐ ๋ณ๊ฒฝ๋์ด ์ฑ์ด๋ค
- number ์ฌ์ฉํด์ ์์ ๊ฐ์ ์ฌ์ฉ ์๋๊ณ ์์ ๊ฐ๋ฅ
๐ธ flex-shrink
- ๊ธฐ๋ณธ๊ฐ : 1
- flex-grow์ ๊ฐ์ ์๋ฆฌ์ง๋ง ๋ฐ๋๋๋ ๊ฐ๋
- flex-item ์์์ ํฌ๊ธฐ๊ฐ flex-container ์์์ ํฌ๊ธฐ๋ณด๋ค ํด ๋ ์ด ์์ฑ์ ์ฌ์ฉ
- ์ปจํ
์ด๋ ํฌ๊ธฐ๊ฐ ์ค์ด๋ค๋ฉด ๋๊ฐ์ด 1๋1์ ๋น์จ๋ก ์ค์ด๋ ๋ค
- ๋ง์ฝ์ 0์ผ๋ก ์ง์ ํ๋ฉด ๋ณธ์ธ ํฌ๊ธฐ๋ฅผ ์งํค๊ณ ์๋ค
๐ธ flex-basis
- ๊ธฐ๋ณธ๊ฐ : auto
- flex ์์ดํ
์ ์ด๊ธฐ ํฌ๊ธฐ ์ง์ .
- ์ด๊ฑธ ์ง์ ํ์ง ์๋๋ค๋ฉด ์์ ์์ฒด์ ์๋์ width ๊ฐ์ ๊ฐ๊ฒ ๋๋ค
- ์ด๊ฑธ ์ง์ ํ๋ค๋ฉด ๋์ด๋๊ณ ์ค์ด๋๋ ์์ญ์ ์ ์ดํ ์ ์๋ค
- ์ฌ์ฉํ ์ ์๋ ๊ฐ์ width ๋จ์ ๊ฐ, ํผ์ผํธ๋ ๊ฐ๋ฅ
๐ธ Item - flex (shorthand)
- flex-grow, flex-shrink, flex-basis ์ด ์ธ ๊ฐ์ง์ ๋จ์ถ ์์ฑ
- ๊ฐ์ ์ง์ ํ์ง ์์ผ๋ฉด grow, shrink๋ ์ด๊ธฐ ๊ฐ์ผ๋ก ์ค์ ์ด ๋๋๋ฐ basis๋ ์๋๋ค.
- ํ ๊ฐ ๋๋ ๋ ๊ฐ์ ๋จ์ ์๋ ์ซ์ ๊ฐ์ ์ฌ์ฉํ ๋, flex-basis๊ฐ์ auto๊ฐ ์๋๋ผ 0์ด ๋๋ค
๐ ์ฌ์ฉ ๋ฐฉ๋ฒ
๐ ๋ค๋ฅธ ๊ฐ๋ ๊ฐ๋ฅ
- initial
- ์์ดํ
ํฌ๊ธฐ๊ฐ ๊ฐ๊ฐ์ width์ height ์์ฑ์ ๋ฐ๋ผ ์ ํด์ง.
- flex: 0 1 auto์ ๋์ผ
- auto
- ์์ดํ
ํฌ๊ธฐ๊ฐ ๊ฐ๊ฐ์ width์ height ์์ฑ์ ๋ฐ๋ผ ์ ํด์ง.
- flex: 1 1 auto์ ๋์ผ
- none
- ์์ดํ
ํฌ๊ธฐ๊ฐ ๊ฐ๊ฐ์ width์ height ์์ฑ์ ๋ฐ๋ผ ์ ํด์ง.
- flex: 0 0 auto์ ๋์ผ
๐ธ align-self
(์ฐธ๊ณ ์ฌ์ดํธ)
1๋ถ ์ฝ๋ฉ
MDN Web Docs