๐ Flex ๊ธฐ๋ณธ ๊ฐ๋
Flexbox๋ ์ปจํ ์ด๋(๋ถ๋ชจ)์ ์์ดํ (์์)์ผ๋ก ๊ตฌ์ฑ๋๋ค.
.container {
display: flex; /* ์ด๊ฑธ ์ ์ธํด์ผ flex ์์ฑ๋ค์ด ์๋ํจ */
}
์ปจํ ์ด๋์ display: flex๋ฅผ ์ฃผ๋ฉด, ์์ ์์๋ค์ด ๊ฐ๋ก ๋ฐฉํฅ(row)์ผ๋ก ๋๋ํ ๋ฐฐ์น๋๋ค.
1๏ธโฃ justify-content (๊ฐ๋ก ์ ๋ ฌ)
์์๋ค์ ๊ฐ๋ก์ (๋ฉ์ธ ์ถ) ์์์ ์ ๋ ฌํ๋ค.
| ๊ฐ | ์ค๋ช |
| flex-start | ์ผ์ชฝ ์ ๋ ฌ (๊ธฐ๋ณธ๊ฐ) |
| flex-end | ์ค๋ฅธ์ชฝ ์ ๋ ฌ |
| center | ๊ฐ์ด๋ฐ ์ ๋ ฌ |
| space-between | ์์ ์ฌ์ด์ ๋์ผํ ๊ฐ๊ฒฉ |
| space-around | ์์ ์ฃผ์์ ๋์ผํ ๊ฐ๊ฒฉ |
| space-evenly | ์์ ์ฌ์ด์ ์ ๋ ๋ชจ๋ ๋์ผํ ๊ฐ๊ฒฉ |
.container {
justify-content: center; /* ๊ฐ๋ก ๊ฐ์ด๋ฐ ์ ๋ ฌ */
}
space-between vs space-around vs space-evenly ์ฐจ์ด
- space-between: ์ฒซ ๋ฒ์งธ์ ๋ง์ง๋ง ์์๋ ์ ๋์ ๋ถ์
- space-around: ๊ฐ ์์ ์ข์ฐ์ ๊ฐ์ ์ฌ๋ฐฑ (์ ๋์ ์ ๋ฐ)
- space-evenly: ๋ชจ๋ ๊ฐ๊ฒฉ์ด ์์ ํ ๋์ผ
2๏ธโฃ align-items (์ธ๋ก ์ ๋ ฌ)
์์๋ค์ ์ธ๋ก์ (๊ต์ฐจ ์ถ) ์์์ ์ ๋ ฌํ๋ค.
| ๊ฐ | ์ค๋ช |
| flex-start | ์ปจํ ์ด๋ ๊ผญ๋๊ธฐ์ ์ ๋ ฌ |
| flex-end | ์ปจํ ์ด๋ ๋ฐ๋ฅ์ ์ ๋ ฌ |
| center | ์ธ๋ก ๊ฐ์ด๋ฐ ์ ๋ ฌ |
| baseline | ํ ์คํธ ๊ธฐ์ค์ ์ ๋ง์ถฐ ์ ๋ ฌ |
| stretch | ์ปจํ ์ด๋ ๋์ด์ ๋ง๊ฒ ๋๋ฆผ (๊ธฐ๋ณธ๊ฐ) |
.container {
justify-content: center; /* ๊ฐ๋ก ๊ฐ์ด๋ฐ */
align-items: center; /* ์ธ๋ก ๊ฐ์ด๋ฐ */
}
/* → ์๋ฒฝํ ์ ์ค์ ๋ฐฐ์น! */
3๏ธโฃ flex-direction (๋ฐฉํฅ ์ค์ )
์์๋ค์ด ์ด๋ ๋ฐฉํฅ์ผ๋ก ๋ฐฐ์น๋ ์ง ๊ฒฐ์ ํ๋ค.
| ๊ฐ | ์ค๋ช |
| row | ๊ฐ๋ก ๋ฐฉํฅ, ์ผ์ชฝ→์ค๋ฅธ์ชฝ (๊ธฐ๋ณธ๊ฐ) |
| row-reverse | ๊ฐ๋ก ๋ฐฉํฅ, ์ค๋ฅธ์ชฝ→์ผ์ชฝ |
| column | ์ธ๋ก ๋ฐฉํฅ, ์→์๋ |
| column-reverse | ์ธ๋ก ๋ฐฉํฅ, ์๋→์ |
.container {
flex-direction: column;
}
โ ๏ธ ์ค์: flex-direction์ด column์ด๋ฉด ์ถ์ด ๋ค๋ฐ๋๋ค!
- justify-content → ์ธ๋ก ์ ๋ ฌ์ด ๋จ
- align-items → ๊ฐ๋ก ์ ๋ ฌ์ด ๋จ
4๏ธโฃ order (์์ ๋ณ๊ฒฝ)
๊ฐ๋ณ ์์์ ์์๋ฅผ ๋ฐ๊พผ๋ค. ๊ธฐ๋ณธ๊ฐ์ 0์ด๋ฉฐ, ์ซ์๊ฐ ์์์๋ก ์์ ๋ฐฐ์น๋๋ค.
.yellow {
order: 1; /* ๋ค๋ฅธ ์์๋ค(๊ธฐ๋ณธ๊ฐ 0)๋ณด๋ค ๋ค๋ก ์ด๋ */
}
์ order: 1์ด๋ฉด ๋ค๋ก ๊ฐ๋๊ฐ?
๋ชจ๋ ์์์ ๊ธฐ๋ณธ order ๊ฐ์ 0์ด๋ค. ํน์ ์์์ order: 1์ ์ฃผ๋ฉด 0๋ณด๋ค ํฌ๋๊น ๋งจ ๋ค๋ก ๋ฐ๋ ค๋๋ค.
- order: -1 → ๋งจ ์์ผ๋ก
- order: 0 → ๊ธฐ๋ณธ ์์น
- order: 1 → ๋งจ ๋ค๋ก
5๏ธโฃ align-self (๊ฐ๋ณ ์ธ๋ก ์ ๋ ฌ)
๊ฐ๋ณ ์์์๋ง ๋ค๋ฅธ ์ธ๋ก ์ ๋ ฌ์ ์ ์ฉํ๋ค. align-items์ ๊ฐ์ ๊ฐ๋ค์ ์ฌ์ฉํ๋ค.
.container {
align-items: flex-start; /* ์ ์ฒด๋ ์์ชฝ ์ ๋ ฌ */
}
.yellow {
align-self: flex-end; /* ๋
ธ๋์๋ง ์๋์ชฝ ์ ๋ ฌ */
}
6๏ธโฃ flex-wrap (์ค ๋ฐ๊ฟ)
์์๋ค์ด ์ปจํ ์ด๋๋ฅผ ๋์น ๋ ์ค ๋ฐ๊ฟ ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ๋ค.
| ๊ฐ | ์ค๋ช |
| nowrap | ํ ์ค์ ๋ชจ๋ ๋ฐฐ์น (๊ธฐ๋ณธ๊ฐ, ๋์ณ๋ ์ค ์ ๋ฐ๊ฟ) |
| wrap | ๋์น๋ฉด ๋ค์ ์ค๋ก |
| wrap-reverse | ๋์น๋ฉด ์์ชฝ์ผ๋ก ์ค ๋ฐ๊ฟ |
.container {
flex-wrap: wrap;
}
7๏ธโฃ flex-flow (๋จ์ถ ์์ฑ)
flex-direction๊ณผ flex-wrap์ ํ ๋ฒ์ ์์ฑํ๋ค.
/* ๋ฐ๋ก ์ฐ๋ฉด */
flex-direction: row;
flex-wrap: wrap;
/* ํฉ์น๋ฉด */
flex-flow: row wrap;
8๏ธโฃ align-content (์ฌ๋ฌ ์ค ์ ๋ ฌ)
์ฌ๋ฌ ์ค์ด ์์ ๋, ์ค๋ค ์ฌ์ด์ ์ธ๋ก ์ ๋ ฌ์ ๊ฒฐ์ ํ๋ค.
| ๊ฐ | ์ค๋ช |
| flex-start | ์ค๋ค์ ๊ผญ๋๊ธฐ์ ์ ๋ ฌ |
| flex-end | ์ค๋ค์ ๋ฐ๋ฅ์ ์ ๋ ฌ |
| center | ์ค๋ค์ ์ธ๋ก ๊ฐ์ด๋ฐ ์ ๋ ฌ |
| space-between | ์ค ์ฌ์ด์ ๋์ผํ ๊ฐ๊ฒฉ |
| space-around | ์ค ์ฃผ์์ ๋์ผํ ๊ฐ๊ฒฉ |
| stretch | ์ค๋ค์ ์ปจํ ์ด๋์ ๋ง๊ฒ ๋๋ฆผ |
โ ๏ธ ์ฃผ์: flex-wrap: wrap์ผ๋ก ์ฌ๋ฌ ์ค์ด ์๊ฒผ์ ๋๋ง ํจ๊ณผ๊ฐ ์๋ค. ํ ์ค์ด๋ฉด ํจ๊ณผ ์์!
align-items vs align-content
- align-items: ํ ์ค ์์์ ์์๋ค์ ์ธ๋ก ์ ๋ ฌ
- align-content: ์ฌ๋ฌ ์ค๋ค ์ฌ์ด์ ์ธ๋ก ๊ฐ๊ฒฉ/์ ๋ ฌ
๐ ์์ฑ ์์ฝ
| ์์ฑ | ์ ์ฉ ๋์ | ์ญํ |
| justify-content | ์ปจํ ์ด๋ | ๊ฐ๋ก ์ ๋ ฌ |
| align-items | ์ปจํ ์ด๋ | ์ธ๋ก ์ ๋ ฌ (ํ ์ค) |
| align-content | ์ปจํ ์ด๋ | ์ธ๋ก ์ ๋ ฌ (์ฌ๋ฌ ์ค) |
| flex-direction | ์ปจํ ์ด๋ | ๋ฐฐ์น ๋ฐฉํฅ |
| flex-wrap | ์ปจํ ์ด๋ | ์ค ๋ฐ๊ฟ ์ฌ๋ถ |
| flex-flow | ์ปจํ ์ด๋ | direction + wrap ๋จ์ถ |
| order | ์์ดํ | ๊ฐ๋ณ ์์ ๋ณ๊ฒฝ |
| align-self | ์์ดํ | ๊ฐ๋ณ ์ธ๋ก ์ ๋ ฌ |