๐คท๐ปโโ๏ธ Flexbox ์ด์ ์ ๋ง์ด ์ผ๋ Float ์ด๋?
float์ ์๋ ๋ชฉ์ ์ image์ text์ ๋ฐฐ์น ์ํ๋ฅผ ์ง์ ํ๊ธฐ ์ํจ์ผ๋ก, float์ผ๋ก item๊ณผ box ์์น๋ฅผ ์ง์ ํ๋ ๊ฒ์ HACKํ ์ฌ์ฉ๋ฒ์ด๋ค!
๐๐ปโโ๏ธ Item๋ค์ด ์ํ ๋ฐฉํฅ์ผ๋ก(โ) ์ ๋ ฌ
- Item์ ์ ๋ ฌ ๋ฐฉํฅ์ธ ์ํ์ถ์ด ์ค์ฌ์ถ
- ์์ง์ถ์ด ๋ฐ๋์ถ
๐๐ปโโ๏ธ Item๋ค์ด ์์ง ๋ฐฉํฅ์ผ๋ก(โ) ์ ๋ ฌ
- Item์ ์ ๋ ฌ ๋ฐฉํฅ์ธ ์์ง์ถ์ด ์ค์ฌ์ถ
- ์ํ์ถ์ด ๋ฐ๋์ถ
๐ ์ฐธ๊ณ ํ ์์์์ ๋ ์์ธํ ํ์ธํ ์ ์๋ค!
๐๐ปโโ๏ธ
display
display:flex;
Flexbox๋ก ๋ง๋ค๊ณ ์ถ์ผ๋ฉด, ๋จผ์
display
์์ฑ๊ฐ์ ์ค์ผํ๋ค.
๐๐ปโโ๏ธ
flex-direction
1.flex-direction: row;
์ํ์ถ : ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ ๋ฐฉํฅ์ผ๋ก ์ ๋ ฌ (๊ธฐ๋ณธ๊ฐ)
2.flex-direction: row-reverse;
์ํ์ถ : ์ค๋ฅธ์ชฝ์์ ์ผ์ชฝ ๋ฐฉํฅ์ผ๋ก ์ ๋ ฌ
3.flex-direction: column;
์์ง์ถ : ์์์ ์๋ ๋ฐฉํฅ์ผ๋ก ์ ๋ ฌ
4.flex-direction: column-reverse;
์์ง์ถ : ์๋์์ ์ ๋ฐฉํฅ์ผ๋ก ์ ๋ ฌ
๐๐ปโโ๏ธ
flex-wrap
(ํ ์ค์ ๊ฐ๋์ฐจ๋ฉด ๋ค์์ค๋ก ๋์ด๊ฐ๊ฒ ํ ๊ฑด์ง, ํ์ค์ ๋ค ๋์ค๊ฒ ํ ๊ฑด์ง ๊ฒฐ์ )
1.flex-wrap: nowrap;
item์ด ํ ์ค์ ๋นผ๊ณกํ๊ฒ ๋ถ์ด์์
container์ ํฌ๊ธฐ๊ฐ ์ค์ด๋ค๋ฉด item์ ํฌ๊ธฐ๋ ์ค์ด๋ค๋ฉด์ ํ ์ค์ ๋ถ์ด์์ (๊ธฐ๋ณธ๊ฐ)
2.flex-wrap: wrap;
item์ด ํ ์ค์ ๊ฝ์ฐจ๋ฉด ๋ค์ ์ค๋ก ๋์ด๊ฐ
container์ ํฌ๊ธฐ๊ฐ ์ค์ด๋ค๋ฉด item ํฌ๊ธฐ๋ ์ ์งํ๋ฉด์ ์ฌ๋ฌ์ค๋ก ๋๋์ด์ง๋ค.
3.flex-wrap: wrap-reverse;
๋ง์ง๋ง item์์ ๋ถํฐ ๊ฑฐ๊พธ๋ก wraping ๋๋ค.
flex-flow: column nowrap;
flex-direction
๊ณผ flex-wrap
์ ๊ฐ๊ฐ ๋ฐ๋ก ์ฐ์ง ์๊ณ flow
๋ก ํ ์ค์ ์ธ ์ ์๋ค!
(ex. border: 1px solid black;
๋ก width,style,color ์์ฑ์ ํ์ค์ ์ ์ ์ ์๋ฏ์ด)
๐๐ปโโ๏ธ
justify-content
(์ค์ฌ์ถ์์ Item์ ์ด๋ป๊ฒ ๋ฐฐ์นํ ๊ฑด์ง ๊ฒฐ์ )
1.justify-content : flex-start;
์ค์ฌ์ถ์ ๋ฐ๋ผ ์ผ์ชฝโ์ค๋ฅธ์ชฝ,์โ์๋๋ก ๋ฐฐ์น(๊ธฐ๋ณธ๊ฐ)
2.justify-content: flex-end;
item ๊ฐ๊ฐ์ ์์๋ ์ ์งํ๋ฉด์, ์ค์ฌ์ถ์ ๋ฐ๋ผ ์ค๋ฅธ์ชฝโ์ผ์ชฝ,์๋โ์๋ก(๋ฐ๋ ๋ฐฉํฅ) ๋ฐฐ์น
3.justify-content: center;
๊ฐ์ด๋ฐ ์ ๋ ฌํ์ฌ ๋ฐฐ์น (์ค์ฌ์ถ์ ๋ฐ๋ผ ์ด,ํ์ด ๋ฌ๋ผ์ง)
4.justify-content: space-around;
๊ฐ๊ฐ์ Box๋ฅผ ๋๋ฌ์ธ๋ space๋ฅผ ๊ฐ๊ฐ ๋ถ์ฌ5.justify-content: space-evenly;
Box ์ฌ์ด์ ๋๊ฐ์ space๋ฅผ ๋ถ์ฌ!6.justify-content: space-between;
Box ์ฌ์ด์ ๋๊ฐ์ space๋ฅผ ๋ถ์ฌํ๋, ์ ์ผ ๋์ ์๋ Box์ container ์ฌ์ด์ space๋ ์์ฐ
๐๐ปโโ๏ธ
align-items
(๋ฐ๋์ถ์์ Item์ ์ด๋ป๊ฒ ๋ฐฐ์นํ ๊ฑด์ง ๊ฒฐ์ )
1.align-items: stretch;
๋ฐ๋์ถ์ ๋ง๊ฒ ์ญ ๋์ด๋จ(์คํธ๋ ์นญ ํ๋ฏ์ด ์ญ~)(๊ธฐ๋ณธ๊ฐ)
2.align-items: flex-start;
ex. ์ค์ฌ์ถ์ด ์ํ์ผ๋, ์์ง์ ์ผ๋ก ๊ฐ์ฅ ์์ ์ ๋ ฌ
3.align-items: center;
ex. ์ค์ฌ์ถ์ด ์ํ์ผ๋, ์์ง์ ์ผ๋ก ๊ฐ์ด๋ฐ ์ ๋ ฌ
4.align-items: baseline;
text๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ท ๋ฑํ๊ฒ ์ ๋ ฌ
โ ๏ธ align-content์ ๋ค๋ฅธ ์ :
Item ์ ์ฒด์ ์์น๋ฅผ ๊ฒฐ์ ํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ํ ์ค์ด๋ ,์ฌ๋ฌ ์ค์ด๋ ์๊ด์์ด ์ ์ฉ ๊ฐ๋ฅ
๐๐ปโโ๏ธ
align-content
(๋ฐ๋์ถ์์ Item์ ์ค๋ค ๊ฐ์ ๊ฐ๊ฒฉ ์ง์ )
- flex-wrap: wrap; ์ผ ๊ฒฝ์ฐ์๋ง ์ ์ฉ๋จ
โ ์ค๋ค ์ฌ์ด์ ๊ฐ๊ฒฉ์ ์ง์ ํ๋ ์์ฑ๊ฐ์ด๋ผ, ํ ์ค๋ง ์์๋๋ ์๋ฌด๋ฐ ํจ๋ ฅ์ด ์์!- justify-content์ ์์ฑ๋ค์ ๋ชจ๋ ์ฌ์ฉ ๊ฐ๋ฅํ๋ฉฐ, ๋ฐ๋์ถ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ๋จ
๐๐ปโโ๏ธ
order
(Item์ ์์๋ฅผ ์ง์ ).item1 { order: 2; } .item2 { order: 1; }
- ๊ธฐ๋ณธ๊ฐ์ 0,
item1์ด ์ฒซ๋ฒ์งธ์ ์์ง๋ง order ๊ฐ์ผ๋ก ๋๋ฒ์งธ๋ก ๋ณด๋ผ์ ์์- ํ์ ์์ ์ ์ฐ์ด์ง ์๋๋ค.
๐๐ปโโ๏ธ
flex-grow
(Container์ ์ฌ์ด์ฆ๊ฐ ๋์ด๋ ๋, Container์ ์ฌ๋ฐฑ์ Item์ด ์ผ๋งํผ ๋๋ ๊ฐ์ง์ง ์ง์ ).item:nth-child(1) { flex-grow: 1; } .item:nth-child(2) { flex-grow: 2; } .item:nth-child(3) { flex-grow: 1; }
๐๐ปโโ๏ธ flex-grow๋ item์ width๊ฐ์ ๋น์จ์ ์ง์ ํ๋๊ฒ ์๋๋ผ...
item์ด ์ฐจ์งํ๊ณ ์์ง ์์, ๋๋จธ์ง container์ ์ฌ๋ฐฑ์ ๋น์จ์ ์ง์ ํด์ item์ด ๋๋ ๊ฐ๋๊ฒ!
์ฌ๋ฐฑ์ ๋น์จ์ 1:2:1๋ก ๋๋ ํ...
item์ ๋๋ ๊ฐ์ง ์ฌ๋ฐฑ์ ๊ฐ๋ค๋ถ์ธ๋ค!
๐๐ปโโ๏ธ
flex-shrink
(Container์ ์ฌ์ด์ฆ๊ฐ ์์์ง๋, Item์ ์ผ๋งํผ ์ค์ด๋ค์ง ์ง์ ).item1 { background: #ef9a9a; flex-shrink: 2; } .item2 { background: #ce93d8; flex-shrink: 1; } .item3 { background: #90caf9; flex-shrink: 1; }
flex-shrink ๊ฐ์ด ๋์์๋ก ๋ ๋ง์ด ์ค์ด๋ ๋ค!
๐๐ปโโ๏ธ
flex-basis
(Container์ ์ฌ์ด์ฆ๊ฐ ๋ณํ ๋, Item์ ์ผ๋งํผ ๊ณต๊ฐ์ ์ฐจ์งํ ์ง ์ธ๋ถ์ ์ผ๋ก ์ง์ ).item { flex-basis: 0; } .item:nth-child(1) { flex-grow: 1; } .item:nth-child(2) { flex-grow: 2; } .item:nth-child(3) { flex-grow: 1; }
flex-basis: 60%;
โ Container๊ฐ ์ปค์ง๋๋, ์์์ง๋๋ ์ง์ ํ %๋ฅผ ์ ์งํ๋ฉด์ item์ ํฌ๊ธฐ๊ฐ ๋ณํflex-basis: auto;
โ flex-grow,shrink์ ์ค์ ์ ๋ฐ๋ฅธ๋ค. (์ฌ๋ฐฑ์ 1:2:1๋ก ๋๋)(๊ธฐ๋ณธ๊ฐ)flex-basis: 0;
item์ด ์ ์ ํ๊ณ ์๋ ๊ณต๊ฐ์ 0์ผ๋ก ์ธ์ โ container ์ ์ฒด๊ฐ ์ฌ๋ฐฑ์ด ๋๊ธฐ ๋๋ฌธ์ ์ฌ๋ฐฑ์ 1:2:1๋ก ๋๋์ด ๊ฐ์ง๋ฉด ์ค์ item์ ๋น์จ๋ 1:2:1์ด ๋จ
flex: 2 2 auto; โ ๊ฐ๊ฐ ์์๋๋ก grow, shrink, basis๋ฅผ ํ ์ค๋ก ํ๊ธฐ
flex: 1; โ grow:1, shrink:1, basis:0 ์ ์๋ฏธํจ.
๐๐ปโโ๏ธ
align-self
(Item๋ณ๋ก Item ์ ๋ ฌ ๋ฐฉ์์ ์ง์ ํ ์ ์๋ค).item1 { background: #ef9a9a; align-self: center; =โ Container์ ์ง์ ๋ ์์ฑ๊ฐ์ ๋ฒ์ด๋์, .item1 ํ๋๋ง ๊ฐ์ด๋ฐ ์ ๋ ฌ ๊ฐ๋ฅ } .item2 { background: #ce93d8; โ Container์ ์ง์ ๋ ์์ฑ๊ฐ์ ๋ฐ๋ฆ }
๐ % (percentage)
.test {
background: red;
height: 100%;
=> .test๊ฐ ๋ค์ด์๋ ๋ถ๋ชจ ์์์ ๋์ด์ 100%๋ก ์ฑ์ด๋ค
}
=> ์ด๋ ๊ฒ ์ค์ ํด๋ .test์ background ๋ ์ ์ฉ๋์ง ์๋๋ค.
์? .test๊ฐ ๋ค์ด์๋ ๋ถ๋ชจ ์์(ex.body)์ height๊ฐ ์ง์ ๋์ง ์์์
body {
height: 100%;
}
.test {
background: red;
height: 100%;
}
=> body์ height๋ ์ง์ ํด๋ณด๋ฉด? ๊ทธ๋๋ .text์ background ๋ ์ ์ฉ๋์ง ์๋๋ค.
์? body๊ฐ ๋ค์ด์๋ ๋ถ๋ชจ ์์(ex.html)์ height๊ฐ ์ง์ ๋์ง ์์์
body, html {
height: 100%;
}
.test {
background: red;
height: 100%;
}
=> html๊น์ง ์ง์ ํด์ฃผ๋ฉด, ๋น๋ก์ .test์ background๊ฐ ํ๋ฉด ์ ์ฒด์ ๋ณด์ธ๋ค!
๐ vh (view height), vw (view width)
.test {
background: red;
height: 100vh;
}
=> % ์ฒ๋ผ .test
๊ฐ ๋ค์ด์๋ ๋ถ๋ชจ ์์์ ๋์ด๋ฅผ ์ง์ ํ์ง ์์๋, .text
์ background๊ฐ ํ๋ฉด ์ ์ฒด์ ๋ณด์ธ๋ค!
=> 100vh
= ๋ถ๋ชจ ์์์ ์๊ด์์ด ๋ณด์ด๋(view height)์ 100%๋ฅผ ๋ค ์ฐ๊ฒ ๋ค!
๐ต ์ด๋ ค์ ๋ ๋จ๊ณ.....
24๋จ๊ณ
1. flex-flow: column-reverse wrap-reverse;
โ ์์ง์ถ์ผ๋ก ์ ๋ ฌ+์์ ๋ฐ์ , ์ค ๋ฐ๊ฟ+์์ ๋ฐ์
1.justify-content: center;
โ ์ค์ฌ์ถ(์์ง์ถ) ๊ธฐ์ค์ผ๋ก ๊ฐ์ด๋ฐ ์ ๋ ฌ
3.align-content: space-between;
โ ๋ฐ๋์ถ(์ํ์ถ) ๊ธฐ์ค์ผ๋ก ๊ฐ๊ฐ ์ ๋์ ์ ๋ ฌ
๋ค ๊นผ๋น!!!!๐๐๐๐
๊ฐ๋ฐ ์์ด๋ณด ์ฝ๋ฆฐ์ด์
๋๋ค!
์ด ๋ด์ฉ์ ํผ์ ๋์์ ๊ฐ์&๊ตฌ๊ธ๋ง์ ํตํด ๋ฐฐ์ด ๋ด์ฉ์ ์ ๋ฆฌํ๋ ๊ฒ์ผ๋ก, ์ ๊ฐ ์ดํดํ๊ณ ๋์ด๊ฐ ๊ฐ๋
์ด ํ๋ ธ๊ฑฐ๋ ๋ ๋ณด์ถฉํ ๊ฐ๋
์ด ์๋ค๋ฉด ๋๊ธ ๋จ๊ฒจ์ฃผ์๋ฉด ์ ๋ง ๊ฐ์ฌํ๊ฒ ์ต๋๋ค!!