- ์ ์ฒด์ ์ธ ์ ๋ ฌ์ด๋ ํ๋ฆ์ ๊ด๋ จ๋ ์์ฑ flex container
- ์์ ์์์ ํฌ๊ธฐ๋ ์์์ ๊ด๋ จ๋ ์์ฑ flex item
flexbox๋ฅผ ํ์ฉํ 10๊ฐ์ง ๋ ์ด์์ ์ฌ๋ก
์ด ๋ ์ด์์์ ๊ธฐ์กด์ display ์์ฑ์ด๋ float ์์ฑ, position ์์ฑ ๋ฑ์ผ๋ก ๊ตฌํ์ด ์ด๋ ต๊ฑฐ๋ ๊ตฌํ์ด ๋ถ๊ฐ๋ฅํ๋ค. ํ์ง๋ง flexbox๋ฅผ ์ฌ์ฉํ๋ฉด ์ฝ๊ฒ ๊ตฌํํ ์ ์๋ค.
[์์]
- ์คํฌ๋กค ์๋ 100% ๋ ์ด์์
- ๋ด๋น๊ฒ์ด์ ์์ญ
- ๋ธ๋ผ์ฐ์ ํ๋ฉด ์๋์ ๋ถ๋ ํธํฐ
- ์ ๋ ฌ์ด ๋ค๋ฅธ ๋ฉ๋ด
- ํผ ๋ ์ด๋ธ ์์ง ์ค์ ์ ๋ ฌ
- ์ค์ ์ ๋ ฌ ์์ด์ฝ
- ์ ๋ ๋๋น ๋ฐ์ค
- ๋ง์ค์๊ณผ ์์ด์ฝ
- ์์๋๋ก ํ๋ฅด๋ ๋ชฉ๋ก
- ๊ฐ๋ก์ธ๋ก ๋น์จ์ ์ ์งํ๋ ๋ฐ์ํ ๋ฐ์ค
1. ์คํฌ๋กค ์๋ 100% ๋ ์ด์์
์ ์ฒดํ์ด์ง๋ฅผ ๊ตฌ์ฑํ ๋ ์์ฃผ ์ฌ์ฉํ๋ ๋ ์ด์์์ด๋ค.
๋ค์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ฝํ ์ธ ์ ๊ธธ์ด์ ์๊ด์์ด ๋ธ๋ผ์ฐ์ ํ๋ฉด ์ ์ฒด๋ฅผ ์ฑ์ฐ๋ ๋ ์ด์์์ด๋ค.
๋ฉ๋ด ์์ญ์ ๋์ด๋ ๊ณ ์ .(header: 65px / tablist: 70px) ๋ถ๋ชจ ์์ญ(content)์์ ๋ฉ๋ด ์์ญ์ ๋บ ๋๋จธ์ง ์์ญ ์ ์ฒด๋ฅผ ์์์์(aside, main)๊ฐ ์ฑ์ด๋ค.
๋จผ์ ๋ ์ด์์์ ๋ง๋ค๊ณ ํ๋์ฉ ์ดํดํด๋ณด์!
.flex_container {
display: flex;
flex-direction: column;
height: 100%;
}
.flex_item {
flex: 1; /* flex: 1 1 0 */
overflow: auto;
}
flex container(flex_container)์ flex-direction: column
์์ฑ์ ์ ์ฉํด flex item์ ์์ง์ผ๋ก ์ ๋ ฌํ๋ค.
flex item(flex_item)์๋ flex: 1
์์ฑ์ ์ ์ฉํด flex item์ด ๋น ๊ณต๊ฐ์ ์ฑ์ฐ๊ฒ ํ๋ค.
flex-direction _ column ์ผ๋ก ์์ง ๋ฐฉํฅ ์ ๋ ฌ ์ค์
flexbox ๋ ์ด์์์์ ์ฃผ์ถ์ ๋ฐฉํฅ์ ์ผ์ชฝ → ์ค๋ฅธ์ชฝ ์ผ๋ก ํฅํ๋ ์ํ ๋ฐฉํฅ์ด ๊ธฐ๋ณธ์ด๋ค.
ํ์ง๋ง ์์๋ฅผ ์์ง์ผ๋ก ๋ฐฐ์ดํ๋ ค๋ฉด, ์ฃผ์ถ์ด ์์์ ์๋๋ก ํฅํ๊ฒ ๋ฐ๊ฟ์ผ ํ๋ค. => column ์ผ๋ก ์ค์ .
row
:: ์ํ๋ฐฉํฅ
column
:: ์์ง๋ฐฉํฅ
flex: 1 _ ์์ ์์์ ํฌ๊ธฐ ํ์ฅ
flex item์ ํฌ๊ธฐ์ ๊ด๋ จ๋ ์์ฑ.
๋ค์๊ณผ ๊ฐ์ด flex-grow
, flex-shrink
, flex-basis
์์ฑ์ ์ถ์ฝํ ํํ์ด๋ค.
๊ทธ๋ฆผ๊ณผ ๊ฐ์ด flex: 1 1 0;
์์ฑ์ ๋ค์๊ณผ ๊ฐ๋ค.
.flex_item {
flex-grow: 1;
flex-shrink: 1;
flex-basis: 0;
}
flex: 1 1 0
์ ๋ค์๊ณผ ๊ฐ์ด flex: 1
๋ก ํํํ ์ ์๋ค.
.flex_item {
flex: 1;
/* flex: 1 1 0 */
}
flex-grow ์์ฑ
flex-grow
์์ฑ์ item์ ํ์ฅ์ ๊ด๋ จ๋ ์์ฑ.- 0๊ณผ ์์ ์ ์๋ฅผ ์์ฑ๊ฐ์ด ์ฌ์ฉ.
- ์์ฑ๊ฐ์ด
0
์ด๋ฉด flex container์ ํฌ๊ธฐ๊ฐ ์ปค์ ธ๋ flex item์ ํฌ๊ธฐ๊ฐ ์ปค์ง์ง ์๊ณ ์๋ ํฌ๊ธฐ๋ก ์ ์ง๋๋ค. (inline์ผ๋ก ์ ์ง.) - ์์ฑ๊ฐ์ด
1
์ด์์ด๋ฉด flex container์ ํฌ๊ธฐ์ ๋ฐ๋ผ flex item๋ ๋ฌ๋ผ์ง๋ค.
.container {
display: flex;
width: 200px; height: 200px;
}
.item0 {
flex-grow: 0;
}
.item1 {
flex-grow: 1;
}
โ์ ๋ฆฌ
flex-grow ์์ฑ๊ฐ์ด
1
์ด์์ด๋ฉด flex item์ด ์๋ ํฌ๊ธฐ์ ์๊ด์์ด flex container ํฌ๊ธฐ๋ฅผ ๊ฝ ์ฑ์ฐ๊ฒ ๋๋ค.=> flex container์ ํฌ๊ธฐ์ ๋ง๊ฒ flex item์ ํฌ๊ธฐ๊ฐ ์ฑ์์ง๋ค.
๋จ์ฝ, ๋ฐ์ํ์ ์๊ฐํ๊ณ ํ๋ค๋ฉด flex container์ max
, min
์ ์๊ฐํ๊ณ ๋๋น์ ๋์ด๋ฅผ ์ง์ ํ๋ฉด ๋๋ค.
(block, inline, inline-block ๊ฐ๋ ์ผ๋ก ์ฝ๊ฒ ์๊ฐํ์)
flex-shrink ์์ฑ
flex-shrink
๋ flex item์ ์ถ์ ์์ฑ.- ๊ธฐ๋ณธ๊ฐ์
1
flex container์ ํฌ๊ธฐ๊ฐ flex item์ ํฌ๊ธฐ๋ณด๋ค ์์ ๋,
- ์์ฑ๊ฐ์ด
0
์ด๋ฉด flex item์ ํฌ๊ธฐ๊ฐ ์ค์ด๋ค์ง ์๊ณ ์๋ ํฌ๊ธฐ๋ก ์ ์ง๋๋ค. - ์์ฑ๊ฐ์ด
1
์ด์์ด๋ฉด flex item์ ํฌ๊ธฐ๊ฐ flex container์ ํฌ๊ธฐ์ ๋ง์ถ์ด ์ค์ด๋ ๋ค.
.container {
display: flex;
width: 200px; height: 200px;
}
.item0 {
flex-shrink: 0;
width: 80px;
}
.item1 {
flex-shrink: 1;
width: 80px;
}
โ์ ๋ฆฌ
flex-shrink๋ ๊ธฐ๋ณธ๊ฐ์ด
1
.๊ธฐ๋ณธ๊ฐ
1
์ด flex container์ ํฌ๊ธฐ์ ๋ง๊ฒ flex item์ ํฌ๊ธฐ๊ฐ ์ฑ์์ง๋ค.
flex-basis ์์ฑ
flex-basis
์์ฑ์ flex item์ ๊ธฐ๋ณธํฌ๊ธฐ ๊ฒฐ์ ํ๋ ์์ฑ.- ๊ธฐ๋ณธ๊ฐ์
auto
- width ์์ฑ์์ ์ฌ์ฉํ๋ ๋ชจ๋ ๋จ์(px, %, em, rem ๋ฑ)๋ฅผ ์์ฑ๊ฐ์ด ์ฌ์ฉ๊ฐ๋ฅ. flex-basis ์์ฑ์ ๊ฐ์ 30px์ด๋ 30%์ ๊ฐ์ด ์ค์ ํ๋ฉด flex item์ ํฌ๊ธฐ๊ฐ ๊ณ ์ ๋๋ค.
flex-basis ์์ฑ์์ auto
์ ํจ๊ป ์์ฃผ ์ฌ์ฉํ๋ ๊ฒ์ด 0
์ด๋ค.
flex-basis ์์ฑ์ ๊ฐ์ 0
์ผ๋ก ์ค์ ํ๋ฉด flex item์ ์ ๋์ flex item(absolute flex item)์ด ๋์ด flex container๋ฅผ ๊ธฐ์ค์ผ๋ก ํฌ๊ธฐ๊ฐ ๊ฒฐ์ ๋๋ค.
์ฃผ์.
flex-basis ์์ฑ์ ๊ฐ์ 0์ผ๋ก ์ ์ธํ ๋์๋ flex-basis: 0px || 0% ์ ๊ฐ์ด ๋จ์๋ ํจ๊ป ์ค์ ํด์ผ ํ๋ค.
flex-basis ์์ฑ์ ๊ฐ์ auto๋ก ์ค์ ํ๋ฉด flex item์ ์ํ์ flex item(relative flex item)์ด ๋์ด ์ฝํ ์ธ ์ ํฌ๊ธฐ๋ฅผ ๊ธฐ์ค์ผ๋ก ํฌ๊ธฐ๊ฐ ๊ฒฐ์ ๋๋ค.
[์์ 1]
[์์ 2]
flex: 1์ ์๋ฏธ
flex
๋ flex-grow
, flex-shrink
, flex-basis
์์ฑ์ ์ถ์ฝํ ๊ฒ์ด๋ค.
๋ฐ๋ผ์ flex: 1
์ flex: 1 1 0
์์ฑ์ ์๋ฏธํ๋ค.
์ฆ, flex-grow ์์ฑ๊ฐ์ด
1
์ด๊ณ , flex-shrink ์์ฑ๊ฐ์ด1
์ด๊ธฐ ๋๋ฌธ์ flex container์ ํฌ๊ธฐ์ ๋ฐ๋ผ flex item์ ํฌ๊ธฐ๋ ์ปค์ง๊ฑฐ๋ ์์์ง๋ค๋ ์๋ฏธ์ด๋ค.
flex ์์ฑ์ ๊ฐ์ผ๋ก ์ ์ ํ๋๋ง ์ ์ธํ๋ฉด ์ ์ธํ ๊ฐ์ผ flex-grow ์์ฑ์ ๊ฐ์ด ๋๋ค.
๋๋จธ์ง ๊ธฐ๋ณธ๊ฐ์ธ felx-shrink: 1 ์์ฑ๊ณผ flex-basis: 0 ์์ฑ์ด ์ ์ฉ๋๋ค.
flex ์์ฑ์ ํ๊ฐ์ ์ ์ซ๊ฐ์ด ์์ผ๋ฉด flex-grow ์์ฑ์ ๊ฐ๋ง ์ง์ ํ๋ ๋จ์ถ ์์ฑ.
์ฆ flex: 2๋ flex: 2 1 0, flex: 3์ flex 3 1 0์ ๋ํ๋ธ๋ค.
2. ๋ด๋น๊ฒ์ด์ ์์ญ
๋ฉ๋ด์ ๋๋ถ๋ถ์ ๋ด๋น๊ฒ์ด์ ์์ญ์ ์ผ์ชฝ์ผ๋ก ์ ๋ ฌ, 1~2๊ฐ์ ๋ฉ๋ด๋ง ์ค๋ฅธ์ชฝ์ผ๋ก ์ ๋ ฌํ ๋ด๋น๊ฒ์ด์ ์ ์ฝ๊ฒ ๋ณผ ์ ์๋ค.
์ฃผ๋ก GNB(global navigation bar)์ ํด๋นํ๋ ์์๋ ๋ก๊ทธ์ธ ๋ฒํผ์ ์ค๋ฅธ์ชฝ์ ์ ๋ ฌํ๋ค.
.flex_container {
display: flex;
}
.flex_item {
flex: none;
/* flex: 0 0 auto */
}
.flex_item_gnb {
margin-left: auto;
}
ํฌ๊ธฐ๊ฐ ๊ณ ์ ๋์ด์ผ ํ๋ flex item์๋ flex: none
์์ฑ์ ์ ์ฉํ๋ค.
์ค๋ฅธ์ชฝ์ผ๋ก ์ ๋ ฌํ GNB๋ ๋ก๊ทธ์ธ ๋ฒํผ์ ํด๋นํ๋ ์์(flex_item_gnb ํด๋์ค)์๋ margin-left: auto
์์ฑ์ ์ ์ฉํ๋ค.
flex: none ์์ฑ์ผ๋ก ์์ ์์์ ํฌ๊ธฐ ๊ณ ์
๊ณ ์ ๊ฐ ์ค ๋ ์ฌ์ฉ.
๋ด๋น๊ฒ์ด์ ์์ญ์ ๊ธฐ๋ณธ ๊ตฌ์กฐ์์ 'logo', 'search', 'gnb' ์์์ ํฌ๊ธฐ๊ฐ ์ปค์ง๊ฑฐ๋ ์์์ง์ง ์๊ฒ ๋์์ธ.
flex item์ ํฌ๊ธฐ์ ๊ด๋ จ๋ ์์ฑ์ธ flex ์์ฑ์ ๊ธฐ๋ณธ๊ฐ์ flex: 0 1 auto
์ด๋ค. ๊ธฐ๋ณธ๊ฐ์ ์ ์ฉํ๋ฉด flex container์ ํฌ๊ธฐ๊ฐ flex item์ ์ฒด์ ํฌ๊ธฐ๋ณด๋ค ์์์ง ๋ flex item์ ํฌ๊ธฐ๊ฐ ์์์ง๋ค.(์ ๋์ ์ผ๋ก ๋ณํจ.)
flex item์ ํฌ๊ธฐ๋ฅผ ๊ณ ์ ํ๋ ค๋ฉด ๋ฐ๋์
flex: none
์ ์ ์ฉ์ํจ๋ค.
flex: none;
/*
flex: none์ ์ถ์ฝํด ํํ.
flex-grow: 0;
flex-shrink: 0;
flex-basis: auto;
*/
flex: none์ ํ๋์ ์ ์๋ฅผ ์ฌ์ฉํด ์ถ์ฝํ๋ ๋ฐฉ๋ฒ(flex: 1์ ์๋ฏธ ์ฐธ๊ณ
)์ธ์ ์ธ ๊ฐ์ ํค์๋์ธ initial
, none
, auto
๋ฅผ flex ์์ฑ์ ๊ฐ์ผ๋ก ์ค์ ํด ์ถ์ฝํ ์ ์๋ค.
flex | flex-grow | flex-shrink | flex-basis |
---|---|---|---|
initial(๊ธฐ๋ณธ๊ฐ) | 0 | 1 | auto |
none | 0 | 0 | auto |
auto | 1 | 1 | auto |
์์์ ์ | ์ซ์ | 1 | 0 |
-
initial(๊ธฐ๋ณธ๊ฐ)
- flex container์ ํฌ๊ธฐ๊ฐ ์๊ฐ์ง๋ฉด flex item ํฌ๊ธฐ ์์์ง๋ค.
- ํ์ง๋ง flex container์ ํฌ๊ธฐ๊ฐ ์ปค์ ธ๋ flex item์ ํฌ๊ธฐ๊ฐ ์ปค์ง์ง ์๋๋ค.
-
none
- flex item์ ํฌ๊ธฐ๊ฐ ์ปค์ง๊ฑฐ๋ ์์์ง์ง ์๋๋ค.
- felx container์ ํฌ๊ธฐ์ ์ํฅ ๋ฏธ์น์ง ์๊ณ , flex item์ ์๋ ํฌ๊ธฐ๋ฅผ ์ ์งํ๋ค.
-
auto
- flex container์ ํฌ๊ธฐ์ ๋ง์ถ์ด flex item์ ํฌ๊ธฐ๊ฐ ์ปค์ง๊ฑฐ๋ ์์์ง๋ค.
-
์์ ์ ์
- flex container๋ฅผ ์ผ์ ํ ๋น์จ๋ก ๋๋ ๊ฐ์ง๋ฉด์ flex container์ ํฌ๊ธฐ์ ๋ฐ๋ผ flex item์ ํฌ๊ธฐ๊ฐ ์ปค์ง๊ฑฐ๋ ์์์ง๋ค.
margin-left: auto ์์ฑ์ผ๋ก ์์ ์์๋ฅผ ์ค๋ฅธ์ชฝ์ ๋ฐฐ์น
์์์ ๋ฐ๊นฅ ์ฌ๋ฐฑ(margin)์ ์ค์ ํ๋ ์์ฑ์ ์์ฑ๊ฐ์ผ๋ก auto
๋ฅผ ์ ์ฉํ๋ฉด flexbox์์ flex item์ ์ฝ๊ฒ ๋ฐฐ์นํ ์ ์๋ค.
margin: auto
์์ฑ์ ์ ์ฉํ๋ฉด flex item์ ๋ฐ๊นฅ ์ฌ๋ฐฑ์ด ์๋์ผ๋ก ํ์ฅ๋์ด flex item์ด flex container์ ๊ฐ์ด๋ฐ์ ์์นํ๋ค.
flex item์ ์ํ์ผ๋ก ๋ฐฐ์นํ ๋ ๋ค์๊ณผ ๊ฐ์ด
auto
์์ฑ๊ฐ์ ์ฌ์ฉํ ์ ์๋ค.
-
margin-right: auto
- ๋ฐ๊นฅ ์ฌ๋ฐฑ์ด ์ค๋ฅธ์ชฝ์ ๋ชจ๋ ๊ณต๊ฐ์ ์ฐจ์งํ๊ธฐ ์ํด flex item์ ์ค๋ฅธ์ชฝ์์ ์ผ์ชฝ์ผ๋ก ๋ฏผ๋ค. (์ํ ์ค๋ฅธ์ชฝ ์์น.)
-
margin: 0 auto
- ๋ฐ๊นฅ ์ฌ๋ฐฑ์ด flex item์ ์์ชฝ์ผ๋ก ๋ฐ๊ธฐ ๋๋ฌธ์ flex item์ด ์ํ ์ค์์ ์์น.
-
margin-left: auto
- ๋ฐ๊นฅ ์ฌ๋ฐฑ์ด ์ผ์ชฝ์ ๋ชจ๋ ๊ณต๊ฐ์ ์ฐจ์งํ๊ธฐ ์ํด flex item์ ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ์ผ๋ก ๋ฏผ๋ค. (์ํ ์ผ์ชฝ์์น.)
flex-item์ ์์ง์ผ๋ก ๋ฐฐ์นํ ๋ ๋ค์๊ณผ ๊ฐ์ด
auto
์์ฑ๊ฐ์ ์ฌ์ฉํ ์ ์๋ค.
-
margin-bottom: auto
- ๋ฐ๊นฅ ์ฌ๋ฐฑ์ด ์๋์ชฝ์ ๋ชจ๋ ๊ณต๊ฐ์ ์ฐจ์งํ๊ธฐ ์ํด flex item์ ์๋์ชฝ์์ ์์ชฝ์ผ๋ก ๋ฏผ๋ค. (์์ง ์์ชฝ ์์น.)
-
margin: auto
- ๋ฐ๊นฅ ์ฌ๋ฐฑ์ด ์์๋๋ก ๋ฐ๊ธฐ ๋๋ฌธ์ flex item์ด ์์ง ์ค์์ ์์น.
-
margin-top: auto
- ๋ฐ๊นฅ ์ฌ๋ฐฑ์ด ์์ชฝ์ ๋ชจ๋ ๊ณต๊ฐ์ ์ฐจ์งํ๊ธฐ ์ํด flex item์ ์์ชฝ์์ ์๋์ชฝ์ผ๋ก ๋ฏผ๋ค. (์์ง ์๋์ชฝ ์์น.)
flebox์์ margin: auto
์์ฑ์ผ๋ก ๋ ์ด์์์ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ด ํต(hack)์ด๋ผ๊ณ ์๊ฐํด ๋ฒ๊ทธ๋ฅผ ์ผ์ผํค๋ ์์ธ์ด๋ผ ์๊ฐํ ์ ์์ง๋ง, ์คํ๋ ค flex box ๋ช
์ธ์ ๊ถ์ฅํ๋ ๋ฐฉ๋ฒ์ด๋ค. ("CSS Flexible Box Layout Module Level 1"์ '8.1. Aligning with 'auto' margins' ์ฐธ๊ณ )
3. ๋ธ๋ผ์ฐ์ ํ๋ฉด ์๋์ ๋ถ๋ ํธํฐ
.flex_container {
display: flex;
flex-direction: colum;
heiht: 100%;
/* ์ ์ฒด ๋์ด๊ฐ์ ์ค์ผ ํ๋ค. */
}
.flex_item {
margin-top: auto;
}
margin-top: auto ์์ฑ์ผ๋ก ์์ ์์๋ฅผ ํ๋ฉด ์๋์ ๋ฐฐ์น
flex item์ margin-top: auto
์์ฑ์ ์ ์ฉํ๋ฉด ๋ฐ๊นฅ ์ฌ๋ฐฑ์ด flex item์ ์์ชฝ์์ ์๋์ชฝ์ผ๋ก ๋ฐ๊ธฐ ๋๋ฌธ์ flex item์ด ์๋์ชฝ์ ์์นํ๋ค.
4. ์ ๋ ฌ์ด ๋ค๋ฅธ ๋ฉ๋ด
.flex_container {
display: flex;
justify-content: space-between;
}
justify-content: space-between ์์ฑ์ผ๋ก ์์ ์์๋ฅผ ์ผ์ ํ ๊ฐ๊ฒฉ์ผ๋ก ์ ๋ ฌ
justify-content ์์ฑ์ ์ฃผ์ถ์ ๊ธฐ์ค์ผ๋ก flex item์ ์ํ์ ์ ๋ ฌํ๋ค.
-
flex-start(๊ธฐ๋ณธ๊ฐ)
- ์ฃผ์ถ์ ์์ ๋ถ๋ถ์ ๊ธฐ์ค์ผ๋ก flex item์ ์ ๋ ฌ.
-
center
- ์ฃผ์ถ์ ์ค์์ ๊ธฐ์ค์๋ก flex item ์ ๋ ฌ.
-
flex-end
- ์ฃผ์ถ์ ๋๋ถ๋ถ์ ๊ธฐ์ค์ผ๋ก flex item ์ ๋ ฌ.
-
space-around
- ์ฃผ์ถ์ ๊ธฐ์ค์ผ๋ก flex item์ ์ผ์ ํ ๊ฐ๊ฒฉ์ผ๋ก ์ ๋ ฌ.
-
space-between
- ์ฒซ ๋ฒ์งธ์ ๋ง์ง๋ง flex item์ ์ฃผ์ถ์ ์์๊ณผ ๋ ๋ถ๋ถ ์ ๋ ฌํ๊ณ ๋๋จธ์ง flex item์ ์ผ์ ํ ๊ฐ๊ฒฉ์ผ๋ก ์ ๋ ฌ.
5. ํผ ๋ ์ด๋ธ ์์ง ์ค์ ์ ๋ ฌ
ํผ ์์์ ๋ ์ด๋ธ์ ์์ง ์ค์ ์ ๋ ฌํ๋ ๋ ์ด์์์ด๋ค.
.flex_container {
display: flex;
align-items: center;
}
ํผ ๋ ์ด๋ธ์ ํด๋นํ๋ ์์(flex_container ํด๋์ค)์ align-items:center
์์ฑ์ ์ ์ฉํ๋ค.
align-items: center ์์ฑ์ผ๋ก ์์ ์์๋ฅผ ๊ต์ฐจ์ถ์ ์ค์์ ์ ๋ ฌ
align-content
๋ ๋ ์ค ์ด์์ผ ๋ ์ฌ์ฉ.
-
stretch(๊ธฐ๋ณธ๊ฐ)
- flex item์ ๋์ด๋ฅผ ๋๋ ค flex container์ ์ ์ฒด ๋์ด๋ฅผ ์ฑ์ด๋ค.
-
flex-start
- ๊ต์ฐจ์ถ์ ์์ ๋ถ๋ถ์ ๊ธฐ์ค์ผ๋ก flex item์ ์ ๋ ฌ.
-
center
- ๊ต์ฐจ์ถ์ ์ค์ ๊ธฐ์ค์ผ๋ก flex item ์ ๋ ฌ.
-
baseline
- ๊ธ๊ผด์ ๊ธฐ์ค์ ์ธ baseline์ ๊ธฐ์ค์ผ๋ก flex item์ ์ ๋ ฌ.
-
flex-end
- ๊ต์ฐจ์ถ์ ๋๋ถ๋ถ์ ๊ธฐ์ค์ผ๋ก flex item ์ ๋ ฌ.
6. ์ค์ ์ ๋ ฌ ์์ด์ฝ
์์ ์์์ธ ์์ด์ฝ์ด ๋ถ๋ชจ ์์์ ์ ์ค์์ ์์นํ๋ ๋ ์ด์์.
์ค์ ์ ๋ ฌ ์์ด์ฝ์ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ๊ตฌํํ ์ ์๋ค.
์ฒซ ๋ฒ์งธ ๋ฐฉ๋ฒ์ flex container์ align-items: center
์ justify-content: center
์์ฑ์ ์ ์ฉํด ์์ด์ฝ์ ํด๋นํ๋ flex item์ ํ๋ฉด ์ ์ค์์ ์ ๋ ฌํ๋ค.
.flex_container {
display: flex;
align-items: center;
justify-content: center;
height: 100vh; /* ํ๋ฉด์ ์ฒด ๋์ด */
/* ๋์ด๊ฐ์ ๋ฐ๋ก ์ง์ ํด์ค์ผ ํ๋ค. */
}
๋ ๋ฒ์งธ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ด ์์ด์ฝ์ ํด๋นํ๋ flex item์ margin: auto
์์ฑ์ ์ ์ฉํ๋ค.
.flex_container {
display: flex;
/* ๋์ด๊ฐ ๋ฐ๋ก ์ง์ . */
}
.flex_item {
margin: auto;
}
7. ์ ๋ ๋๋น ๋ฐ์ค
์ ๋๋๋น๋ฐ์ค๋ flex container์ธ ๋ถ๋ชจ์์ ํฌ๊ธฐ์ ๋ฐ๋ผ flex item์ธ ์์์์์ ํฌ๊ธฐ๊ฐ ์ฝํ ์ธ ์ ํฌ๊ธฐ๋ณด๋ค ์ค์ด๋๋ ๋ ์ด์์์ด๋ค. (๋ฐ์ํ๋ฐ์ค)
.flex_container {
display: flex;
}
.flex_item {
/* flex: initial; */
max-width: 300px;
}
flex item์ max-width: 300px
๋ง ์ ์ธํ๋ค.
flex item์ ํฌ๊ธฐ์ ๊ด๋ จ๋ ์์ฑ์ธ flex ์์ฑ์ ๊ธฐ๋ณธ๊ฐ์ 0 1 auto
์ด๋ค. flex ์์ฑ์ ์ค์ ํ์ง ์์ผ๋ฉด flex item์๋ ๊ธฐ๋ณธ๊ฐ์ด ์ ์ฉ๋๋ค.
flex ์์ฑ์ ๊ธฐ๋ณธ๊ฐ์ flex-grow: 0 ์์ฑ๊ณผ flex-shrink: 1 ์์ฑ์ ์๋ฏธํ๋ค. ๊ทธ๋์ flex container์ ํฌ๊ธฐ๊ฐ ์ปค์ง ๋๋ flex item์ ํฌ๊ธฐ๋ ๋ณํ์ง ์์ง๋ง, flex container์ ํฌ๊ธฐ๊ฐ ์์์ง๋ฉด flex item์ ํฌ๊ธฐ๋ ์์์ง๋ค.
8. ๋ง์ค์๊ณผ ์์ด์ฝ
๋ง์ค์๊ณผ ์์ด์ฝ ๋ ์ด์์์ flex container์ธ ๋ถ๋ชจ ์์์ ํฌ๊ธฐ๊ฐ ์์ flex item์ธ ์์์์์ ํ ์คํธ๋ฅผ ๋ชจ๋ ํ์ํ ์ ์์ ๋ ์ค์ํ(...)๊ฐ ๋ํ๋๊ฒ ํ๋ ๋ ์ด์์์ด๋ค.
์ด๋ ํ ์คํธ ์์ญ ์์ ์๋ ์์ด์ฝ์ ํฌ๊ธฐ๋ ๊ณ ์ ๋์ด ์๋ค.
.flex_container {
display: inline-flex;
max-width: 100%;
}
.text {
/* flex: 0 1 auto */
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
flex container์ display: inline-flex
์์ฑ๊ณผ max-width: 100%
์์ฑ์ ์ ์ฉํ๋ค.
์ ๋์ ์ธ ๋๋น๋ฅผ ๋ง๋ค ๋์ ๊ฐ์ด
max-width: 100%
์ ํจ๊ป ๋ฃ์ด ์ ์ฉํ๋ค.
display: inline-flex ์์ฑ์ผ๋ก ๋ถ๋ชจ์์๋ฅผ ์ธ๋ผ์ธ ๋ธ๋ก ์์๋ก ๋ง๋ค๊ธฐ
display: inline-flex
์์ฑ์ flex container๋ฅผ ์ธ๋ผ์ธ ๋ธ๋ก ์์๋ก ๋ง๋๋ ์์ฑ์ด๋ค.
display: flex
์์ฑ์ ์ ์ฉํ flex container๋ ๋ธ๋ก์์์ด๋ค.
๋ธ๋ก ์์๋ ๋ธ๋ผ์ฐ์ ํ๋ฉด์ด ํ ์ค๋ก ์ ์ฒด๋ฅผ ์ฐจ์งํ์ง๋ง(
flex
),์ธ๋ผ์ธ ๋ธ๋ก ์์๋ ํ ์ค์ ์ผ๋ถ ์์ญ๋ง ์ฐจ์งํ๋ค(
inline-flex
).
flex container์ ์ ์ฉํ max-width: 100%
์์ฑ์ flex item์ธ ํ
์คํธ์์ญ(.text ํด๋์ค)์ ๊ธธ์ด๊ฐ ์ ๋์ ์ผ๋ก ๋ณํ ์ ์๊ฒ ํด์ค๋ค.
ํ
์คํธ ์์ญ์ด ์ค์ด๋ค ๋ ๋ํ๋๋ text-overflow: ellipsis
์์ฑ์ผ๋ก ๊ตฌํํ๋ค.
9. ์์๋๋ก ํ๋ฅด๋ ๋ชฉ๋ก
์์๋๋ก ํ๋ฅด๋ ๋ชฉ๋ก์ ์์ ์์๋ฅผ ์์๋๋ก ๋จผ์ ์ ๋ ฌํ๊ณ ์์์์๊ฐ ๋ถ๋ชจ์์๋ฅผ ๋ฒ์ด๋๋ฉด ์ค์ ๋ฐ๊ฟ ๋ค์ ์์๋๋ก ์ ๋ ฌํ๋ ๋ ์ด์์์ด๋ค.
.flex_container {
display: flex;
flex-direction: column;
flex-wrap: wrap;
justify-content: space-around;
align-content: space-around;
}
~~ํ๋์ค..
Reference
flexbox๋ก ๋ง๋ค ์ ์๋ 10๊ฐ์ง ๋ ์ด์์
'๐ฉ๐ปโ๐ปSTUDY > CSS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[CSS] margin-collapsing(๋ง์ง ์์) (0) | 2021.06.03 |
---|---|
[CSS] ํ์ ์ ํ์, ์ธ์ ํ์ ์ ํ์ (0) | 2021.04.02 |
[CSS] Flexible Box (0) | 2020.11.19 |
[CSS] CSS๋ฐฉ๋ฒ๋ก (BEM/OOCSS/SMACSS) (0) | 2020.09.11 |
[CSS] padding position ์์ญ (0) | 2020.07.07 |