์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- CSS
- jest
- ์ฝ๋ฉ๋ ํ
- clone coding
- javascript
- tanstack-query
- ๋ ธ๋ง๋ ์ฝ๋
- ๋ ธ๋ง๋์ฝ๋
- ์ฝ๋ฉ์ผ๊ธฐ
- typescript
- canvas
- next.js
- ์น ๋ธ๋ผ์ฐ์ ๋ ๋๋ง
- ์ํ์ฝ๋ฉ
- ๋ฐ๋๋ผ JS๋ก ๊ทธ๋ฆผํ ๋ง๋ค๊ธฐ
- ๋ฐ๋๋ผ JS๋ก ํฌ๋กฌ ์ฑ ๋ง๋ค๊ธฐ
- queryprovider
- axios-mock-adapte
- JAVA Script
- canvas js
- ํ๋ก ํธ์๋
- ์น ๋ธ๋ผ์ฐ์ ๊ตฌ์กฐ
- canvas image
- HTML
- ์ฝ์ฝ์ํก ํด๋ก ์ฝ๋ฉ
- negative margin
- react
- JS
- HTML ํ์ผ๊ตฌ์กฐ
- tailwindcss
- Today
- Total
Coding Archive
[ HTML & CSS ] ๋ ์ด์์์ ํต์ฌ, flexbox ๋ณธ๋ฌธ
[ HTML & CSS ] ๋ ์ด์์์ ํต์ฌ, flexbox
์ฝ๋ฑ์ด 2023. 3. 29. 00:27
โพ๏ธ flex ๋?
flex๋ ์ ์ฐํ ๋ ์ด์์์ ์ก๊ธฐ ์ํด ์ฌ์ฉํ๋ ์์ฑ์ด๋ค.
1์ฐจ์์ ๋ ์ด์์์ ์ํด ์ฃผ๋ก ์ฌ์ฉํ๋ค.
๐ flex์ ํน์ง
flex๋ ๋ถ๋ชจ์ ์์ ํ๊ทธ๊ฐ ํ์ํ๊ณ , ๋ถ๋ชจ ์์(flex-container)์ ์์ ์์(flex-item)์ ์ ์ฉํ๋ ์์ฑ์ด ๊ตฌ๋ถ๋์ด ์๋ค.
flex๋ ๊ฐ๊ฐ์ item์ ๋ถ์ฌํ๋ ๊ฒ ์๋ ๋ถ๋ชจ container์ ์์ฑ์ ๋ถ์ฌํ๋ค.
flex-container์ ์์ฑ : flex-direction, flex-wrap, justify-content, align-items, align-content ๋ฑ
flex-item์ ์์ฑ : flex, flex-grow, flex-shrink, flex-basis, align-self, order, z-index ๋ฑ
๐ flex-container์ ์์ฑ
1๏ธโฃ flex-direction
container ๋ด item์ ๋ฐฐ์นํ ๋ ์ฃผ์ถ ๋ฐ ๋ฐฉํฅ์ ์ง์ ํ๋ค.
row : ๊ธฐ๋ณธ๊ฐ์ผ๋ก, ์ฃผ์ถ์ด ํ ๋ฐฉํฅ์ผ๋ก ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ์ผ๋ก ๊ฐ๋ก ๋ฐฐ์น
row-revers : ์ฃผ์ถ์ด ํ ๋ฐฉํฅ์ผ๋ก ์ค๋ฅธ์ชฝ์์ ์ผ์ชฝ์ผ๋ก ๊ฐ๋ก ๋ฐฐ์น
column : ์ฃผ์ถ์ด ์ด ๋ฐฉํฅ์ผ๋ก ์์์ ์๋๋ก ์ธ๋ก ๋ฐฐ์น
column-reverse : ์ฃผ์ถ์ด ์ด ๋ฐฉํฅ์ผ๋ก ์๋์์ ์๋ก ์ธ๋ก ๋ฐฐ์น
2๏ธโฃ justify-content
์ฃผ์ถ์ ๊ธฐ์ค์ผ๋ก ์ด๋ป๊ฒ ์ ๋ ฌํ ์ง ์ง์ ํ๋ค.
flex-start : ์์์ ์, center : ๊ฐ์ด๋ฐ, flex-end : ๋์ ์,
space-between : ์ฌ์ด์, space-around : ๋๋ ์, space-evenly : ๊ท ๋ฑํ๊ฒ
3๏ธโฃ align-items, align-content
์์ง ๋ฐฉํฅ(๊ต์ฐจ์ถ)์ ๊ธฐ์ค์ผ๋ก ์ด๋ป๊ฒ ์ ๋ ฌํ ์ง ์ง์ ํ๋ค.
align-items : ํ ์ค์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ
stretch : ๊ธฐ๋ณธ๊ฐ-๋์ด๋, baseline : ์ปจํ ์ธ ๋ฅผ ๊ธฐ์ค์ผ๋ก,
flex-start : ์์์ ์, center : ๊ฐ์ด๋ฐ, flex-end : ๋์ ์
align-content : ๊ต์ฐจ ์ถ์ ์์ดํ ๋ค์ด ์ฌ๋ฌ ์ค์ผ ๋ ์ ๋ ฌ
· justify-content ์์ฑ๋ค๊ณผ ๋์ผ
· flex-wrap:wrap; ์ธ ์ํ์์ ์ฌ์ฉ
๐ flex-item์ ์ฌ์ฉํ๋ ์์ฑ
1๏ธโฃ flex-basis
๊ธฐ๋ณธ๊ฐ์ auto๋ก, flex-item์ ์ด๊ธฐ ํฌ๊ธฐ๋ฅผ ์ค์ ํ๋ค.
· ์ถ์ ๋ฐฉํฅ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋ค๋ ์ ๊ณผ ๋ด๋ถ ์ฝํ ์ธ ์ ๋ฐ๋ผ ์ ์ฐํ ํฌ๊ธฐ๋ฅผ ๊ฐ์ง๋ค๋ ์ ์ด width, height์ ๋ค๋ฅด๋ค.
· flex-basis ๊ฐ ์ ์ฉ ์ row์ผ ๊ฒฝ์ฐ width ๊ฐ์ด ๋ฌด์๋๋ฉฐ, column์ผ ๊ฒฝ์ฐ height ๊ฐ์ด ๋ฌด์๋๋ค.
· ๊ธฐ๋ณธ์ ์ผ๋ก px์ด๋ em ๋ฑ์ ๋จ์๊ฐ์ ์ฌ์ฉํ๋ค.
2๏ธโฃ flex-grow
item์ด container ๋ด๋ถ์์ ํ ๋น๋ฐ๋ ๊ณต๊ฐ์ ์ ๋๋ฅผ ์ง์ ํ๋ค.
· item๋ค์ด ๋ชจ๋ ๊ฐ์ flex-grow ๊ฐ์ ๊ฐ์ง๋ฉด, ๋ด๋ถ์์ ๋์ผํ ๊ณต๊ฐ์ ํ ๋น๋ฐ๋๋ค.
· ์ค์ํ ๊ฒ์ ์ฌ๋ฐฑ์ ๊ณต๊ฐ์ ํ ๋น๋ฐ๋ ๊ฒ์ธ๋ฐ ํ๋์ ์์์์์ flex-grow๊ฐ์ 2๋ฅผ ์คฌ๋ค๊ณ 2๋ฐฐ์ ํฌ๊ธฐ๊ฐ ๋๋ ๊ฒ์ด ์๋
๋ค๋ฅธ ์์์์๋ณด๋ค ๋ ๋ฐฐ์ ์ฌ๋ฐฑ๊ณต๊ฐ์ ํ ๋น๋ฐ๋ ๊ฒ์ด๋ค.
· ๊ฐ์ 0์ ์ฃผ๋ฉด ๋์ด๋์ง ์๋๋ค.
3๏ธโฃ flex-shrink
item์ ํฌ๊ธฐ๋ฅผ ๊ณ ์ ํ๊ฑฐ๋ ์ถ์ํ ๋ ์ฌ์ฉํ๋ค.
· ๊ฐ์ 0์ ์ค ๊ฒฝ์ฐ ์ค์ด๋ค์ง ์๋๋ค.
4๏ธโฃ align-self
๋ถ๋ชจ์ align-items ์์ฑ์ ๋ฎ๊ณ flex-item์๊ฒ ๊ฐ๋ณ์ ์ธ align-items ์์ฑ์ ๋ถ์ฌํ๋ค.
· ๊ธฐ๋ณธ๊ฐ์ stretch์ด๋ค.
5๏ธโฃ order
flex-item๋ค์ ์์๋ฅผ ์์ ํฌ๊ธฐ๋ก ๊ฒฐ์ ํ๋ค.
· ์๊ฐ ์ ์์๋ก ์ฐ์ ์์๊ฐ ๋๋ค. (์์๋ ์ฌ์ฉ๊ฐ๋ฅ)
6๏ธโฃ flex (๋จ์ถ์์ฑ)
flex: flex-grow flex-shrink flex-basis
/* ๋์ด๋๊ณ , ์ค์ด๋ค๊ณ , ๊ธฐ๋ณธ๊ฐ */
flex: 1 1 100px;
/* ๋์ด๋์ง๋ ์๊ณ , ์ค์ด๋ค์ง๋ ์๊ณ , ๊ธฐ๋ณธ๊ฐ */
flex: 0 0 100px;
์ค์ต์ผ๋ก ์ข ๋ ์ง๊ด์ ์ผ๋ก ์ดํดํด ๋ณด์..!
๐ flex-item ์์ฑ ์ค์ต ( flex-grow, flex-shrink, flex-basis )
flex-basis: auto; item๋ค์ ํฌ๊ธฐ(์ฝํ ์ธ ํฌ๊ธฐ)๋งํผ ์๋์ผ๋ก ํฌ๊ธฐ๊ฐ ์กํ๋ค.
flex-grow: 1; ์ฌ๋ฐฑ ๊ณต๊ฐ์ ํฌ๊ธฐ๊ฐ ๋ํด์ง๋ค. (๊ธฐ๋ณธ๊ฐ์ 0)
์ธ ๋ฒ์งธ ๋ฐ์ค์ grow ๊ฐ 1์ ์ฃผ๋ฉด basis ๊ฐ์ ์ฌ๋ฐฑ๊ณต๊ฐ์ ํฌ๊ธฐ๊ฐ ๋ํด์ ธ ๋จ์ ๊ณต๊ฐ์ ํผ์์ ์ฐจ์งํ๋ค.
๋ชจ๋ ๋ฐ์ค์ grow ๊ฐ 1์ ์ฃผ๋ฉด ๋จ์ ๊ณต๊ฐ์ ๋๊ฐ์ด ๋๋ ์ ์ฐจ์งํ๋ค.
๊ฐ๊ฐ์ ๋ฐ์ค ๋ด๋ถ์ ํฌ๊ธฐ(์ปจํ ์ธ ํฌ๊ธฐ)๋งํผ ์๋์ผ๋ก ํฌ๊ธฐ๊ฐ ์กํ๊ธฐ ๋๋ฌธ์,
๊ฐ์ grow ๊ฐ์ ์คฌ์ด๋ ์ปจํ ์ธ ํฌ๊ธฐ์ ๋ฐ๋ผ ๊ฐ์ด ๋ฌ๋ผ์ง ์ ์๋ค.
flex-basis: 100px; ์๋์ ๊ฐ์ด basis ๊ฐ์ ํน์ ๋จ์๋ก ์ง์ ํ ์ ์๋ค.
flex-basis: auto; ๋ค์ basis ๊ฐ์ ์ปจํ ์ธ ํฌ๊ธฐ์ ๋ฐ๋ผ ์๋์ผ๋ก ํฌ๊ธฐ๊ฐ ์กํ๋๋ก
auto๋ก ์ค์ ํด container์ ๊ฝ ์ฐจ๋๋ก ๋ง๋ค์ด ์ค๋ค.
์ด ์ํ์์ ๋ฏธ๋์ธ ํ ๋ช ์ด ๋ ์ถ๊ฐ๋๋ค๋ฉด??
๋ฐ์ค๋ค์ ํฌ๊ธฐ๊ฐ ์ค์ด๋ค๊ฒ ๋๋๋ฐ, ๊ทธ ์ด์ ๋ flex-shrink๊ฐ ์จ์ด์๊ธฐ ๋๋ฌธ์!
๊ธฐ๋ณธ๊ฐ์ด 1์ด๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ๋ฐ์ค๋ค์ด ๊ฐ์ ๋น์จ๋ก ์ค์ด๋ ๋ค.
๊ทธ๋ฆฌ๊ณ ์๋์ ๊ฐ์ด ์ปจํ ์ด๋๋ฅผ ์์ ธ ๋๊ฐ๊ฒ ๋๋๋ฐ ์์ผ๊น??
๊ฐ๊ฐ์ ๋ฐ์ค์ min-width๊ฐ์ด auto๋ก ์ค์ ๋์ด ์๋ ๊ฒ ์จ๊ฒจ์ ธ ์๊ธฐ ๋๋ฌธ์ด๋ค.
์์ ์ปจํ ์ธ (๋ฏธ๋์ธ)๋ณด๋ค ์์ (๊ฐ๊ฐ์ ๋ฏธ๋์ธ ๋ฐ์ค)์ ๋ ์๊ฒ ๋ง๋ค์ด์ง ์ ์๊ฒ min-width ๊ฐ์ด ๋ง๊ณ ์๋ ๊ฒ์ด๋ค.
์๋์ ๊ฐ์ด min-width๊ฐ์ 0์ ์ฃผ๋ฉด ์์ ธ ๋๊ฐ์ง ์๋๋ค.
์ฒ์์ flex-basis๋ฅผ 0์ ์ค๋ ๋ณํจ์ด ์๋๋ฐ ๊ทธ ์ด์ ๋ min-width ๊ฐ์ด ์ด๋ฏธ auto๋ก ์จ๊ฒจ์ ธ ์๊ธฐ ๋๋ฌธ์ด๋ค.
์๋์ ๊ฐ์ด min-width์ 0์ ์ฃผ๊ฒ ๋๋ฉด basis 0์ด ๋จน๋๋ค.
์ด๋ ๊ฒ ๋๋ฉด ์ปจํ ์ธ ํฌ๊ธฐ์ ์๊ด์์ด ๊ท ๋ฑํ๊ฒ ์ผ๋ฑ๋ถํ ์ ์๋ค! (๋ชจ๋ grow๊ฐ 1์ ์ฃผ๋ฉด ๋๋ค.)
์์ํ๋๊ฐ ์ปค์ง๋ฉด ๋ถ๋ชจ๊ฐ ์ปค์ง๊ณ ๋ถ๋ชจ๊ฐ ์ปค์ง๋ฉด ๋๋จธ์ง ์์๋ค์ด ๊ฐ์ด ์ปค์ง๋ค. (๋ถ๋ชจ์ ํฌ๊ธฐ๊ฐ ์ปค์ง๋ฉด ๋ฌด์กฐ๊ฑด ์ปค์ง๋ค)
align-items: stretch ๊ฐ ๊ธฐ๋ณธ๊ฐ์ด์ด์ ์์ ์๋ ๋ชจ๋ ์์๋ค์ด ๋ถ๋ชจ ๊ธฐ์ค์ผ๋ก ๋์ด๋๋ค.
์ธ ๋ฒ์งธ ๋ฐ์ค์ margin-top๊ณผ bottom์ ๋ชจ๋ auto๋ฅผ ์ฃผ๋ฉด ์๋์ ๊ฐ์ด ๋ง๋ค ์ ์๋ค.
๋ค๋ฅธ ๋ฐ์ค๋ค์๋ margin-top๊ณผ bottom์ auto๋ฅผ ์ฌ์ฉํด์ ์ด๋ฐ ์ ๋ ฌ์ ๋ง๋ค ์ ์๋ค.
์ธ ๋ฒ์งธ ๋ฐ์ค์๋ margin-bottom์ auto๋ฅผ margin-top์ 0์ ์คฌ๋ค.
flex๋ฅผ ์ฌ์ฉํ๋ฉด ๋ ๋ค์ํ ์ ๋ ฌ๋ค์ ๋ง๋ค ์ ์๋ค!
๋ชจ๋ ์ ๋ ฌ์ ๋ง์ง์ด ๊ธฐ๋ณธ์ด ๋๋ค๋ ๊ฒ์ ์ ์ ์์๊ณ ,
flex๋ฅผ ํตํด ๋ณด๋ค ํธ๋ฆฌํ๊ณ ๋ค์ํ๊ฒ ์ ๋ ฌํ ์ ์๋ค๋ ์ ์ ๋ฐฐ์ธ ์ ์์๋ค.
'๐ป Programming > HTML & CSS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ HTML & CSS ] ๋ ์ด์์์ ํต์ฌ, margin (negative margin) (0) | 2023.03.18 |
---|---|
[ HTML & CSS ] CSS background ์์ฑ์ ์ฌ์ฉํด ์ด๋ฏธ์ง ๋ฃ๊ธฐ (0) | 2023.03.07 |
[ HTML ๊ธฐ์ด ] HTML / CSS ํ์ผ ๊ตฌ์กฐ ๋ฐ ํ์ผ ๊ฒฝ๋ก (0) | 2023.03.02 |
range slider css ๋ณ๊ฒฝํ๊ธฐ (0) | 2022.09.27 |