'flex๋ฅผ ํด๋ณด์!' ๋ผ๊ณ ์๊ฐ๋งํ์๋๋ฐ ๋๋์ด ์ฌ๋ฆฐ๋ค๐
์ด๋ก ์ ์ข ๋ฐฐ์๋ณด๋ ํท๊ฐ๋ฆฌ๋๊ฒ ๋ง๋ค.. ์ด๋ก ํ์ ์์ฉ์ ๊ผญ ํด๋ณด๊ณ ์ดํด๋ฅผ ํ์โ
๋ธ๋ผ์ฐ์ ํธํ
Flexible Box๋ฅผ ์ฐ๋ ์ด์
๋๋ถ๋ถ ์ฌ์ดํธ๋ ๋ ์ด์์์ด ์์ง ๊ตฌ์ฑ์ด๋ฉฐ '์-์๋'๋ก ์คํฌ๋กค ํ์ฌ ์ฌ์ฉํ๋ค.
๋ ์ด์์์ ๊ตฌ์ฑํ ๋ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ ์์๋ค์ด ๊ธฐ๋ณธ์ ์ผ๋ก ๋ธ๋ก(block) ๊ฐ๋
์ผ๋ก ํ์(display)๋๋ฉฐ
์ด๋ ๋ทฐ(view)์ ์์ง(์์์ ์๋)์ผ๋ก ์์ด๊ธฐ ๋๋ฌธ์ ์์ง ๊ตฌ์ฑ์ ์๋์ ์ผ๋ก ์ฝ๋ค.
ํ์ง๋ง, ์ํ๊ตฌ์กฐ๋ฅผ ๋ง๋๋ ์์ฑ์ด ๋ช
ํํ์ง ์์ <table>
์ด๋ float
, inline-block
์ ํตํด ๋ง๋ ๋ค.
๊ทธ๋ฌ๋ ์ด๋ฌํ ๋ฐฉ๋ฒ๋ค์ ๋ค์ํ ๋ฌธ์ก(clear, white space ๋ฑ, ํด๊ฒฐ ๊ฐ๋ฅํ๋ค๋ง)๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ ์ํ ๋ ์ด์์ ๊ตฌ์ฑ์ ์ฐจ์ ์ฑ
์ผ ๋ฟ์ด๋ค.
์ด๋ฅผ Flex(Flexible Box)๋ก ๋ ์ด์์์ ์ฝ๊ฒ ๊ตฌ์ฑํ ์ ์๊ฒ๋์๋ค.
๊ฐ๋จํ ์์ ๋ฅผ ํตํด float๊ณผ flex๋ฅผ ์์๋ณด์.
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="clear-element"></div>
.box { float: left; }
.clear-element { clear: both; /* or left */ }
/* ์ด ๋ฐฉ๋ฒ๋ ์์ผ๋ ๊ถ์ฅํ์ง๋ ์๋๋ค. ๊ฐ์ํด๋์ค๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค. */
์ ๋ฐฉ๋ฒ์ ๋จ์ํ๋box
๋ฅผ ์ ์ธํ clear-element
๋ผ๋ ์ด๋ฆ(class)์ ๋ค์(next) ์์๋ ์์ด์ผ ํ๊ธฐ ๋๋ฌธ์ ์ค์ ์ฌ์ฉ์ ๋ถํธํ๋ฉฐ ๋ช
ํํ์ง ์๋ค. (์ด๋ฆ์ ํ๋ ๋ ๋ช
์ํด์ค์ผ ํ๊ธฐ ๋๋ฌธ์.)
์๋์ ๊ฐ์ด ์ฌ์ฉํ๋ค.
<div class="clearfix">
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
</div>
/* IE ํต์ด๋ ๊ธฐํ ๋ฐฉ์์ ์ ์ธํ๊ณ ๊ฐ์ฅ ์๋ฆฌ์ ์ถฉ์คํ ๋ฐฉ๋ฒ */
.clearfix::after {
content: "";
display: block;
clear: both;
}
.box { float: left; }
flex์ ์์ฑ๋ฐฉ๋ฒ.
<div class="box-container">
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
</div>
.box-container { display: flex; }
flex๋ ์ํ์ด ๋ ์์๋ค์ container(box-container
)์ display: flex;
๋ฅผ ์ ์ฉํ๋ค.
(์ธ๋ถ ์์ฑ์ด ํ์ํ์ง ์๋ ๊ฒฝ์ฐ๋ ๋ง์ ์ฝ๊ณ ๋น ๋ฅด๊ฒ ์ํ ์์๋ฅผ ๊ตฌ์ฑํ ์ ์๋ค.)
CSS3 Flexible Box
flex๋ ๋ ๊ฐ์ ๊ฐ๋ ์ผ๋ก ๋๋๋ค.
- container :: items๋ฅผ ๊ฐ์ธ๋ ๋ถ๋ชจ์์๋ก ๊ฐ item์ ์ ๋ ฌํ๊ธฐ ์ํด์๋ container๊ฐ ํ์!
- items :: container์ ์์์์
container์ items์ ์ ์ฉํ๋ ์์ฑ์ด ๊ตฌ๋ถ๋์ด ์๋ค.
- container ::
display
,flex-flow
,justify-content
๋ฑ์ ์์ฑ.- items ::
order
,flex
,align-self
๋ฑ์ ์์ฑ์ด ์๋ค.
1. Flex Container
์์ฑ | ์๋ฏธ |
---|---|
display | flex container ์ ์ |
flex-flow | flex-direction ์ flex-wrap์ ๋จ์ถ ์์ฑ |
flex-direction | flex items์ ์ฃผ ์ถ(main-axis) ์ค์ |
flex-wrap | flex items์ ์ฌ๋ฌ ์ค ๋ฌถ์(์ค ๋ฐ๊ฟ) ์ค์ |
justify-content | ์ฃผ ์ถ(max-axis) ์ ์ ๋ ฌ ๋ฐฉ๋ฒ ์ค์ |
align-content | ๊ต์ฐจ ์ถ(cross-axis)์ ์ ๋ ฌ ๋ฐฉ๋ฒ ์ค์ (2์ค ์ด์) |
align-items | ๊ต์ฐจ ์ถ(cross-axis)์์ items์ ์ ๋ ฌ ๋ฐฉ๋ฒ์ ์ค์ (1์ค) |
1-1. display
display: flex | inline-flex
- items๊ฐ ์๋ container๊ฐ ์ํฅ์ ๋ฐ๋๋ค.
- display ์์ฑ์ผ๋ก flex container๋ฅผ ์ ์ํ๋ค.
๊ฐ | ์๋ฏธ | ์ค๋ช |
---|---|---|
flex | block ํน์ฑ์ flex container๋ฅผ ์ ์ | block ์์์ ๊ฐ์ ์์ง์์ ๐ฝ ๐ฝ |
inline-flex | inline ํน์ฑ์ flex container๋ฅผ ์ ์ | inline(inline-block)์์์ ๊ฐ์ ์ํ ์์ โถ๏ธโถ๏ธ |
-
display: flex
- block ์์์ ๊ฐ์ ์ฑํฅ(์์ง ์์)์ ๊ฐ์ง๋ค.
-
display: inline-flex
- inline(ilnine-block) ์์์ ๊ฐ์ ์ฑํฅ(์ํ ์์)์ ๊ฐ์ง๋ค.
๐ฅ์ฃผ์
์ฌ๊ธฐ์ ๋งํ๋ ์์ง๊ณผ ์ํ ์์์ items์ด ์๋๋ผ container์ด๋ค.
๋ ๊ฐ์ ์ฐจ์ด๋ ๋ด๋ถ์ items์๋ ์ํฅ์ ์ฃผ์ง ์๋๋ค!!
1-2. flex-flow
flex-flow: ์ฃผ์ถ ์ฌ๋ฌ์ค๋ฌถ์;
์ด ์์ฑ์ ๋จ์ถ ์์ฑ์ผ๋ก flex items์ ์ฃผ์ถ(main-axis)์ ์ค์ ํ๊ณ items์ ์ฌ๋ฌ ์ค ๋ฌถ์(์ค ๋ฐ๊ฟ)๋ ์ค์ ํ๋ค.
๊ฐ | ์๋ฏธ | ๊ธฐ๋ณธ๊ฐ |
---|---|---|
flex-direction | items์ ์ฃผ์ถ(main-axis)์ ์ค์ | row |
flex-wrap | items์ ์ฌ๋ฌ ์ค ๋ฌถ์(์ค ๋ฐ๊ฟ) ์ค์ | nowrap |
1-2-1. flex-direction
flex-direction: ์ฃผ์ถ;
items์ ์ฃผ ์ถ(main-axis)์ ์ค์ .
๊ฐ | ์๋ฏธ | ๊ธฐ๋ณธ๊ฐ |
---|---|---|
row | items๋ฅผ ์ํ์ถ(์ผ→์ค)์ผ๋ก ํ์ | row |
row-reverse | items๋ฅผ row ๋ฐ๋ ์ถ์ผ๋ก ํ์ |
|
column | items๋ฅผ ์์ง์ถ(์→์๋)๋ก ํ์ | |
column-reverse | itmes๋ฅผ column ์ ๋ฐ๋์ถ์ผ๋ก ํ์ |
1-2-2. ์ฃผ ์ถ(main-axis)๊ณผ ๊ต์ฐจ ์ถ(cross-axis)
- ๊ฐ
row
:: items๋ฅผ ์ํ์ถ์ผ๋ก ํ์ํ๋ฏ๋ก ์ฃผ ์ถ์ด ์ํ / ๊ต์ฐจ ์ถ์ ์์ง. (๋๋น) - ๊ฐ
column
:: itmes๋ฅผ ์์ง์ถ์ผ๋ก ํ์ํ๋ฏ๋ก ์ฃผ ์ถ์ด ์์ง / ๊ต์ฐจ ์ถ์ ์ํ. (๋์ด)
์ฆ, ๋ฐฉํฅ(์ํ, ์์ง)์ ๋ฐ๋ผ ์ฃผ ์ถ๊ณผ ๊ต์ฐจ ์ถ์ด ๋ฌ๋ผ์ง๋ค.
1-2-3. ์์์ (flex-start)๊ณผ ๋์ (flex-end)
์ฃผ ์ถ์ด๋ ๊ต์ฐจ ์ถ์ ์์ํ๋ ์ง์ ๊ณผ ๋๋๋ ์ง์ ์ ์ง์นญ.
์ญ์ ๋ฐฉํฅ์ ๋ฐ๋ผ ์์์ ๊ณผ ๋์ ์ด ๋ฌ๋ผ์ง๋ค.
1-2-4. flex-wrap
flex-wrap: ์ฌ๋ฌ์ค๋ฌถ์;
items์ ์ฌ๋ฌ ์ค ๋ฌถ์(์ค ๋ฐ๊ฟ)์ ์ค์ .
๊ฐ | ์๋ฏธ | ๊ธฐ๋ณธ๊ฐ |
---|---|---|
nowrap | ๋ชจ๋ items๋ฅผ ์ฌ๋ฌ ์ค๋ก ๋ฌถ์ง ์์(ํ ์ค ํ์). ์ค๋ฐ๊ฟ์ ํ์ง ์๋๋ค. |
nowrap |
wrap | items๋ฅผ ์ฌ๋ฌ ์ค๋ก ๋ฌถ์. ์ค๋ฐ๊ฟ์ ํ๋ค. |
|
wrap-reverse | items๋ฅผ wrap ์ ์ญ๋ฐฉํฅ์ผ๋ก ์ฌ๋ฌ ์ค๋ก ๋ฌถ์.์ค๋ฐ๊ฟ์ ํ๋ค. |
1-3. justify-content / ์ฃผ์ถ ์ ๋ ฌ
justify-content: ์ ๋ ฌ๋ฐฉ๋ฒ;
์ฃผ ์ถ(main-axis)์ ์ค์ฌ์ผ๋ก ์ ๋ ฌ ๋ฐฉ๋ฒ์ ์ค์ .
๊ฐ | ์๋ฏธ | ๊ธฐ๋ณธ๊ฐ |
---|---|---|
flex-start | items๋ฅผ ์์์ (flex-start)์ผ๋ก ์ ๋ ฌ | flex-start |
flex-end | itmes๋ฅผ ๋์ (flex-end)์ผ๋ก ์ ๋ ฌ | |
center | items๋ฅผ ๊ฐ์ด๋ฐ ์ ๋ ฌ | |
space-between | ์์ itme์ ์์์ ์, ๋ง์ง๋ง item์ ๋์ ์ ์ ๋ ฌ๋๊ณ , ๋๋จธ์ง items๋ ์ฌ์ด์ ๊ณ ๋ฅด๊ฒ ์ ๋ ฌ๋จ |
|
space-around | items๋ฅผ ๊ท ๋ฑํ ์ฌ๋ฐฑ์ ํฌํจํ์ฌ ์ ๋ ฌ | |
space-evenly | items์ฌ์ด์ ์ ๋์ ๊ท ์ผํ ๊ฐ๊ฒฉ์ ๋ง๋ค์ด์ค๋ค. (IE, ์ฃ์ง ์ง์์๋จ) |
1-4. align-content / ์ฌ๋ฌ ํ ์ ๋ ฌ
align-content: ์ ๋ ฌ๋ฐฉ๋ฒ;
๊ต์ฐจ ์ถ(cross-axis)์ ์ค์ฌ์ผ๋ก ์ ๋ ฌ ๋ฐฉ๋ฒ ์ค์ .
- ์ฃผ์ํ ์ ์
flex-wrap
์์ฑ์ ํตํด items๊ฐ ์ฌ๋ฌ ์ค(2์ค ์ด์)์ด๊ณ ,์ฌ๋ฐฑ์ด ์์ ๊ฒฝ์ฐ๋ง ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.
- items๊ฐ ํ ์ค ์ผ ๊ฒฝ์ฐ
align-items
์์ฑ์ ์ฌ์ฉ.
๊ฐ | ์๋ฏธ | ๊ธฐ๋ณธ๊ฐ |
---|---|---|
strech | container์ ๊ต์ฐจ ์ถ์ ์ฑ์ฐ๊ธฐ ์ํด items์ ๋๋ฆผ | strech |
flex-start | items๋ฅผ ์์์ (flex-start)์ผ๋ก ์ ๋ ฌ | |
flex-end | items ๋์ (flex-end)์ผ๋ก ์ ๋ ฌ | |
center | items๋ฅผ ๊ฐ์ด๋ฐ ์ ๋ ฌ | |
space-between | ์์ items์ ์์์ ์, ๋ง์ง๋ง item์ ๋์ ์ ์ ๋ ฌ๋๊ณ , ๋๋จธ์ง items๋ ์ฌ์ด์ ๊ณ ๋ฅด๊ฒ ์ ๋ ฌ๋จ |
|
space-around | items๋ฅผ ๊ท ๋ฑํ ์ฌ๋ฐฑ์ ํฌํจํ์ฌ ์ ๋ ฌ | |
space-evenly | items์ฌ์ด์ ์ ๋์ ๊ท ์ผํ ๊ฐ๊ฒฉ์ ๋ง๋ค์ด์ค๋ค. (IE, ์ฃ์ง ์ง์์๋จ) |
์ฌ๊ธฐ์ ๊ฐ
strech
๋ ๊ต์ฐจ์ถ์ ํด๋นํ๋ ๋๋น(์์ฑwidth
||height
)๊ฐ
๊ฐ์ดauto
(๊ธฐ๋ณธ๊ฐ)์ผ ๊ฒฝ์ฐ ๊ต์ฐจ ์ถ์ ์ฑ์ฐ๊ธฐ ์ํด ์๋์ผ๋ก ๋์ด๋๋ค.
auto
ํ๋ ์ด์ ? ๋ถ๋ชจ์ ์ํฅ์ ๋ฐ๋๋ค. 100%๋ ์์์ ์ํฅ์ ๋ฐ์์ container์ ์์ญ ๋ฐ์ ๋ฒ์ด๋ ์ ์๋ค.
1-5. align-items / ๊ต์ฐจ์ถ ๋ฐฉํฅ ์ ๋ ฌ
align-items: ์ ๋ ฌ๋ฐฉ๋ฒ;
๊ต์ฐจ์ถ(cross-axis)์ค์ฌ์ผ๋ก items๋ฅผ ์ ๋ ฌ.
items๊ฐ ํ ์ค์ผ ๊ฒฝ์ฐ ๋ง์ด ์ฌ์ฉํ๋ค.
์ฃผ์ํ ์ ์ flow-wrap
์์ฑ์ ํตํด items๊ฐ ์ฌ๋ฌ ์ค(2์ค ์ด์, wrap)์ผ ๊ฒฝ์ฐ align-content
์์ฑ์ด ์ฐ์ ์ด๋ค.
๋ฐ๋ผ์ align-items
๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด align-content
์์ฑ์ ๊ธฐ๋ณธ๊ฐ(strech
)๋ก ์ค์ ํด์ผ ํ๋ค.
๊ฐ | ์๋ฏธ | ๊ธฐ๋ณธ๊ฐ |
---|---|---|
stretch | container์ ๊ต์ฐจ ์ถ์ ์ฑ์ฐ๊ธฐ ์ํด items๋ฅผ ๋๋ฆผ | strech |
flex-start | items๋ฅผ ๊ฐ ์ค์ ์์์ (flex-start)์ผ๋ก ์ ๋ ฌ | |
flex-end | items๋ฅผ ๊ฐ ์ค์ ๋์ (flex-end)์ผ๋ก ์ ๋ ฌ | |
center | items๋ฅผ ๊ฐ์ด๋ฐ ์ ๋ ฌ | |
baseline | items๋ฅผ ๋ฌธ์ ๊ธฐ์ค์ ์ ์ ๋ ฌ |
2. Flex Items
flex item์ ์ํ ์์ฑ์ด๋ค.
์์ฑ | ์๋ฏธ |
---|---|
order | flex item์ ์์๋ฅผ ์ค์ |
flex | flex-grow , flex-shrink , flex-basis ์ ๋จ์ถ ์์ฑ |
flex-grow | flex item์ ์ฆ๊ฐ ๋๋น ๋น์จ ์ค์ |
flex-shrink | flex item์ ๊ฐ์ ๋๋น ๋น์จ ์ค์ |
flex-basis | flex item์ ๊ธฐ๋ณธ ๋๋น ์ค์ |
align-self | ๊ต์ฐจ์ถ์์ item์ ์ ๋ ฌ ๋ฐฉ๋ฒ์ ์ค์ |
2-1. order
order: ์์;
- item์ ์์๋ฅผ ์ค์ .
- item์ ์ซ์๋ฅผ ์ง์ ํ๊ณ ์ซ์๊ฐ ํด์๋ก ์์๊ฐ ๋ฐ๋ฆฐ๋ค.
- ์์ ํ์ฉ.
HTML ๊ตฌ์กฐ์ ์๊ด์์ด ์์๋ฅผ ๋ณ๊ฒฝํ ์ ์์ด ์ ์ฉ!
๊ฐ | ์๋ฏธ | ๊ธฐ๋ณธ๊ฐ |
---|---|---|
์ซ์ | item์ ์์๋ฅผ ์ค์ | 0 |
2-2. flex
flex: ์ฆ๊ฐ๋๋น ๊ฐ์๋๋น ๊ธฐ๋ณธ๋๋น;
item์ ๋๋น(์ฆ๊ฐ, ๊ฐ์, ๊ธฐ๋ณธ) ์ค์ ํ๋ ๋จ์ถ ์์ฑ.
๊ฐ | ์๋ฏธ | ๊ธฐ๋ณธ๊ฐ |
---|---|---|
flex-grow | item์ ์ฆ๊ฐ ๋๋น ๋น์จ ์ค์ | 0 |
flex-shrink | item์ ๊ฐ์ ๋๋น ๋น์จ ์ค์ | 1 |
flex-basis | item์ ๊ธฐ๋ณธ ๋๋น ์ค์ | auto |
.item {
flex: 1 1 20px; /* ์ฆ๊ฐ๋๋น ๊ฐ์๋๋น ๊ธฐ๋ณธ๋๋น */
flex: 1 1; /* ์ฆ๊ฐ๋๋น ๊ฐ์๋๋น */
flex: 1 20px; /* ์ฆ๊ฐ๋๋น ๊ธฐ๋ณธ๋๋น (๋จ์์ฌ์ฉ์ flex-basis๊ฐ ์ ์ฉ.) */
}
[์ฃผ์์ฌํญ]
-
flex-grow
๋ฅผ ์ ์ธํ ๊ฐ๋ณ ์์ฑ์ ์๋ต ๊ฐ๋ฅ.- ๋ง์ฝ
flex: 1
๋ก ์์ฑํ๋ฉดflow-grow: 1;
๊ณผ ๊ฐ๋ค.
- ๋ง์ฝ
-
๊ทธ๋ฌ๋ฉด ๋๋จธ์ง ์์ฑ์ ์๋ตํ์ผ๋ ๊ธฐ๋ณธ๊ฐ ์ ์ฉ๋์ด
flex-shrink: 1;
,flex-basis: auto;
์ผ ๊ฒ์ด๋ค?-
์๋๋ค!!
-
flex-basis
์ ๊ธฐ๋ณธ๊ฐ์auto
์ด์ง๋ง ๋จ์ถ ์์ฑ์ธflex
์์ ๊ทธ ๊ฐ์ ์๋ตํ ๊ฒฝ์ฐ0
์ด๋ค.๋ค์ ์ ๋ฆฌ !
flex: 1;
ํน์flex: 1 1;
์flex: 1 1 auto;
๊ฐ ์๋๋ผ,flex: 1 1 0;
์ด๋ค. - ์ด ๋ถ๋ถ์ ๊ธฐ์ตํ์ง ์์ผ๋ฉด ์๋ฑํ ๊ฒฐ๊ณผ๊ฐ ์ด๋ํ๋ค.
-
2-2-1. flex-grow
flex-grow: ์ฆ๊ฐ๋๋น;
- item์ ์ฆ๊ฐ ๋๋น ๋น์จ ์ค์ .
- item์์๊ฐ container ์์ ๋ด๋ถ์์ ํ ๋น ๊ฐ๋ฅํ ๊ณต๊ฐ์ ์ ๋๋ฅผ ์ ์ธ. ๋ง์ฝ ํ์ ์์๋ก ๋ ๋๋ง ๋ ๋ชจ๋ items์์๋ค์ด ๋์ผํ flex-grow๊ฐ์ ๊ฐ์ง๋ฉด container ๋ด๋ถ์์ ๋์ผํ ๊ณต๊ฐ์ ํ ๋น๋ฐ๋๋ค. ํ์ง๋ง flex-grow ๊ฐ์ผ๋ก ๋ค๋ฅธ ์์๊ฐ์ ์ง์ ํ๋ฉด ๋ค๋ฅธ ๊ณต๊ฐ๊ฐ์ ๋๋์ด ํ ๋น๋ฐ๋๋ค.
- flex-basis์ ๊ฐ๋ณด๋ค ์ปค์ง ์ ์๋์ง๋ฅผ ๊ฒฐ์ ํ๋ ์์ฑ.
- flex-grow์๋ ์ผ๋จ
0
๋ณด๋ค ํฐ ๊ฐ์ด ์ธํ ๋๋ฉด ํด๋น item์ด flexible box๋ก ๋ณํ๊ณ ์๋์ ํฌ๊ธฐ๋ณด๋ค ์ปค์ง๋ฉฐ ๋น ๊ณต๊ฐ์ ๋ฉ์ฐ๊ฒ ๋๋ค.
๋ณดํต flex-grow๋ฅผ ์ฌ์ฉํ ๋, flex-shrink, flex-basis ์์ฑ์ ใ ๋ง๊ป ์ฌ์ฉํ๋ค.
์ผ๋ฐ์ ์ผ๋ก๋ ๋ชจ๋ ๊ฐ์ด ์ค์ ๋์์์ ๋ณด์ฅํ๊ธฐ ์ํด flex(์ถ์ํ)๋ก ์ฌ์ฉํ๋ค.
๊ฐ | ์๋ฏธ | ๊ธฐ๋ณธ๊ฐ |
---|---|---|
์ซ์ | item์ ์ฆ๊ฐ ๋๋น ๋น์จ ์ค์ | 0 |
๋ชจ๋ items์ ์ด ์ฆ๊ฐ ๋๋น(flow-grow
)์์ ๊ฐ item์ ์ฆ๊ฐ ๋๋น์ ๋น์จ๋งํผ ๋๋น๋ฅผ ๊ฐ์ง๋ค.
์๋ฅผ ๋ค์ด item์ด 3๊ฐ์ด๊ณ ์ฆ๊ฐ ๋๋น๊ฐ ๊ฐ๊ฐ 1
, 2
, 1
์ด๋ผ๋ฉด,
์ฒซ ๋ฒ์งธ item์ ์ด ๋๋น๋ 25%(1/4),
๋ ๋ฒ์งธ item์ ์ด ๋๋น๋ 50%(2/4),
์ธ ๋ฒ์งธ item์ ์ด ๋๋น๋ 25%(1/4)๋ฅผ ๊ฐ์ง๊ฒ ๋๋ค.
๊ฐ ์์ดํ ์ ์ปจํ ์ธ ๊ฐ 'a', 'bbbbbbb', 'cc'๋ก ์๋์ ํฌ๊ธฐ๊ฐ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ "์ฌ๋ฐฑ์ ๋น"๋ก ์๊ฐํด์ผ ํ๋ค.
2-2-2. flex-shrink
flex-shrink: ๊ฐ์ ๋๋น;
- item์ด ๊ฐ์ํ๋ ๋๋น์ ๋น์จ์ ์ค์ .
- ์ซ์๊ฐ ํฌ๋ฉด ๋ ๋ง์ ๋๋น๊ฐ ๊ฐ์.
-
item ์์์ ํฌ๊ธฐ๊ฐ container ์์์ ํฌ๊ธฐ๋ณด๋ค ํด ๋ flex-shrink ์์ฑ์ ์ฌ์ฉํ๋๋ฐ,
์ค์ ๋ ์ซ์๊ฐ์ ๋ฐ๋ผ container ์์ ๋ด๋ถ์์ item ์์์ ํฌ๊ธฐ๊ฐ ์ถ์๋๋ค.
๊ธฐ๋ณธ๊ฐ์ด
0
๋ณด๋ค ํฐ ๊ฐ์ด ์ธํ ๋๋ฉด ํด๋น ์์ดํ ์ด flexible Box๋ก ๋ณํ๊ณ flex-basis๋ณด๋ค ์์์ง๋ค.
๊ฐ | ์๋ฏธ | ๊ธฐ๋ณธ๊ฐ |
---|---|---|
์ซ์ | item์ ๊ฐ์ ๋๋น ๋น์จ ์ค์ | 1 |
๊ฐ์ ๋๋น(flex-shrink
)๋ ์์์ ๋๋น์ ์ํฅ์ ๋ฐ๊ธฐ ๋๋ฌธ์ ๊ณ์ฐํ๊ธฐ ๊น๋ค๋กญ๋ค.
์ํฅ์ ๋ฐ๋๋ค๋ ์์์ ๋๋น๋ width
,height
, flex-basis
๋ฑ์ผ๋ก ๋๋น๊ฐ ์ง์ ๋ ๊ฒฝ์ฐ๋ฅผ ์๋ฏธํ๋ค.
container์ ๋๋น๊ฐ ์ค์ด items์ ๋๋น์ ์ํฅ์ ๋ฏธ์น ๊ฒฝ์ฐ, ์ํฅ์ ๋ฏธ์น๊ธฐ ์์ํ ์ง์ ๋ถํฐ ์ค์ด๋ ๊ฑฐ๋ฆฌ ๋งํผ ๊ฐ์ ๋๋น ๋น์จ์ ๋ง๊ฒ item์ ๋๋น๊ฐ ์ค์ด๋ ๋ค.
์๋ฅผ ๋ค์ด container์ ๋๋น๊ฐ ์ค์ด item์ ๋๋น์ ์ํฅ์ ๋ฏธ์น๊ธฐ ์์ํ ์ง์ ๋ถํฐ ์ค์ ์ค์ด๋ ๊ฑฐ๋ฆฌ๊ฐ 90px
์ผ ๋, ์์ ๋๋น๊ฐ ๊ฐ์ item์ด 2๊ฐ์ด๊ณ (200px
) ์ง์ ๋ ๊ฐ์ ๋๋น๊ฐ ๊ฐ๊ฐ 2
์ 1
์ด๋ผ๋ฉด, ์ฒซ ๋ฒ์งธ item์ 90px
์ 2/3์ธ 60px
๋งํผ ๋๋น๊ฐ ๊ฐ์ํ๊ณ , ๋ ๋ฒ์งธ item์ 90px
์ 1/3์ธ 30px
๋งํผ ๋๋น๊ฐ ๊ฐ์ํ๋ค.
์ฒซ ๋ฒ์งธ item์ ๋๋น๋ 200px - 60px = 140px
, ๋ ๋ฒ์งธ item์ ๋๋น๋ 200px - 30px = 170px
์ด ๋์๋ค.
๋ค๋ฅธ ์์๋ก container์ ๋๋น๊ฐ ์ค์ด item์ ๋๋น์ ์ํฅ์ ๋ฏธ์น๊ธฐ ์์ํ ์ง์ ๋ถํฐ ์ค์ ์ค์ด๋ ๊ฑฐ๋ฆฌ๊ฐ 90px
์ผ ๋, ์์ ๋๋น๊ฐ ๋ค๋ฅธ item์ด 2๊ฐ์ด๊ณ ์์ ๋๋น๋ ๊ฐ๊ฐ 200px
๊ณผ 100px
์ด๊ณ , ์ง์ ๋ ๊ฐ์ ๋๋น๊ฐ ๊ฐ๊ฐ 2
์ 1
์ด๋ผ๋ฉด, 200px * 2 = 400
๊ณผ 100px * 1 = 100
. ์ฆ ๊ฐ์ ๋๋น๋ 4:1 ๋น์จ์ด๋ฉฐ, ์ฒซ ๋ฒ์งธ item์ 90px
์ 4/5์ธ 72px
๋งํผ ๋๋น๊ฐ ๊ฐ์ํ๊ณ , ๋ ๋ฒ์งธ item์ 90px
์ 1/5์ธ 18px
๋งํผ ๋๋น๊ฐ ๊ฐ์ํ๋ค.
์ฒซ ๋ฒ์งธ item์ ๋๋น๋ 200px - 72px = 128px
, ๋ ๋ฒ์งธ item์ ๋๋น๋ 100px - 18px = 82px
์ด ๋์๋ค.
[ํ๋๋ ์์ ]
item ๊ณ ์ ํฌ๊ธฐ๋ width๋ก ์ค์ . container์ ๋ฐ๋ผ 2๋ฒ ์งธ item์ด ๋ณํํ๋ค.
.container {
display: flex;
/* (1) width: 100%; */
/* (2) width: 250px; */
}
.item:nth-child(1) {
flex-shrink: 0;
width: 100px;
}
.item:nth-child(2) {
flex-grow: 1;
}
๊ฒฐ๊ณผ.
(1) container๊ฐ width: 100%; ์ผ ๋,
container ๋๋น ๊ธฐ์ค์ผ๋ก item1์ ๊ณ ์ 100px์ด๋ค.
item2๋ width: 100% ์ํฅ์ผ๋ก item1์ ๋๋น๋ฅผ ์ ์ธํ ๋๋จธ์ง ๋๋น๋ฅผ ์ฑ์ด๋ค.
(2) container๊ฐ width: 250px; ์ผ ๋,
container ๋๋น ๊ธฐ์ค๊ณผ flex-shrink: 0; ๋ก ์ธํด item1์ ๊ณ ์ 100px์ด๋ค.
item2๋ 250px - 100px = 150px์ด ๋๋ค.
flex-shrink: 0;
๋๋ถ์ container๊ฐ ์๋ฌด๋ฆฌ ์์์ ธ๋ ์ฒซ ๋ฒ์งธ item์ ๋๋น๋ 100px๋ก ๊ณ ์ ๋๋ค.
2-2-3. flex-basis
flex-basis: ๊ธฐ๋ณธ๋๋น;
- item์ ๊ธฐ๋ณธ ๋๋น๋ฅผ ์ค์ .
- ๊ฐ์ด
auto
์ผ ๊ฒฝ์ฐwidth
,height
๋ฑ์ ์์ฑ์ผ๋ก item์ ๋๋น๋ฅผ ์ค์ ํ ์ ์๋ค. - ๋จ์ ๊ฐ์ด ์ฃผ์ด์ง ๊ฒฝ์ฐ ์ค์ ํ ์ ์๋ค.
๊ฐ | ์๋ฏธ | ๊ธฐ๋ณธ๊ฐ |
---|---|---|
auto | ๊ฐ๋ณ item๊ณผ ๊ฐ์ ๋๋น | auto |
๋จ์ | px, em, cm ๋ฑ ๋จ์๋ก ์ง์ |
2-3. align-self
align-self: ์ ๋ ฌ๋ฐฉ๋ฒ;
๊ต์ฐจ์ถ์์ ๊ฐ๋ณ item์ ์ ๋ ฌ ๋ฐฉ๋ฒ์ ์ค์ .
align-item
๋ container ๋ด ๋ชจ๋ items์ ์ ๋ ฌ ๋ฐฉ๋ฒ์ ์ค์ .
ํ์์ ์ํด ์ผ๋ถ item๋ง ์ ๋ ฌ ๋ฐฉ๋ฒ์ ๋ณ๊ฒฝํ๋ ค๊ณ ํ ๊ฒฝ์ฐ align-self
๋ฅผ ์ฌ์ฉํ๋ค.
align-items
์์ฑ๋ณด๋ค ์ฐ์ ์์ฑ์ด๋ค.
๊ฐ | ์๋ฏธ | ๊ธฐ๋ณธ๊ฐ |
---|---|---|
auto | container์ align-items ์์ฑ์ ์์๋ฐ์ |
auto |
strech | container์ ๊ต์ฐจ์ถ์ ์ฑ์ฐ๊ธฐ ์ํด item์ ๋๋ฆผ | |
flex-start | item์ ๊ฐ ์ค์ ์์์ (flex-start)์ผ๋ก ์ ๋ ฌ | |
flex-end | item์ ๊ฐ ์ค์ ๋์ (flex-end)์ผ๋ก ์ ๋ ฌ | |
center | item์ ๊ฐ์ด๋ฐ ์ ๋ ฌ | |
baseline | item์ ๋ฌธ์ ๊ธฐ์ค์ ์ ์ ๋ ฌ |
2-4. order
order: ๋์ด์์;
- ์ซ์๊ฐ ์์์๋ก ๋จผ์ ๋ฐฐ์น.
- "์๊ฐ์ "์์ ์ผ ๋ฟ, HTML ์์ฒด์ ๊ตฌ์กฐ๋ฅผ ๋ฐ๊พธ๋ ๊ฒ์ ์๋๋ฏ๋ก ์ ๊ทผ์ฑ์ ์ฃผ์ํด์ผ ํ๋ค.
.item:nth-child(1) { order: 3; } /* A */
.item:nth-child(2) { order: 1; } /* B */
.item:nth-child(3) { order: 2; } /* C */
/* ๊ฒฐ๊ณผ B C A ์์ผ๋ก ์ ๋ ฌ. */
2-5. z-index
z-index๋ก Z์ถ ์ ๋ ฌ์ด ๊ฐ๋ฅํ๋ค.
์ซ์๊ฐ ํด์๋ก ์๋ก ์ฌ๋ผ์จ๋ค. (position์์์ z-index๋ผ๊ณ ์๊ฐํ๋ฉด ๋จ.)
.item:nth-child(2) {
z-index: 1;
transform: scale(2);
}
/* z-index๋ฅผ ์ค์ ์ํ๋ฉด 0์ด๋ฏ๋ก, 1๋ง ์ค์ ํด๋ ๋๋จธ์ง ์์ดํ
๋ณด๋ค ์๋ก ์ฌ๋ผ์จ๋ค. */
Reference
CSS Flex(Flexible Box)์๋ฒฝ๊ฐ์ด๋
'๐ฉ๐ปโ๐ปSTUDY > CSS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[CSS] ํ์ ์ ํ์, ์ธ์ ํ์ ์ ํ์ (0) | 2021.04.02 |
---|---|
[CSS] flexbox๋ก ๋ง๋ค ์ ์๋ 10๊ฐ์ง ๋ ์ด์์ (0) | 2021.01.22 |
[CSS] CSS๋ฐฉ๋ฒ๋ก (BEM/OOCSS/SMACSS) (0) | 2020.09.11 |
[CSS] padding position ์์ญ (0) | 2020.07.07 |
[CSS] height: 100% VS height: auto (0) | 2020.07.02 |