๐ flex๋?
flex box์์ item๋ค์ ์ ๋ ฌ ๋ฐ ๋ฐฐ์นํ๊ธฐ ์ํ ์์ฑ
๊ธฐ์กด์ float, inline-block์์ flex๋ก ๋ฐ์ !
(IE 11์ด์๋ง ์ง์ํ๊ณ ์๊ณ , ์์ผ๋ก flex ์ฌ์ฉ์ด ๋ ๋์คํ๋ ์๋ ์๋ค!!!!)
๋น๋ก flex ์ฌ์ฉ์ด ๋ ํธ๋ฆฌํ์ง๋ง, ๊ทธ๋๋ ์์ง๊น์ง FE ๊ฐ๋ฐ์๋ผ๋ฉด float๊ณผ inline-block ์ค์ ์ผ๋ก ์ ๋ ฌํ๋ ๋ฐฉ๋ฒ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ต์ํ๊ฒ ๋ค๋ฃฐ ์ ์์ด์ผ ํ๋ค!!! ๐
๐ flex ๊ตฌ์ฑ
flex๋ ๋ถ๋ชจ ์์์ container์ item๋ค๋ก ์ด๋ฃจ์ด์ ธ์๋ค.
flex ์์ฑ๋ค์ ๋ถ๋ชจ ์์๋ค์ ์ ์ฉํ๋ค.
๐ flex container(๋ถ๋ชจ)์ ์ ์ฉ๋๋ ์์ฑ
1) display: flex
- width๋ ๋ด์ฉ๋ฌผ๋งํผ, height๋ containerํฌ๊ธฐ๋งํผ ์ฐจ์ง
2) flex-direction
- ๊ธฐ๋ณธ ๋ฐฐ์ด ๋ฐฉํฅ์ ์ค์ ํ๋ค.
3) flex-wrap
wrap์ผ๋ก ์ค์ ํ๊ฒ ๋๋ฉด, ์์์์๊ฐ ๋ถ๋ชจ๋ณด๋ค ํฌ๊ธฐ๊ฐ ๋ ํฌ๋๋ผ๋ container์ width๋ height์ ํฌ๊ธฐ๋ฅผ ๊ฐ์ ๋ก ์ค์ ํ์ง ์๋๋ก ํ์!
- no wrap: item์ด container ๋์ด๊ฐ
- wrap: ์ค ๋ฐ๊ฟ ์ผ์ด๋จ
- wrap-reverse: ์ค๋ฐ๊ฟ + ์/์๋ซ์ค ์์น ๋ฐ๋
๐ผ ์ค์ ๊ฐ ํ๋์ ๋ณด๊ธฐ: https://codepen.io/enxaneta/full/adLPwv
4) justify-content
- main axis๋ฅผ ์ค์ฌ์ผ๋ก ๊ฐ๋ก์ถ์ผ๋ก ์ ๋ ฌ
[์ค์ ๊ฐ]
- flex-start: ์ปจํ
์ด๋ ๋งจ ์์ชฝ ์๋จ
- flex-end: ์ปจํ
์ด๋ ๋งจ ์๋ ์์น
- center: ๊ฐ์ด๋ฐ ์์น
- space-between: ์์ดํ
๋ค ์ฌ์ด๊ฐ ๊ท ์ผํ๊ฒ ์์น
- space-around: ์์ดํ
๋๋ ๋ฅผ ๊ท ์ผํ๊ฒ ์์น(์ฌ๋ฐฑ์ ํฌ๊ธฐ๊ฐ ๋์ผํ๊ฒ)
- space-evenly: ์์ดํ
์ฌ์ด์ ๋๋ ๋ชจ๋ ๊ท ์ผํ๊ฒ ๋ฐฐ์นํ์ง๋ง, IE์ edge์์๋ ์ง์ X -> ์ฌ์ฉ ๊ฑฐ์ X
5) align-items
item๋ค์ด ํ ์ค๋ก๋ง ๊ตฌ์ฑ๋์ด ์์ ๋ ์ฌ์ฉ
cross axis๋ฅผ ์ค์ฌ์ผ๋ก ์์ง์ถ ์ ๋ ฌ
[์ค์ ๊ฐ]
- stretch: ์์๋๋ก ๊ฝ ์ฐจ๊ฒ
- flex-start: ๋งจ์๋ก
- flex-end: ๋งจ์๋๋ก
- center: ๊ฐ์ด๋ฐ ์ ๋ ฌ
- baseline: ํฐํธ์ baseline์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ
โญ์์์ ๊ฐ์ด๋ฐ ์ ๋ ฌโญ
justify-content: center;
align-items:center;
6) align-content
item๋ค์ด ์ฌ๋ฌ ์ค๋ก ๊ตฌ์ฑ๋์ด ์์ ๋ ์ฌ์ฉ/ ํ ์ค์ด๋ฉด ์๋ฌด ํจ๊ณผ X
๊ผญ flex-wrap: wrap;์ ์ค์
cross axis๋ฅผ ์ค์ฌ์ผ๋ก ์์ง์ถ ์ ๋ ฌ
[์ค์ ๊ฐ]
- stretch: ์์๋๋ก ๊ฝ ์ฐจ๊ฒ
- flex-start: ๋งจ์๋ก
- flex-end: ๋งจ์๋๋ก
- center: ๊ฐ์ด๋ฐ ์ ๋ ฌ
- baseline: ํฐํธ์ baseline์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ
7) flex-flow
- flex- direction๊ณผ flex-wrap์ ์ถ์ฝํ
- flex- flow: flex-direction ๊ฐ, wrap ์ค์
- flex-flow: row wrap : ๋ณดํต ์ด๋ ๊ฒ ์
๋์
๋๋ก ๋ฌถ์ด์ ๋ฐ๋ก ์ค์ ํ๊ธฐ ๋๋ฌธ์ ์์๋๊ธฐ!
๐ flex items(์์)์ ์ ์ฉ๋๋ ์์ฑ
1) flex-basis (๊ธฐ๋ณธ๊ฐ auto)
item์ ๋๋น/๋์ด๋ฅผ ์กฐ์ (rows๋ ๋๋น, column๋ ๋์ด์ ํด๋น)
- (๊ธฐ๋ณธ๊ฐ) auto / content, px, em, %, 0..
- auto: ๋ด๊ฐ ์ง์ ์ค์ ํ width๊ฐ์ผ๋ก ์ ์ฉ๋จ
- auto์์๋ width ์ค์ ์ด ์๋ค๋ฉด content ํฌ๊ธฐ๋ก ์๋์ผ๋ก ์ ์ฉ๋จ
- ๋ง์ฝ ํฌ๊ธฐ๋ฅผ ์ง์ ํ๋ค๊ฐ(๋๋น๊ฐ ๋ณด๋ค ์์์ง๋ฉด) ๊ธ์จ๊ฐ ๋ฐ์ผ๋ก ๋๊ฐ๊ฒ ๋๋ฉด, ํ์ด๋๊ฐ ํ
์คํธ๊ฐ ๋์ ๋ณด์ด์ง ์๊ฒ ๋๋ค. ์ด๋ด ๋ word-warp:break-word css ์ค์ ์ ํด์ค์ผ ์์ฐ์ค๋ฝ๊ฒ ์ค๋ฐ๊ฟ์ ํ ์ ์๋ค.
2) flex-grow (๊ธฐ๋ณธ๊ฐ: 0)
- flex-basis๋ฅผ ์ ์ฐํ๊ฒ ๋๋ ค์ฃผ๊ธฐ!
- 0๋ณด๋ค ํฐ ์๋ฅผ ๋ฃ์ด์ผ ํจ
- (๊ธฐ๋ณธ๊ฐ) flex-grow: 0 --> ๊ทธ๋ฅ ๋ด๊ฐ ์ ํ flex-basis๋๋ก ๋๋น๊ฐ ๊ฒฐ์ ๋จ
- flex-grow: 1 ---> ์ฌ๋ฐฑ๊น์ง ๊ฝ ์ฑ์์ง
* flex-grow๋ item ๊ฐ๊ฐ ์ค์ ์ด ๊ฐ๋ฅ
class.nth-of-child(1) {flex-grow: 1}
class.nth-of-child(2) {flex-grow: 2}
class.nth-of-child(3) {flex-grow: 1}
3) flex-shrink (๊ธฐ๋ณธ๊ฐ: 1)
- flex-basis๋ฅผ ์ ์ฐํ๊ฒ ์ค์ด๊ธฐ!
- ๊ธฐ๋ณธ๊ฐ: 1 ---> ๊ทธ๋์ flex๊ฐ ๊ธฐ๋ณธ์ ์ ์ฐฝ ํฌ๊ธฐ์ ๋ฐ๋ผ ์ ์ฐํ๊ฒ ์์์ง๋ ์ด์ ์
- flex-shrink: 1 ---> ์ปจํ
์ด๋์ ํฌ๊ธฐ์ ๋ฐ๋ผ ๋๋น๊ฐ ์๋์ผ๋ก ์ค์ด๋ ๋ค.
- flex-shrink: 0 ---> ์ปจํ
์ด๋ ํฌ๊ธฐ ์๊ด ์์ด flex-basis์ ๋๋น๊ฐ ์ค์ด๋ค์ง X (๊ณ ์ )
4) order
- ์์ดํ
๋ค์ ์๊ฐ์ ์ผ๋ก ์์๋ฅผ ๋ฐ๊ฟ์ฃผ๋ ์์ฑ!
- ์๊ฐ์ ์ผ๋ก๋ง ๋ฐ๋๊ณ , ๋งํฌ์
๊ตฌ์กฐ ์ ๋ณํ๋ ์๊ธฐ ๋๋ฌธ์, ์คํฌ๋ฆฐ ๋ฆฌ๋๊ธฐ์๋ ์ํฅ์ ์ฃผ์ง ์์! ๊ทธ๋ ๊ฒ ๋๋ฌธ์ ์ฒญ๊ฐ์ ์ ์ธ๋ค์ ์ธ์งํ ์ ์์ผ๋ ์ฃผ์ํด์ ์ฐ๊ธฐ!!
.item:nth-child(1) { order: 3; } / A /
.item:nth-child(2) { order: 1; } / B /
.item:nth-child(3) { order: 2; } / C /