1) Flex container
2) Flex items
๋ฐ๋ก container์ width height๊ฐ ์ค์ ๋์ด์์ง์๋ค๋ฉด
item์ ํด๋นํ๋ ๋ถ๋ถ์ width height์ ์ถ๊ฐํ์ฌ margin padding์ด ์ ์ฉ๋์ด ๋์ด์ ๋์ด๊ฐ ๋ง๋ค์ด์ง๋ค.
1) display : flex => ์์ง , ๊ฐ๋ก๋ก ์ต๋๋ก
2) display : inline-flex => ์ํ , ๊ฐ๋ก๋ก ์ต์๋ก
1) Default(Row) : ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ์ผ๋ก
2) Row-reverse : ์ค๋ฅธ์ชฝ์์ ์ผ์ชฝ์ผ๋ก
3) column : ์์์ ์๋๋ก
4) column-reverse : ์๋์์ ์๋ก
1) nowrap : ๋ถ๋ชจ ์ปจํ ์ธ ์ฌ์ด์ฆ๋ณด๋ค ์์ ์ปจํ ์ธ ์ฌ์ด์ฆ์ ํฉ์ด ๋ ์ปค๋ ๋ถ๋ชจ ์์์ ๋ค์ ์ค๋ก ๊ฐ์ง์๊ณ ์ฌ์ด์ฆ๋ฅผ ๋ง์ถฐ์ ์ฒ๋ฆฌํ๋ค ( ๊ธฐ๋ณธ๊ฐ : ์ต์ง๋ก ํ์ ๋ง์ถฐ ) => flex-shrink๊ฐ 1๋ก default์ด๊ธฐ ๋๋ฌธ์
2) wrap : ๋ถ๋ชจ ์ปจํ ์ธ ์ฌ์ด์ฆ์ ๋ง์ถฐ์ ์ฌ์ด์ฆ๊ฐ ๋ชจ์๋ผ๋ฉด ๋ค์ ์ค์์ ๋ค์ ๊ทธ๋ฆฐ๋ค. (๊ฐ๋ฅํ๋ฉด ์ด๊ฑธ ์ฐ๊ธธ ์ถ์ฒ)
3) wrap-reverse
1) Flex-start : ์ผ์ชฝ ์ ๋ ฌ
2) Flex-end : ์ค๋ฅธ์ชฝ ์ ๋ ฌ
3) center : ์ข์ฐ ์ค์ ์ ๋ ฌ
4) space-between : ์ฌ์ด์๋ง ์ฌ๋ฐฑ
5) space-around : ์ฌ์ด + ์์ชฝ ๋๋ ์ฌ๋ฐฑ
6) stretch : ๊ฝ ์ฑ์ด๋ค (๊ธฐ๋ณธ๊ฐ)
7) space-evenly : space-around์์ ์๋ ๊ฐ๊ฒฉ๊ณผ ๊ฐ์ ์์ชฝ ๊ฐ๊ฒฉ
1) Flex-start : ์๋ก ์ ๋ ฌ
2) Flex-end : ์๋๋ก ์ ๋ ฌ
3) center : ์์๋์ ์ค์ ์ ๋ ฌ
4) space-between : ๋งจ ์์ ์๋ ๊ณต๋ฐฑ๋ง ์์ด ๊ฐ๊ฐ ์ฌ๋ถ์กด์ฌ
5) space-around : ๋งจ ์์ ์๋ ๊ณต๋ฐฑ ํฌํจ ๊ฐ๊ฐ ์ฌ๋ถ์กด์ฌ
6) stretch : ๊ฝ ์ฑ์ด๋ค (๊ธฐ๋ณธ๊ฐ)
๊ต์ฐจ์ถ ์ ๋ ฌ (์ธ๋ก ๊ธฐ์ค ๊ฐ๋ก ์ฐ๊ธฐ)
Items๊ฐ ์ฌ๋ฌ ์ค(2์ค ์ด์)์ด๊ณ ์ฌ๋ฐฑ์ด ์์ ๊ฒฝ์ฐ๋ง ์ฌ์ฉ
=> flex-wrap : wrap์ผ ๊ฒฝ์ฐ ์ ํจ
1) Flex-start : ์๋ก ์ ๋ ฌ
2) Flex-end : ์๋๋ก ์ ๋ ฌ
3) center : ์์๋์ ์ค์ ์ ๋ ฌ
4) stretch : ๊ฝ ์ฑ์ด๋ค (๊ธฐ๋ณธ๊ฐ)
5) baseline : ๊ธ์๋ฐ๋ผ ์ ๋ ฌ
Items๊ฐ flex-wrap์ ํตํด ์ฌ๋ฌ ์ค(2์ค ์ด์)์ผ ๊ฒฝ์ฐ์๋ align-content ์์ฑ์ด ์ฐ์ ํฉ๋๋ค.
๋ฐ๋ผ์ align-items๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด align-content ์์ฑ์ ๊ธฐ๋ณธ๊ฐ(stretch)์ผ๋ก ์ค์ ํด์ผ ํฉ๋๋ค.
item์ text ์ธ๋ก์ ๋ ฌ์ ์ํด width์ height ๋์
width์ line-height๋ฅผ ์ฐ๋ ๊ฒ์ ์ถ์ฒ
align-items(์ ์ ๋ ฌ) : flex line์ ๊ธฐ์ค์ผ๋ก ์์ดํ ์ ์ ๋ ฌํ๋ค.
align-content(์ ์ ๋ ฌ): flex line์ ์ ๋ ฌํ๋ค.
ex) flex ์์
ex) inline - flex ์์
๊ธฐ๋ณธ : 0
์ฃผ์ถ์ item๋ค์ ๊ฐ๊ฐ์ width๋ฅผ ์ ์ธํ ๋๋จธ์ง ๊ณต๊ฐ ์ฌ๋ฐฑ์ ๋น์จ์ ๋ฐ๋ผ ์ฑ์ด๋ค
( ๋ง์ฝ ์ด๋ฏธ item๋ค์ width์ ํฉ์ด container๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๋ค๋ฉด ๊ฝ ์ฐจ๋ฉด ๋ ๋ค์ด๊ฐ ๊ฒ์ด ์์ผ๋ ๋ณํ๊ฐ ์๋ค )
์ฆ๊ฐ ๋๋น ๋น์จ๋ก ์ปจํ
์ด๋๋ฅผ ์ ๋ถ ์ฑ์ฐ๋ฉฐ
width๋ฅผ ์ ์ธํ ๋๋จธ์ง๋ฅผ ์ง์ ํด์ค๋ค.
1:2:1๋ก ์ก์ผ๋ฉด (width +1 : width + 2 : width +1)
width๊ฐ ๋ฐ๋ก ์์ผ๋ฉด auto๋ก ์ฆ๊ฐ ๋๋น๋ฅผ ๊ฐ๊ฐ ์ฒ๋ฆฌ
1:2:1๋ก ์ก์ผ๋ฉด ( 1 : 2 : 1 )
ํด๋น ๋ด์ฉ์ ๊ฐ๋ณํ๋ ๊ธธ์ด์ ๋ํด ํ๋ฉด์ ์์ญ์ด ์ค์ด๋ค๊ฑฐ๋ ๋์ ๋ ๊ณ ์ ๋ item์ ํฌ๊ธฐ๋ฅผ ๊ฐ์ง ๊ฒ๊ณผ ๊ฐ๋ณํ๋ item ๊ธธ์ด๋ฅผ ๊ฐ์ง ๊ฒ์ผ๋ก ๋๋์ด ์ฒ๋ฆฌํ ์ ์๋ค.
<div class="container">
<div class="item">๊ณ ์ </div>
<div class="item">๊ฐ๋ณ</div>
<div class="item">๊ณ ์ </div>
</div>
<style>
.container{
display:flex
}
.item{
width:100px;
height:100px;
background-color: tomato;
border : 3px solid;
}
.item:nth-child(2){
flex-grow:1;
}
</style>
์ด๋ฐ์์ผ๋ก width๊ฐ ๋ณํด๋ ๊ณ ์ ๋ ๋ถ๋ถ์ ์ ์ง๋๊ณ ๊ฐ๋ณ width๋ง ๋ฐ๋๊ฒ ํ ์ ์๋ค.
๊ธฐ๋ณธ : 1
๊ธฐ๋ณธ : auto
๊ธฐ๋ณธ๊ฐ : 0
๊ธฐ๋ณธ๊ฐ : auto
flex-grow / flex-shrink / flex-basis๋ฅผ ํ๋ฒ์ ์ธ์์๋๋ฐ
์ด๋flex : 1
๋ก ์ค์ ํ๋ฉด ์ด๋flex : 1 1 auto
์๋ flex-basis๊ฐ ๋ค๋ฅด๋ฏ๋ก ๊ฐ์ง์๋ค.
- ๋ชจ๋ margin:right ์ฌ๋ฐฑ ์ง์
.item:last-child
์์ดํ ์ ๋ง์ง๋ง ๋ถ๋ถ๋ง margin:right๋ฅผ 0์ผ๋ก ํ๊ธฐ
์ ๋ชฉ | flex | grid |
---|---|---|
justify-content | container ๊ธฐ์ค ์ฃผ์ถ ์ ๋ ฌ | container ๊ธฐ์ค ์ฃผ์ถ ์ ๋ ฌ |
justify-items | X | items ๊ธฐ์ค ์ฃผ์ถ ์ ๋ ฌ |
align-content | 2์ค ์ด์์ผ๋ ์ฌ์ฉ , items ๊ธฐ์ค ๊ต์ฐจ์ถ ์ ๋ ฌ | container ๊ธฐ์ค ๊ต์ฐจ์ถ ์ ๋ ฌ |
align-items | 1์ค ์ผ๋ ์ฌ์ฉ, items ๊ธฐ์ค ๊ต์ฐจ์ถ ์ ๋ ฌ | items ๊ฐ๊ฐ ๊ต์ฐจ์ถ ๊ธฐ์ค ์ ๋ ฌ |
flex์ align-content , align-items๋ ๊ฐ๋จํ 1์ค์ด๋ 2์ค์ด๋๋ก ๊ตฌ๋ถํ์
์ํฉ๊ณผ ์ทจํฅ์ ์ฐจ์ด
grid-template-areas ๊ฐ์ ๊ฒฝ์ฐ ์ ์ฒด Grid ๊ตฌ์กฐ๋ฅผ ํ๋์ CSS ์ฝ๋๋ก ํ์ธํ ์ ์๋ค๋ ์ฅ์ ์ด ์์ง๋ง,
๊ฐ Grid Item์ ์ด๋ฆ์ ๋ถ์ฌํด์ผ ํ๋ค๋ ๋ถํธํจ
๋ฉํ ๋ : grid-row์ grid-column ์ฌ์ฉ์ ๋ ์ ํธํฉ๋๋ค.
span ํค์๋๋ฅผ ์ฌ์ฉํด ํ์ฅ์ ๊ฐ๋ ์ ์ฌ์ฉํ๋ฉด ์ผ๋ถ Grid Item์ ๊ฐ๋ง ์ง์ ํด๋ ๊ตฌ์กฐ๊ฐ ๋ง๋ค์ด์ง ์ ์๊ธฐ ๋๋ฌธ์ ํธ๋ฆฌ