flexbox ์ธํฐํ์ด์ค ๋ด์ ์์ดํ ๊ฐ ๊ณต๊ฐ ๋ฐฐ๋ถ๊ณผ ๊ฐ๋ ฅํ ์ ๋ ฌ ๊ธฐ๋ฅ์ ์ ๊ณตํ๊ธฐ ์ํ 1์ฐจ์ ๋ ์ด์์ ๋ชจ๋ธ
(์ ๋์ ์ผ๋ก ๊ฐ ์์๋ค์ ๋ฐฐ์นํ๋ ๊ธฐ๋ฒ)
*flex๋ ์ปจํ ์ธ ์์ดํ ์ ๊ฐ๋ก ์ ๋ ฌํ ๋ ๋ฑ, 1์ฐจ์ ๋ ์ด์์ ๊ตฌํ์ ์ฉ์ดํ๋ค.
Flexbox๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ์ ๋ ฌ์ํค๊ณ ์ํ๋ ์์์ ๋ถ๋ชจ์์์ display: flex; ์์ฑ์ ์ถ๊ฐํด์ฃผ๋ฉด ๋๋ค.
(๋ถ๋ชจ์์๊ฐ inline์์๋ผ๋ฉด inline-flex)
๊ตฌ์ฑ : flex item(์์์์) & flex-container(๋ถ๋ชจ์์)
์์ฑ | ์๋ฏธ |
---|---|
display | container ์ ์ |
flex-direction | flex items์ ์ฃผ์ถ ์ ํ |
flex-wrap | flex items ์ค๋ฐ๊ฟ ์ค์ |
flex-flow | flex-direction, flex-wrap ๋จ์ถ |
justify-content | ์ฃผ์ถ(์ํ)์ ์ ๋ ฌ ๋ฐฉ๋ฒ ์ ํ |
align-content | ๊ต์ฐจ์ถ(์์ง) ์ ๋ ฌ ๋ฐฉ๋ฒ ์ ํ |
align-items | items์ ๊ต์ฐจ์ถ ์ ๋ ฌ ๋ฐฉ๋ฒ ์ ํ(1์ค) |
row : ์ข์ฐโ ์ํ ์ ๋ ฌ (๊ธฐ๋ณธ๊ฐ)
column : ์์๋โ ์์ง ์ ๋ ฌ
row-reverse : ์ฐ์ขโ ์ํ ์ ๋ ฌ
column-reverse : ์๋์โ ์์ง ์ ๋ ฌ
*๋ฐฉํฅ์ ๋ฐ๋ผ ์ฃผ์ถ๊ณผ ๊ต์ฐจ์ถ์ด ๋ฌ๋ผ์ง์ผ๋ก ์ ์!
(Items ์์๋ฅผ ๊ฑฐ๊พธ๋ก ๋ค์ง๊ฑฐ๋ ์์ง์ผ๋ก ์ค์ ํ ๊ฒฝ์ฐ)
flex container ๋๋น๋ณด๋ค items์ ๋๋น๊ฐ ํฐ ๊ฒฝ์ฐ, ํ์ค ๋๋ ์ฌ๋ฌ์ค๋ก ํํํ ์ง ์ค์
nowrap : 1ํ ๋ฐฐ์น (๊ธฐ๋ณธ๊ฐ)
-๊ฐ items ํญ์ container ๋ค์ด๊ฐ ์ ์๋ ํฌ๊ธฐ๋ก ์ถ์๋จ
wrap : ๋ณต์ํ ๋ฐฐ์น
-items ํญ ํฉ๊ณ๊ฐ container๋ณด๋ค ํฐ ๊ฒฝ์ฐ, ์๋๋ก ๋จ์ด์ ธ ๋ฐฐ์น๋จ (์ข-์ฐ, ์-์๋)
wrap-reverse : wrap๊ณผ ๋์ผํ์ง๋ง ์๋-์๋ก ๋ฐฐ์น๋จ
flex item ์ํ ์ ๋ ฌ
flex-start : start ์ข์ธก ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ (๊ธฐ๋ณธ๊ฐ)
flex-end : end ์ฐ์ธก ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ
-์์์ ์์๋ ๋ฐ๋์ง์์ (reverse X)
center : container์ ์ค์์ ์ ๋ ฌ
space-between : ์ฒซ๋ฒ์งธ&๋ง์ง๋ง item์ด ์ข์ฐ ์ธก๋ฉด์ ๋ฑ ๋ถ์ด ์ ๋ ฌ๋๊ณ ๋๋จธ์ง item๊ณผ ๊ท ์ผํ ๊ฐ๊ฒฉ์ผ๋ก ์ ๋ ฌ
space-around : ๋ชจ๋ item์ด ๊ท ์ผํ ๊ฐ๊ฒฉ์ผ๋ก ์ ๋ ฌ
space-evenly : item ์ฌ์ด์ ์ ๋์ด ๊ท ์ผํ ๊ฐ๊ฒฉ์ผ๋ก ์ ๋ ฌ (IE์ง์X)
flex item ์์ง ์ ๋ ฌ (2์ค ์ด์)
stretch : ๊ท ์ผํ๊ฒ ๋ถ๋ฐฐ๋ ๊ณต๊ฐ์ ์ ๋ ฌ (๊ธฐ๋ณธ๊ฐ)
-ํ์ด ๋จ์ด์ ธ ์์
flex-start : flex container์ start๊ธฐ์ค์ผ๋ก ์์์ ์ ๋ ฌ
flex-end : flex container์ end๊ธฐ์ค์ผ๋ก ์์์ ์ ๋ ฌ
center : flex container ์ค์์ ์์์ ์ ๋ ฌ
space-between : ์ฒซ๋ฒ์งธ item์ ์๋จ, ๋ง์ง๋ง item์ ํ๋จ์ ๋ฐฐ์น๋๊ณ ๋๋จธ์ง ํ์ ๊ณต๊ฐ ์์ ๊ท ์ผํ๊ฒ ์ ๋ ฌ
space-around : ๋ชจ๋ item์ด ๊ณต๊ฐ ์์ ๊ท ์ผํ๊ฒ ์ ๋ ฌ
container ์์ง ๋ฐฉ์์ผ๋ก flex item ์ ๋ ฌ (1์ค)
stretch : container๋์ด์ ๋ง๊ฒ item ๋์ด๊ฐ ๋์ด๋จ (๊ธฐ๋ณธ๊ฐ)
flex-start : flex container์ start๊ธฐ์ค์ผ๋ก ๋ชจ๋ item ์ ๋ ฌ
flex-end : flex container์ end๊ธฐ์ค์ผ๋ก ๋ชจ๋ item ์ ๋ ฌ
center : flex container ์ค์์ ๋ชจ๋ item ์ ๋ ฌ
baseline : flex container์ baseline์ ๊ธฐ์ค์ผ๋ก ๋ชจ๋ item ์ ๋ ฌ
-items์ ํฌ๊ธฐ์ ์๊ด์์ด ์์ ํ ์คํธ๋ฅผ ๊ธฐ์ค
์์ฑ | ์๋ฏธ |
---|---|
order | flex item์ ์์ ๊ฒฐ์ |
flex-grow | flex item์ ๋๋น ๋น์จ(์ฆ๊ฐ) |
flex-shrink | flex item์ ๋๋น ๋น์จ(๊ฐ์) |
flex-basis | flex item์ ๊ธฐ๋ณธ ๋๋น |
flex | flex-grow, flex-shrink, flex- basis์ ๋จ์ถ |
align-self | ๊ต์ฐจ์ถ์์์ Item์ ๋ ฌ ๋ฐฉ๋ฒ |
flex item์ ๋ฐฐ์น ์์ ์ค์
html์ ๊ฑด๋๋ฆด ํ์ ์์ด order์์ฑ์ผ๋ก ๊ฐ๋จํ ์ฌ๋ฐฐ์น ๊ฐ๋ฅ
<div class="flex-container"> <div style="order: 2">1</div> <div style="order: 3">2</div> <div style="order: 1">3</div> <div style="order: 5">4</div> <div style="order: 4">5</div> </div>
flex item์ ๋๋น๋ฅผ ์ผ๋ง๋ ๋๋ฆด์ง์ ๋ํ(ํ์ฅ) ๋น์จ์ ์ค์
๊ธฐ๋ณธ๊ฐ 0, ์์ ์ ์๊ฐ๋ง ๊ฐ๋ฅ
<div class="flex-container">
<div class="flex-item" style="flex-grow: 4">1</div>
<div class="flex-item" style="flex-grow: 2">2</div>
<div class="flex-item" style="flex-grow: 1">3</div>
<div class="flex-item" style="flex-grow: 1">4</div>
<div class="flex-item" style="flex-grow: 1">5</div>
</div>
<!-- ์ฒซ ๋ฒ์งธ ํญ๋ชฉ์ ๋๋จธ์ง ํญ๋ชฉ๋ณด๋ค 4๋ฐฐ ๋ ์ปค์ง๊ณ ,
์ฌ์ฉ ๊ฐ๋ฅํ ๊ณต๊ฐ์ด ์์ ๋ ๋ ๋ฒ์งธ ํญ๋ชฉ์ ๋๋จธ์ง ํญ๋ชฉ๋ณด๋ค 2๋ฐฐ ๋ ์ปค์ง๋ค-->
flex item์ ๋๋น๋ฅผ ์ผ๋ง๋ ์ค์ผ์ง์ ๋ํ(์ถ์) ๋น์จ์ ์ค์
๊ธฐ๋ณธ๊ฐ 1, ์์ ์ ์๊ฐ๋ง ๊ฐ๋ฅ
0์ผ๋ก ์ฃผ๋ฉด ์ถ์๋์ง์๊ณ ์๋์ ๋๋น๋ฅผ ์ ์ง!
<div class="flex-container">
<div class="flex-item" style="flex-shrink: 2">1</div>
<div class="flex-item">2</div>
<div class="flex-item">3</div>
<div class="flex-item">4</div>
<div class="flex-item">5</div>
</div>
flex item์ ๋๋น ๊ธฐ๋ณธ๊ฐ์ ์ค์
๊ธฐ๋ณธ๊ฐ auto, px์ด๋ %๋ฑ์ ๋จ์ ์ฌ์ฉ
<div class="flex-container">
<div class="flex-item" style="flex-basis: 250px">1</div>
<div class="flex-item">2</div>
<div class="flex-item">3</div>
<div class="flex-item">4</div>
<div class="flex-item">5</div>
</div>
grow, shrink, basis ๋จ์ถ ์์ฑ
๊ธฐ๋ณธ๊ฐ 0 1 auto
<div class="flex-container">
<div class="flex-item">1</div>
<div class="flex-item">2</div>
<div class="flex-item" style="flex: 1 0 50px">3</div>
<div class="flex-item">4</div>
<div class="flex-item">5</div>
</div>
flex item ์์ง๋ฐฉํฅ์ผ๋ก ์ ๋ ฌ
๊ธฐ๋ณธ๊ฐ auto, align-tiems์์ฑ๋ณด๋ค ์ฐ์ ์ ์ผ๋ก ๊ฐ๊ฐ์ ๊ฐ๋ณ item์ ์ ๋ ฌ
z-index
์์ฑ์ ์ผ๋ฐ์ ์ผ๋ก position
์์ฑ์ด static
์ด ์๋ ์์์ ๋ํด์๋ง ์๋ํ๋ค. ๊ทธ ์ด์ ๋ z-index
๊ฐ ์์์ ์์ ์์๋ฅผ ๊ฒฐ์ ํ๋๋ฐ, position
์์ฑ์ด static
์ธ ๊ฒฝ์ฐ์๋ ์์ ์์๋ฅผ ๋ณ๊ฒฝํ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์ด๋ค.
๊ทธ๋ฐ๋ฐ, display: flex
๋ฅผ ์ฌ์ฉํ๋ฉด ํด๋น ์์์ ์์ ์์๋ค์ด Flex Container๋ก์ ์๋ก์ด ์์ ๋งฅ๋ฝ์ ํ์ฑํ๋ค. Flex Container ๋ด์ ์์ ์์๋ค์ Flex Item์ด ๋๋ฉฐ, ์ด๋ค ๊ฐ์ ์์ ์์๋ ์ผ๋ฐ์ ์ธ ๋ฌธ์ ํ๋ฆ์์์ ์์ ์์์๋ ๋ค๋ฅผ ์ ์๋ค. Flex Container ๋ด์ Flex Item์ Flex Context ๋ด์์๋ง ์์ด๋ฏ๋ก, z-index
๊ฐ ๋ ์ฝ๊ฒ ์ ์ฉ๋ ์ ์๋ค.
์ด๋ Flex Container๊ฐ ์์ ์ปจํ
์คํธ๋ฅผ ํ์ฑํ๊ณ ๊ทธ ๋ด์์๋ z-index
๊ฐ ์ข ๋ ์์ ๋กญ๊ฒ ๋์ํ ์ ์๊ฒ ๋๊ธฐ ๋๋ฌธ์ด๋ค. Flex Container๋ฅผ ์ฌ์ฉํ๋ฉด์ position: relative
๋ position: absolute
๋ฅผ ์ฌ์ฉํ์ง ์์๋ z-index
๋ฅผ ํตํด ์์๋ค์ ์์ ์์๋ฅผ ์กฐ์ ํ ์ ์๋ค. ์ด๋ Flex Container๊ฐ ์๋ก์ด ์์ ์ปจํ
์คํธ๋ฅผ ํ์ฑํ๋ฉด์ ์ผ๋ฐ์ ์ธ ์์ ๊ท์น๊ณผ๋ ๋
๋ฆฝ์ ์ผ๋ก ๋์ํ๊ธฐ ๋๋ฌธ์ด๋ค.