19 Flex
1. flex ๊ฐ์
์์์ ํฌ๊ธฐ๊ฐ ๋ถ๋ถ๋ช ํ๊ฑฐ๋ ๋์ ์ธ ๊ฒฝ์ฐ์๋, ๊ฐ ์์๋ฅผ ์ ๋ ฌํ ์ ์๋ ํจ์จ์ ์ธ ๋ฐฉ๋ฒ์ ์ ๊ณต.
2๊ฐ์ ๊ฐ๋ ์ผ๋ก ๋๋จ
items๋ฅผ ๊ฐ์ธ๋ ๋ถ๋ชจ์์, ๊ฐ item์ ์ ๋ ฌํ๊ธฐ์ํด ํ์!
์์ฑ
display: flex container ์ ์
flex-flow (๋จ์ถ)
flex-direction:flex items์ ์ฃผ์ถ(main-axis)์ค์
flex-wrap: flex items ์ฌ๋ฌ ์ค๋ฌถ์(์ค๋ฐ๊ฟ)์ค์
justify-content: ์ฃผ์ถ(main-axis) ์ ๋ ฌ๋ฐฉ๋ฒ ์ค์
align-content: ๊ต์ฐจ์ถ(cross-axis) ์ ๋ ฌ ๋ฐฉ๋ฒ ์ค์ (2์ค ์ด์)
align-items: ๊ต์ฐจ์ถ(corss-axis)์์ items์ ์ ๋ ฌ๋ฐฉ๋ฒ ์ค์ (1์ค)
1.1 Container ์์ฑ
1.1.1 display
์์ฑ
flex: flex container๊ฐ ์์ง์ผ๋ก ์์
inline-flex: flex์ item์ ๋์ผํ๊ฒ ์์ง์ด์ง๋ง, container๊ฐ ์ํ์ผ๋ก ์์
1.1.2 ์ฉ์ด ์ ๋ฆฌ
์ฃผ์ถ(main-axis)
๊ต์ฐจ์ถ(cross-axis)
main-start,flex-start: ์ฃผ์ถ์ ์์
main-end,flex-end: ์ฃผ์ถ์ ๋
cross-start, flex-start: ๊ต์ฐจ์ถ์ ์์
cross-end, flex-end: ๊ต์ฐจ์ถ์ ๋
flex-start, flex-end๋ ๋ฐฉํฅ์ ๋ง๋ ์์์ ๊ณผ ๋์ ์ ์๋ฏธ
1.1.3 flex-flow
flex items์ ์ฃผ์ถ(main-axis)์ ์ค์ ํ๊ณ itesm์ ์ฌ๋ฌ ์ค ๋ฌถ์(์ค๋ฐ๊ฟ)๋ ์ค์
์์ฑ
flex-direction: ์ฃผ์ถ
row: ์ํ์ถ (์ผ=>์ค)์ผ๋ก ํ์ (main-axis: ์ํ, cross-axis:์์ง)
row-reverse: ์ํ์ถ(์ค=>์ผ)์ผ๋ก ํ์ (main-axis: ์ํ, cross-axis:์์ง)
column: ์์ง์ถ (์ => ์๋) ์ผ๋ก ํ์ (main-axis: ์์ง, cross-axis:์ํ)
column-reverse: column์ ๋ฐ๋์ถ(์๋=>์)์ผ๋ก ํ์ (main-axis: ์์ง, cross-axis:์ํ)
flex-wrap: items์ ์ฌ๋ฌ์ค ๋ฌถ์(์ค ๋ฐ๊ฟ ์ค์ )
no-wrap: ๋ชจ๋ items๋ฅผ ์ฌ๋ฌ ์ค๋ก ๋ฌถ์ง ์์(ํ์ค์ ํ์) - ๊ธฐ๋ณธ๊ฐ
wrap: items๋ฅผ ์ฌ๋ฌ ์ค๋ก ๋ฌถ์
wrap-reverse: itmes๋ฅผ wrap์ ์ญ๋ฐฉํฅ์ผ๋ก ์ฌ๋ฌ์ค๋ก ๋ฌถ์
1.1.4 justify-content
์ฃผ์ถ(main-axis) ์ ๋ ฌ๋ฐฉ๋ฒ ์ค์
flex-start: items๋ฅผ ์์์ (flex-start)์ ์ผ๋ก ์ ๋ ฌ (๊ธฐ๋ณธ๊ฐ)
flex-end: items๋ฅผ ๋์ (flex-end)์ผ๋ก ์ ๋ ฌ
center: items๋ฅผ ๊ฐ์ด๋ฐ ์ ๋ ฌ
space-between: ์์ item์ ์์์ ์, ๋ง์ง๋ง item์ ๋์ ์ ์ ๋ ฌ๋๊ณ ๋๋จธ์ง items๋ค์ ์ฌ์ด์ ๊ณ ๋ฅด๊ฒ ์ ๋ ฌ๋จ
space-around: items๋ฅผ ๊ท ๋ฑํ ์ฌ๋ฐฑ์ ํฌํจํ์ฌ ์ ๋ ฌ
1.1.5 align-content
๊ต์ฐจ์ถ์ ์ ๋ ฌ๋ฐฉ๋ฒ์ ์ค์ (2์ค ์ด์)
์ฃผ์์ : flex-wrap ์์ฑ์ ํตํด items๊ฐ ์ฌ๋ฌ์ค์ด๊ณ ์ฌ๋ฐฑ์ด ์์ ๊ฒฝ์ฐ๋ง ์ฌ์ฉ๊ฐ๋ฅ
items๊ฐ ํ ์ค์ผ ๊ฒฝ์ฐ, align-items ์์ฑ ์ฌ์ฉํ๊ธฐ!
์์ฑ
stretch: container์ ๊ต์ฐจ์ถ์ ๋๋ฆฌ๊ธฐ ์ํด, items๋ฅผ ๋๋ฆผ.
flex-start
flex-end
center
space-between
space-around
1.1.6 align-items
๊ต์ฐจ์ถ(corss-axis)์์ items์ ์ ๋ ฌ๋ฐฉ๋ฒ ์ค์ (1์ค)
์ฃผ์์ ์ flex-wrap์ ํตํด ์ฌ๋ฌ์ค์ผ ๊ฒฝ์ฐ์๋ align-content ์์ฑ์ด ์ฐ์ ํฉ๋๋ค. ๋ฐ๋ผ์, align-itmes๋ฅผ align-content ์์ฑ๊ฐ์ ๊ธฐ๋ณธ๊ฐ(strech) ์ผ๋ก ์ค์ ํด์ผ ํฉ๋๋ค.
์์ฑ
stretch
flex-start
felx-end
center
baseline: items๋ฅผ ๋ฌธ์ ๊ธฐ์ค ์ ์ ์ ๋ ฌ
1.2 flex items ์์ฑ
์์ฑ
order: flex-item์ ์์ ์ค์
flex
flex-grow: ์ฆ๊ฐ ๋๋น ๋น์จ ์ค์
flex-shrink: ๊ฐ์ ๋๋น ๋น์จ ์ค์
flex-basis: ๊ณต๊ฐ ๋ฐฐ๋ถ ์ ๊ธฐ๋ณธ ๋๋น ์ค์
align-self:๊ต์ฐจ์ถ(cross-axis)์์ item์ ์ ๋ ฌ ๋ฐฉ๋ฒ ์ค์
1.2.1 order
item์ ์์ ์ค์
item์ ์ซ์ ์ง์ ํ๊ณ ์ซ์ ํด์๋ก ์์ ๋ฐ๋ฆผ
์์ ํ์ฉ
HTML ๊ตฌ์กฐ์ ์๊ด ์์ด ์์ ๋ณ๊ฒฝํ ์ ์๊ธฐ ๋๋ฌธ์ ์ ์ฉ
์์ฑ ๊ฐ
์ซ์(๊ธฐ๋ณธ๊ฐ: 0)
1.2.2 flex
์๋ flex-grow, flex-shrink, flex-basis์ ๋จ์ถ์์ฑ
item์ ๋๋น(์ฆ๊ฐ, ๊ฐ์, ๊ธฐ๋ณธ)์ ์ค์ ํ๋ ๋จ์ถ์์ฑ.
flex: ์ฆ๊ฐ๋๋น ๊ฐ์๋๋น ๊ธฐ๋ณธ๋๋น;
1.2.3 flex-grow
item์ ์ฆ๊ฐ ๋๋น ๋น์จ์ ์ค์ ํฉ๋๋ค.
์ซ์๊ฐ ํฌ๋ฉด ๋ ๋ง์ ๋๋น๋ฅผ ๊ฐ์ง๋๋ค.
item ์ด ๊ฐ๋ณ ๋๋น๊ฐ ์๋๊ฑฐ๋, ๊ฐ์ด 0์ผ ๊ฒฝ์ฐ ํจ๊ณผ ์์
์์ฑ๊ฐ
์ซ์(๊ธฐ๋ณธ๊ฐ: 0)๋ก ๋๋น ๋น์จ ์ค์
basis๋ auto๋ผ๊ณ ๋ช ์ํ์ง ์์ผ๋ฉด ๊ธฐ๋ณธ๊ฐ์ 0 ์ ๋๋ค!!!
1.2.4 flex-shrink
item์ ๊ฐ์ํ๋ ๋๋น์ ๋น์จ์ ์ค์ ํฉ๋๋ค.
์ซ์๊ฐ ํฌ๋ฉด ๋ ๋ง์ ๋๋น๊ฐ ๊ฐ์ํฉ๋๋ค.
item ์ด ๊ฐ๋ณ ๋๋น๊ฐ ์๋๊ฑฐ๋, ๊ฐ์ด 0์ผ ๊ฒฝ์ฐ ํจ๊ณผ ์์
์์ฑ๊ฐ
์ซ์(๊ธฐ๋ณธ๊ฐ: 1)๋ก ๊ฐ์ ๋๋น ๋น์จ ์ค์
1.2.5 flex-basis
item์ ๊ณต๊ฐ ๋ฐฐ๋ถ ์ ๊ธฐ๋ณธ ๋๋น ์ค์
๊ฐ์ด auto์ผ ๊ฒฝ์ฐ, width, height๋ฑ์ ์์ฑ์ผ๋ก item์ ๋๋น๋ฅผ ์ค์ ํ ์ ์๋ค.
ํ์ง๋ง ๋จ์ ๊ฐ์ด ์ฃผ์ด์ง ๊ฒฝ์ฐ ์ค์ ํ ์ ์๋ค.
์์ฑ๊ฐ
auto: ๊ฐ๋ณitem๊ณผ ๊ฐ์ ๋๋น(๊ธฐ๋ณธ๊ฐ)
๋จ์: cm, px, em ๋ฑ ๋จ์ ์ง์
1.2.6 align-self
๊ต์ฐจ์ถ(cross-axis)์์ ๊ฐ๋ณ item์ ์ ๋ ฌ ๋ฐฉ๋ฒ์ ์ค์
align-items๋ container ๋ด ๋ชจ๋ items์ ์ ๋ ฌ ๋ฐฉ๋ฒ์ ์ค์ ํฉ๋๋ค.
ํ์์ ์ํด ์ผ๋ถ item๋ง ์ ๋ ฌ ๋ฐฉ๋ฒ์ ๋ณ๊ฒฝํ๋ ค๊ณ ํ ๊ฒฝ์ฐ, align-self๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ด ์์ฑ์ align-items์์ฑ๋ณด๋ค ์ฐ์ ํฉ๋๋ค.
์์ฑ๊ฐ
auto: container์ align-items์์ฑ์ ์์๋ฐ์(๊ธฐ๋ณธ๊ฐ)
stretch: container์ ๊ต์ฐจ์ถ์ ์ฑ์ฐ๊ธฐ ์ํด item์ ๋๋ฆผ
flex-start: item์ ๊ฐ ์ค์ ์์์ (flex-start)์ผ๋ก ์ ๋ ฌ
flex-end: item์ ๊ฐ ์ค์ ๋์ (flex-end)์ผ๋ก ์ ๋ ฌ
center: item์ ๊ฐ์ด๋ฐ ์ ๋ ฌ
baseline: item์ ๋ฌธ์ ๊ธฐ์ค์ ์ ์ ๋ ฌ
Last updated