fr ๋จ์, minmax(), auto, ์ฝํ ์ธ ๊ธฐ๋ฐ ํฌ๊ธฐ ์กฐ์ ์ ํฌํจํ CSS ๊ทธ๋ฆฌ๋์ ํธ๋ ํฌ๊ธฐ ์กฐ์ ์๊ณ ๋ฆฌ์ฆ์ ์ดํดํ๊ณ ๋ง์คํฐํ๊ธฐ ์ํ ์ข ํฉ ๊ฐ์ด๋์ ๋๋ค.
CSS ๊ทธ๋ฆฌ๋ ํธ๋ ํฌ๊ธฐ ๋ถ๋ฐฐ: ๊ณต๊ฐ ํ ๋น ์๊ณ ๋ฆฌ์ฆ ๋ง์คํฐํ๊ธฐ
CSS ๊ทธ๋ฆฌ๋๋ ์น ๊ฐ๋ฐ์์๊ฒ ์น ํ์ด์ง ๊ตฌ์กฐ์ ๋ํ ์ ๋ก ์๋ ์ ์ด๊ถ์ ์ ๊ณตํ๋ ๊ฐ๋ ฅํ ๋ ์ด์์ ๋๊ตฌ์ ๋๋ค. ํต์ฌ ๊ฐ์ ์ค ํ๋๋ ๊ทธ๋ฆฌ๋ ํธ๋(ํ๊ณผ ์ด) ๊ฐ์ ๊ณต๊ฐ์ ์ง๋ฅ์ ์ผ๋ก ๋ถ๋ฐฐํ๋ ๋ฅ๋ ฅ์ ์์ต๋๋ค. CSS ๊ทธ๋ฆฌ๋ ํธ๋ ํฌ๊ธฐ ๋ถ๋ฐฐ ์๊ณ ๋ฆฌ์ฆ์ ์ดํดํ๋ ๊ฒ์ ๋ฐ์ํ์ด๊ณ ์ ์ฐํ๋ฉฐ ์๊ฐ์ ์ผ๋ก ๋งค๋ ฅ์ ์ธ ๋ ์ด์์์ ๋ง๋๋ ๋ฐ ๋งค์ฐ ์ค์ํฉ๋๋ค. ์ด ์ข ํฉ ๊ฐ์ด๋์์๋ ์ด ์๊ณ ๋ฆฌ์ฆ์ ์ฌ๋ ์๊ฒ ํํค์น๊ณ , ๋ค์ํ ๊ตฌ์ฑ ์์๋ฅผ ํ์ํ๋ฉฐ, ๊ทธ ๋ณต์ก์ฑ์ ๋ง์คํฐํ๋ ๋ฐ ๋์์ด ๋๋ ์ค์ ์์ ๋ฅผ ์ ๊ณตํฉ๋๋ค.
๊ทธ๋ฆฌ๋ ํธ๋๊ณผ ํฌ๊ธฐ ์กฐ์ ์์ฑ ์ดํดํ๊ธฐ
์๊ณ ๋ฆฌ์ฆ์ ์ดํด๋ณด๊ธฐ ์ ์ ๋ช ๊ฐ์ง ํต์ฌ ๊ฐ๋ ์ ์ ์ํด ๋ณด๊ฒ ์ต๋๋ค:
- ๊ทธ๋ฆฌ๋ ํธ๋(Grid Tracks): ๊ทธ๋ฆฌ๋์ ํ๊ณผ ์ด์ ๋๋ค.
- ๊ทธ๋ฆฌ๋ ๋ผ์ธ(Grid Lines): ๊ทธ๋ฆฌ๋ ํธ๋์ ๊ฐ์ฅ์๋ฆฌ๋ฅผ ์ ์ํ๋ ์ ์ ๋๋ค.
- ๊ทธ๋ฆฌ๋ ์ (Grid Cell): ๋ค ๊ฐ์ ๊ทธ๋ฆฌ๋ ๋ผ์ธ์ผ๋ก ๋๋ฌ์ธ์ธ ๊ณต๊ฐ์ ๋๋ค.
๊ทธ๋ฆฌ๋ ํธ๋์ ๋ค์ํ ์์ฑ์ ์ฌ์ฉํ์ฌ ํฌ๊ธฐ๋ฅผ ์ง์ ํ ์ ์์ผ๋ฉฐ, ๊ฐ ์์ฑ์ ๊ณต๊ฐ ํ ๋น ์๊ณ ๋ฆฌ์ฆ์ ๊ณ ์ ํ ๋ฐฉ์์ผ๋ก ์ํฅ์ ๋ฏธ์นฉ๋๋ค. ์ด๋ฌํ ์์ฑ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ๊ณ ์ ํฌ๊ธฐ: ํฝ์ (px), em, rem ๋๋ ๊ธฐํ ์ ๋ ๋จ์๋ฅผ ์ฌ์ฉํ์ฌ ํธ๋ ํฌ๊ธฐ๋ฅผ ์ ์ํฉ๋๋ค.
- ๋ฐฑ๋ถ์จ ํฌ๊ธฐ: ๊ทธ๋ฆฌ๋ ์ปจํ ์ด๋ ํฌ๊ธฐ์ ๋ฐฑ๋ถ์จ๋ก ํธ๋ ํฌ๊ธฐ๋ฅผ ์ง์ ํฉ๋๋ค.
- fr ๋จ์: ๊ทธ๋ฆฌ๋ ์ปจํ ์ด๋์์ ์ฌ์ฉ ๊ฐ๋ฅํ ๊ณต๊ฐ์ ์ผ๋ถ๋ฅผ ๋ํ๋ด๋ ๋น์จ ๋จ์์ ๋๋ค.
- auto: ํธ๋์ด ์ฝํ ์ธ ๋ ์ฌ์ฉ ๊ฐ๋ฅํ ๊ณต๊ฐ์ ๋ฐ๋ผ ์ค์ค๋ก ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ๋๋ก ํ์ฉํฉ๋๋ค.
- minmax(): ํธ๋์ ์ต์ ๋ฐ ์ต๋ ํฌ๊ธฐ๋ฅผ ์ ์ํฉ๋๋ค.
- ์ฝํ
์ธ ๊ธฐ๋ฐ ํฌ๊ธฐ ์กฐ์ ํค์๋:
min-content
,max-content
,fit-content()
์ ๊ฐ์ ํค์๋์ ๋๋ค.
CSS ๊ทธ๋ฆฌ๋ ํธ๋ ํฌ๊ธฐ ๋ถ๋ฐฐ ์๊ณ ๋ฆฌ์ฆ: ๋จ๊ณ๋ณ ๊ฐ์ด๋
CSS ๊ทธ๋ฆฌ๋ ํธ๋ ํฌ๊ธฐ ๋ถ๋ฐฐ ์๊ณ ๋ฆฌ์ฆ์ ๋ช ๊ฐ์ง ๊ฐ๋ณ ๋จ๊ณ๋ก ๋๋ ์ ์์ต๋๋ค. ์ด ๋จ๊ณ๋ฅผ ์ดํดํ๋ฉด ๊ทธ๋ฆฌ๋๊ฐ ๊ณต๊ฐ์ ์ด๋ป๊ฒ ํ ๋นํ ์ง ์์ธกํ๊ณ ๋ฐ์ํ ์ ์๋ ๋ชจ๋ ๋ ์ด์์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
1๋จ๊ณ: ๊ทธ๋ฆฌ๋ ์ปจํ ์ด๋ ํฌ๊ธฐ ๊ฒฐ์
์๊ณ ๋ฆฌ์ฆ์ ๊ทธ๋ฆฌ๋ ์ปจํ
์ด๋์ ํฌ๊ธฐ๋ฅผ ๊ฒฐ์ ํ๋ ๊ฒ๋ถํฐ ์์ํฉ๋๋ค. ์ด๋ ์ปจํ
์ด๋์ width
๋ฐ height
์์ฑ๋ฟ๋ง ์๋๋ผ ์ปจํ
์ด๋์ ์ ์ฉ๋ ๋ชจ๋ ํจ๋ฉ, ๋ง์ง ๋๋ ํ
๋๋ฆฌ์ ์ํฅ์ ๋ฐ์ต๋๋ค.
์์ :
.grid-container {
width: 800px;
height: 600px;
padding: 20px;
}
์ด ์์์ ๊ทธ๋ฆฌ๋ ํธ๋์ ์ฌ์ฉ ๊ฐ๋ฅํ ๊ณต๊ฐ์ ๋๋น๊ฐ 800px - (20px * 2) = 760px์ด๊ณ ๋์ด๊ฐ 600px - (20px * 2) = 560px๊ฐ ๋ฉ๋๋ค. ํจ๋ฉ์ ์ปจํ ์ด๋ ๋ด ๊ณต๊ฐ์ ์ฐจ์งํ๋ฏ๋ก ์ด ๋๋น์ ๋์ด์์ ์ ์ธ๋ฉ๋๋ค.
2๋จ๊ณ: ๊ณ ์ ํฌ๊ธฐ ํธ๋์ ํฌ๊ธฐ ์กฐ์
๋ค์์ผ๋ก, ์๊ณ ๋ฆฌ์ฆ์ ๊ณ ์ ๋ ํฌ๊ธฐ(์: ํฝ์ , em, rem ์ฌ์ฉ)๋ฅผ ๊ฐ์ง ํธ๋์ ๊ณต๊ฐ์ ํ ๋นํฉ๋๋ค. ์ด๋ฌํ ํธ๋์ ์ง์ ๋ ๊ฐ์ ๋ฐ๋ผ ํฌ๊ธฐ๊ฐ ์ ํด์ง๊ณ ์ด ๊ณต๊ฐ์ ์์ฝ๋ฉ๋๋ค. ์ด๋ ์ข ์ข ๊ฐ์ฅ ๊ฐ๋จํ ๋จ๊ณ์ ๋๋ค. `px`, `em`, `rem` ๋๋ ์ ์ฌํ ๊ณ ์ ๊ธธ์ด ๋จ์๋ก ์ ์๋ ํธ๋์ ์ ํํ ํด๋น ํฌ๊ธฐ๋ก ํ ๋น๋ฉ๋๋ค.
์์ :
.grid-container {
display: grid;
grid-template-columns: 100px 200px auto;
grid-template-rows: 50px auto 100px;
}
์ด ์์์ ์ฒซ ๋ฒ์งธ ์ด์ ํญ์ ๋๋น๊ฐ 100px, ๋ ๋ฒ์งธ ์ด์ 200px, ์ฒซ ๋ฒ์งธ ํ์ ๋์ด๊ฐ 50px, ์ธ ๋ฒ์งธ ํ์ 100px๊ฐ ๋ฉ๋๋ค. ์ด ํฌ๊ธฐ๋ ๋๋จธ์ง ํธ๋์ ์ฌ์ฉํ ์ ์๋ ๊ณต๊ฐ์์ ์ ์ธ๋ฉ๋๋ค.
3๋จ๊ณ: 'auto' ํค์๋๋ฅผ ์ฌ์ฉํ ํธ๋ ํฌ๊ธฐ ์กฐ์
auto
ํค์๋๋ก ํฌ๊ธฐ๊ฐ ์ง์ ๋ ํธ๋์ ๊ทธ๋ฆฌ๋์ ๋ค๋ฅธ ํธ๋์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ๋์ํ ์ ์์ต๋๋ค. ์ฌ์์์๋ ๊ทธ๋ฆฌ๋ ๋ ์ด์์ ์ค์ `auto` ํค์๋๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๋ช ๊ฐ์ง ๋ณ๋์ ์๋ธ๋ฃจํด์ ์ ์ํฉ๋๋ค. ์ง๊ธ์ ๊ฐ์ฅ ๊ฐ๋จํ ๊ฒฝ์ฐ๋ฅผ ๊ณ ๋ คํด ๋ณด๊ฒ ์ต๋๋ค. ์ฌ์ฉ ๊ฐ๋ฅํ ๊ณต๊ฐ์ด ์ถฉ๋ถํ๋ฉด ํธ๋์ ์ฝํ
์ธ ์ ๋ง๊ฒ ํ์ฅ๋ฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ต์ ์ฝํ
์ธ ํฌ๊ธฐ๋ก ์ถ์๋ฉ๋๋ค.
์์ :
.grid-container {
display: grid;
grid-template-columns: 100px auto 1fr;
}
.grid-item {
min-width: 50px;
}
์ด ์์์ ๋ ๋ฒ์งธ ์ด์ ์ฝํ ์ธ ๊ฐ (`.grid-item`์ `min-width`๋ก ์ธํด) 50px๋ณด๋ค ๋์ ๋๋น๋ฅผ ํ์๋ก ํ๋ฉด ์ด์ ์ด๋ฅผ ์์ฉํ๊ธฐ ์ํด ํ์ฅ๋ฉ๋๋ค. ์ฝํ ์ธ ๊ฐ 50px๋ณด๋ค ์์ผ๋ฉด ์ฝํ ์ธ ํฌ๊ธฐ๋ก ๊ธฐ๋ณธ ์ค์ ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ์ฌ์ฉ ๊ฐ๋ฅํ ๊ณต๊ฐ์ด ์ ํ๋ ๊ฒฝ์ฐ ์ด์ ์ปจํ ์ด๋์ ๋ง์ถ๊ธฐ ์ํด 50px ๋๋ ๊ทธ๋ณด๋ค ์๊ฒ ์ถ์๋ ์ ์์ต๋๋ค.
4๋จ๊ณ: ๊ณ ์ ํธ๋ ํฌ๊ธฐ ๊ฒฐ์
์ด ๋จ๊ณ๋ ํธ๋์ ์ต์ ๋ฐ ์ต๋ ์ฝํ ์ธ ํฌ๊ธฐ๋ฅผ ๊ฒฐ์ ํ๋ ๊ณผ์ ์ ํฌํจํฉ๋๋ค. ์ต์ ์ฝํ ์ธ ํฌ๊ธฐ๋ ํธ๋์ด ์ฝํ ์ธ ๋ฅผ ๋์น๊ฒ ํ์ง ์์ผ๋ฉด์ ๊ฐ์ง ์ ์๋ ๊ฐ์ฅ ์์ ํฌ๊ธฐ์ ๋๋ค. ์ต๋ ์ฝํ ์ธ ํฌ๊ธฐ๋ ํธ๋์ ๋ชจ๋ ์ฝํ ์ธ ๋ฅผ ์ค ๋ฐ๊ฟ์ด๋ ์๋ฆผ ์์ด ํ์ํ๋ ๋ฐ ํ์ํ ํฌ๊ธฐ์ ๋๋ค. ์ด ํฌ๊ธฐ๋ค์ `fr` ๋จ์๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ `auto` ํค์๋๊ฐ ์ต์/์ต๋ ์ ์ฝ ์กฐ๊ฑด์ ์ง๋ฉดํ์ ๋ ์ ์ฐํ ๊ธฐ๋ณธ ํฌ๊ธฐ๋ฅผ ๊ณ์ฐํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. CSS ๊ทธ๋ฆฌ๋ ๋ ์ด์์ ์ฌ์์ ๊ทธ๋ฆฌ๋ ์์ดํ ์ ์ค์ ๋ ์์ฑ๊ณผ ์ฝํ ์ธ ์์ฒด์ ๋ฐ๋ผ ๊ณ ์ ํฌ๊ธฐ๋ฅผ ๊ณ์ฐํ๋ ๋ฐฉ๋ฒ์ ์ ํํ๊ฒ ์ ์ํฉ๋๋ค.
์ด ๋จ๊ณ๋ `min-content` ๋๋ `max-content`์ ๊ฐ์ ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ํธ๋ ํฌ๊ธฐ๋ฅผ ์ง์ ์ง์ ํ ๋ ๋งค์ฐ ์ค์ํด์ง๋๋ค. ์ด ํค์๋๋ค์ ๊ทธ๋ฆฌ๋์ ๊ณ ์ ํ ์ฝํ ์ธ ํฌ๊ธฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํธ๋ ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ๋๋ก ์ง์ํฉ๋๋ค.
5๋จ๊ณ: ์ ์ฐํ ํธ๋ ํฌ๊ธฐ ์กฐ์ (fr ๋จ์)
fr
๋จ์๋ก ํฌ๊ธฐ๊ฐ ์ง์ ๋ ํธ๋์ ๊ณ ์ ํฌ๊ธฐ, ๋ฐฑ๋ถ์จ ํฌ๊ธฐ ๋ฐ ์๋ ํฌ๊ธฐ ํธ๋์ด ๊ณ์ฐ๋ ํ ๊ทธ๋ฆฌ๋ ์ปจํ
์ด๋์ ๋จ์ ์ฌ์ฉ ๊ฐ๋ฅํ ๊ณต๊ฐ์ ์ผ๋ถ๋ฅผ ๋ํ๋
๋๋ค. ์๊ณ ๋ฆฌ์ฆ์ ๋ชจ๋ fr
๋จ์์ ์ดํฉ์ ๊ณ์ฐํ ๋ค์, fr
๊ฐ์ ๋ฐ๋ผ ํธ๋ ๊ฐ์ ๋จ์ ๊ณต๊ฐ์ ๋น๋ก์ ์ผ๋ก ๋๋๋๋ค.
์์ :
.grid-container {
display: grid;
grid-template-columns: 1fr 2fr 1fr;
}
์ด ์์์ ๊ทธ๋ฆฌ๋ ์ปจํ ์ด๋์๋ ์ธ ๊ฐ์ ์ด์ด ์์ต๋๋ค. ์ฒซ ๋ฒ์งธ ์ด์ ์ฌ์ฉ ๊ฐ๋ฅํ ๊ณต๊ฐ์ 1 ๋น์จ, ๋ ๋ฒ์งธ ์ด์ 2 ๋น์จ, ์ธ ๋ฒ์งธ ์ด์ 1 ๋น์จ์ ์ฐจ์งํฉ๋๋ค. ๋ฐ๋ผ์ ๋ ๋ฒ์งธ ์ด์ ์ฒซ ๋ฒ์งธ์ ์ธ ๋ฒ์งธ ์ด๋ณด๋ค ๋ ๋ฐฐ ๋์ด์ง๋๋ค.
`fr` ๋จ์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ณต๊ฐ์ ํ ๋นํ ํ์๋ ์ผ๋ถ ํธ๋์ด ์ฌ์ ํ ์ฝํ ์ธ ๋ฅผ ๋์น๊ฒ ํ๋ ๊ฒฝ์ฐ, ์๊ณ ๋ฆฌ์ฆ์ ์ ์ฐํ ํธ๋์ ๋ค์ ๊ฒํ ํ๊ณ ์ฝํ ์ธ ๊ฐ ๋ง๊ฑฐ๋ ์ต์ ํธ๋ ํฌ๊ธฐ์ ๋๋ฌํ ๋๊น์ง ๋น๋ก์ ์ผ๋ก ํฌ๊ธฐ๋ฅผ ์ค์ ๋๋ค.
6๋จ๊ณ: minmax() ์ ์ฉ
minmax()
ํจ์๋ฅผ ์ฌ์ฉํ๋ฉด ๊ทธ๋ฆฌ๋ ํธ๋์ ์ต์ ๋ฐ ์ต๋ ํฌ๊ธฐ๋ฅผ ์ ์ํ ์ ์์ต๋๋ค. ์ด๋ ์ฝํ
์ธ ๋ ์ฌ์ฉ ๊ฐ๋ฅํ ๊ณต๊ฐ์ ๊ด๊ณ์์ด ํธ๋์ด ๋๋ฌด ์์์ง๊ฑฐ๋ ์ปค์ง์ง ์๋๋ก ๋ณด์ฅํ๋ ค๋ ๊ฒฝ์ฐ ํนํ ์ ์ฉํ ์ ์์ต๋๋ค.
์์ :
.grid-container {
display: grid;
grid-template-columns: 100px minmax(200px, 1fr) 100px;
}
์ด ์์์ ๋ ๋ฒ์งธ ์ด์ ์ต์ 200px ๋๋น๊ฐ ๋ฉ๋๋ค. ๋จ์ ๊ณต๊ฐ์ด ์ถฉ๋ถํ๋ฉด 1fr
๋จ์๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ฉ ๊ฐ๋ฅํ ๊ณต๊ฐ์ ์ฑ์ฐ๋๋ก ํ์ฅ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ 200px๋ณด๋ค ์์์ง์ง๋ ์์ต๋๋ค.
์๊ณ ๋ฆฌ์ฆ์ ๋จผ์ minmax()์ ์ต์๊ฐ์ ํธ๋ ํฌ๊ธฐ๋ก ์ฒ๋ฆฌํ๊ณ ๊ทธ์ ๋ฐ๋ผ ๊ณต๊ฐ์ ํ ๋นํฉ๋๋ค. ๋์ค์ ์ถ๊ฐ ๊ณต๊ฐ์ด ์์ผ๋ฉด ์ต๋๊ฐ๊น์ง ํ์ฅ๋ ์ ์์ต๋๋ค. ๊ณต๊ฐ์ด ์ถฉ๋ถํ์ง ์์ผ๋ฉด ์ต์๊ฐ์ด ์ฐ์ ์ ์ฉ๋ฉ๋๋ค.
7๋จ๊ณ: ์ฝํ ์ธ ๊ธฐ๋ฐ ํฌ๊ธฐ ์กฐ์ ํค์๋ ์ฒ๋ฆฌ
CSS ๊ทธ๋ฆฌ๋๋ `min-content`, `max-content`, `fit-content()`์ ๊ฐ์ ์ฝํ ์ธ ๊ธฐ๋ฐ ํฌ๊ธฐ ์กฐ์ ํค์๋๋ฅผ ์ ๊ณตํ์ฌ ์ฝํ ์ธ ์ ๋ฐ๋ผ ๋์ ์ผ๋ก ํธ๋ ํฌ๊ธฐ๋ฅผ ์กฐ์ ํฉ๋๋ค. ์ด๋ ๋ฐ์ํ ๋์์ธ์ ๋งค์ฐ ์ ์ฉํฉ๋๋ค.
- min-content: ํธ๋์ด ์ฝํ ์ธ ๋์นจ์ ์ ๋ฐํ์ง ์๋ ํ ๊ฐ๋ฅํ ํ ์ข์์ง๋๋ค.
- max-content: ๋ชจ๋ ์ฝํ ์ธ ๋ฅผ ์ค ๋ฐ๊ฟ ์์ด ํ์ํ๋ ๋ฐ ํ์ํ ๋งํผ ๋์ด์ง๋๋ค.
- fit-content(size): ์ง์ ๋ ํฌ๊ธฐ์ ๋๋ฌํ ๋๊น์ง `auto`์ฒ๋ผ ๋์ํ๋ค๊ฐ ๊ทธ ์ง์ ์์ ์ฑ์ฅ์ ๋ฉ์ถฅ๋๋ค.
์์ :
.grid-container {
display: grid;
grid-template-columns: min-content max-content fit-content(300px);
}
์ฒซ ๋ฒ์งธ ์ด์ ๊ฐ์ฅ ์ข์ ์ฝํ ์ธ ๋๋น๋งํผ๋ง ๋์ด์ง๋๋ค. ๋ ๋ฒ์งธ ์ด์ ๋ชจ๋ ์ฝํ ์ธ ๋ฅผ ์ค ๋ฐ๊ฟ ์์ด ํ์ํ๋๋ก ํ์ฅ๋ฉ๋๋ค. ์ธ ๋ฒ์งธ ์ด์ ์ฝํ ์ธ ๊ฐ ์ฆ๊ฐํจ์ ๋ฐ๋ผ ์ปค์ง์ง๋ง 300px์์ ๋ฉ์ถฅ๋๋ค.
8๋จ๊ณ: ์ค๋ฒํ๋ก ์ฒ๋ฆฌ
์ ๋จ๊ณ๋ฅผ ์ฌ์ฉํ์ฌ ๊ณต๊ฐ์ ํ ๋นํ ํ์๋ ์ฝํ
์ธ ๊ฐ ์ฌ์ ํ ๊ทธ๋ฆฌ๋ ์
์ ๋์น๋ฉด overflow
์์ฑ์ ์ฌ์ฉํ์ฌ ์ค๋ฒํ๋ก ์ฒ๋ฆฌ ๋ฐฉ๋ฒ์ ์ ์ดํ ์ ์์ต๋๋ค. overflow
์์ฑ์ ์ผ๋ฐ์ ์ธ ๊ฐ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- visible: ๋์น๋ ์ฝํ ์ธ ๊ฐ ๊ทธ๋ฆฌ๋ ์ ์ธ๋ถ์์ ๋ณด์ ๋๋ค(๊ธฐ๋ณธ๊ฐ).
- hidden: ๋์น๋ ์ฝํ ์ธ ๊ฐ ์๋ฆฝ๋๋ค.
- scroll: ์ฌ์ฉ์๊ฐ ๋์น๋ ์ฝํ ์ธ ๋ฅผ ์คํฌ๋กคํ ์ ์๋๋ก ๊ทธ๋ฆฌ๋ ์ ์ ์คํฌ๋กค๋ฐ๊ฐ ์ถ๊ฐ๋ฉ๋๋ค.
- auto: ๋์น๋ ์ฝํ ์ธ ๊ฐ ์์ ๋๋ง ์คํฌ๋กค๋ฐ๊ฐ ์ถ๊ฐ๋ฉ๋๋ค.
์ค์ฉ์ ์ธ ์์ ๋ฐ ์ฌ์ฉ ์ฌ๋ก
CSS ๊ทธ๋ฆฌ๋ ํธ๋ ํฌ๊ธฐ ๋ถ๋ฐฐ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ฌ ์ผ๋ฐ์ ์ธ ๋ ์ด์์์ ๋ง๋๋ ๋ช ๊ฐ์ง ์ค์ฉ์ ์ธ ์์ ๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค:
์์ 1: ๋์ผํ ๋์ด์ ์ด
๋์ผํ ๋์ด์ ์ด์ ๊ตฌํํ๋ ๊ฒ์ ์ผ๋ฐ์ ์ธ ๋ ์ด์์ ์๊ตฌ ์ฌํญ์
๋๋ค. CSS ๊ทธ๋ฆฌ๋๋ฅผ ์ฌ์ฉํ๋ฉด 1fr
๋จ์๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฅผ ์ฝ๊ฒ ๋ฌ์ฑํ ์ ์์ต๋๋ค.
.grid-container {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
height: 300px; /* Important: Explicit height needed */
}
.grid-item {
background-color: #eee;
padding: 20px;
border: 1px solid #ccc;
}
์ด ์์์ ์ธ ๊ฐ์ ์ด์ ๋ชจ๋ ๋์ผํ ๋๋น๋ฅผ ๊ฐ์ง๋ฉฐ, ๊ทธ๋ฆฌ๋ ์ปจํ ์ด๋์ ์ ์๋ ๋์ด๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ๊ทธ๋ฆฌ๋ ์์ดํ ์ ์ฌ์ฉ ๊ฐ๋ฅํ ๋์ด๋ฅผ ์ฑ์ฐ๊ธฐ ์ํด ์๋์ผ๋ก ๋์ด๋ ๋์ผํ ๋์ด์ ์ด์ด ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๋ ์ปจํ ์ด๋์ ๋ช ์์ ์ธ ๋์ด๋ฅผ ์ค์ ํ๋ ๊ฒ์ ์ค์์ฑ์ ์ ์ํ์ญ์์ค.
์์ 2: ์ฌ์ด๋๋ฐ ๋ ์ด์์
๊ณ ์ ๋๋น ์ฌ์ด๋๋ฐ์ ์ ์ฐํ ๋ฉ์ธ ์ฝํ ์ธ ์์ญ์ด ์๋ ์ฌ์ด๋๋ฐ ๋ ์ด์์์ ๋ง๋๋ ๊ฒ์ ๋ ๋ค๋ฅธ ์ผ๋ฐ์ ์ธ ์ฌ์ฉ ์ฌ๋ก์ ๋๋ค.
.grid-container {
display: grid;
grid-template-columns: 200px 1fr;
}
.sidebar {
background-color: #f0f0f0;
padding: 20px;
}
.main-content {
padding: 20px;
}
์ด ์์์ ์ฌ์ด๋๋ฐ๋ ํญ์ 200px ๋๋น์ด๋ฉฐ, ๋ฉ์ธ ์ฝํ ์ธ ์์ญ์ ๋๋จธ์ง ์ฌ์ฉ ๊ฐ๋ฅํ ๊ณต๊ฐ์ ์ฑ์ฐ๊ธฐ ์ํด ํ์ฅ๋ฉ๋๋ค.
์์ 3: ๋ฐ์ํ ์ด๋ฏธ์ง ๊ฐค๋ฌ๋ฆฌ
CSS ๊ทธ๋ฆฌ๋๋ ๋ค์ํ ํ๋ฉด ํฌ๊ธฐ์ ์ ์ํ๋ ๋ฐ์ํ ์ด๋ฏธ์ง ๊ฐค๋ฌ๋ฆฌ๋ฅผ ๋ง๋๋ ๋ฐ ๋งค์ฐ ์ ํฉํฉ๋๋ค.
.grid-container {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
grid-gap: 10px;
}
.grid-item {
img {
width: 100%;
height: auto;
display: block;
}
}
์ด ์์์ repeat(auto-fit, minmax(200px, 1fr))
๊ตฌ๋ฌธ์ ๊ฐ๋ฅํ ํ ๋ง์ ์ด์ ์์ฑํ๋ฉฐ, ๊ฐ ์ด์ ์ต์ ๋๋น๋ 200px, ์ต๋ ๋๋น๋ 1fr์
๋๋ค. ์ด๋ ์ด๋ฏธ์ง๊ฐ ํญ์ ์ฌ์ฉ ๊ฐ๋ฅํ ๊ณต๊ฐ์ ์ฑ์ฐ๊ณ ํ์ํ ๋ ๋ค์ ์ค๋ก ์ค ๋ฐ๊ฟ๋๋๋ก ๋ณด์ฅํฉ๋๋ค. grid-gap
์์ฑ์ ์ด๋ฏธ์ง ์ฌ์ด์ ๊ฐ๊ฒฉ์ ์ถ๊ฐํฉ๋๋ค.
์์ 4: minmax()์ fr๋ฅผ ์ฌ์ฉํ ๋ณต์กํ ๋ ์ด์์
.grid-container {
display: grid;
grid-template-columns: minmax(150px, 25%) 1fr minmax(100px, 15%);
grid-template-rows: auto 1fr auto;
height: 500px;
}
.header { grid-area: 1 / 1 / 2 / 4; background-color: #eee; }
.sidebar { grid-area: 2 / 1 / 3 / 2; background-color: #ddd; }
.content { grid-area: 2 / 2 / 3 / 3; background-color: #ccc; }
.ads { grid-area: 2 / 3 / 3 / 4; background-color: #bbb; }
.footer { grid-area: 3 / 1 / 4 / 4; background-color: #aaa; }
.grid-item { padding: 10px; border: 1px solid black; }
์ด ์์ ๋ `minmax()`๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ด๋๋ฐ์ ๊ด๊ณ ์น์ ์ ์ ์ฐํ ๋๋น๋ฅผ ์ ์ํ์ฌ ๋๋ฌด ์ข์์ง์ง ์๋๋ก ํฉ๋๋ค. ๋ฉ์ธ ์ฝํ ์ธ ์์ญ์๋ `1fr` ๋จ์๋ฅผ ์ฌ์ฉํ์ฌ ๋๋จธ์ง ๊ณต๊ฐ์ ์ฑ์ธ ์ ์๋๋ก ํฉ๋๋ค. ์ด ์กฐํฉ์ ์ ์ฐํ๊ณ ๋ฐ์์ด ๋น ๋ฅธ ๋ ์ด์์์ ์ ๊ณตํฉ๋๋ค.
CSS ๊ทธ๋ฆฌ๋ ํธ๋ ํฌ๊ธฐ ์กฐ์ ์ ์ํ ๋ชจ๋ฒ ์ฌ๋ก
CSS ๊ทธ๋ฆฌ๋ ํธ๋ ํฌ๊ธฐ ์กฐ์ ์ ์์ ํ ๋ ์ผ๋์ ๋์ด์ผ ํ ๋ช ๊ฐ์ง ๋ชจ๋ฒ ์ฌ๋ก๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ์ ์ฐํ ๋ ์ด์์์๋
fr
๋จ์๋ฅผ ์ฌ์ฉํ์ธ์:fr
๋จ์๋ ๋ค์ํ ํ๋ฉด ํฌ๊ธฐ์ ์ ์ํ๋ ๋ ์ด์์์ ๋ง๋๋ ๋ฐ ์ด์์ ์ ๋๋ค. minmax()
๋ฅผ ์ฌ์ฉํ์ฌ ์ต์ ๋ฐ ์ต๋ ํธ๋ ํฌ๊ธฐ๋ฅผ ์ค์ ํ์ธ์: ์ด๋ ๊ฒ ํ๋ฉด ์ฝํ ์ธ ์ ๊ด๊ณ์์ด ํธ๋์ด ๋๋ฌด ์์์ง๊ฑฐ๋ ์ปค์ง์ง ์์ต๋๋ค.- ์ฝํ ์ธ ๊ธฐ๋ฐ ํฌ๊ธฐ ์กฐ์ ํค์๋๋ฅผ ๊ณ ๋ คํ์ธ์: ๋ค์ํ ์ฝํ ์ธ ๊ธธ์ด์ ์ ์ํ๋ ๋ฐ์ํ ๋ ์ด์์์ ๋งค์ฐ ์ ์ฉํ ์ ์์ต๋๋ค.
- ๋ค์ํ ์ฅ์น์ ํ๋ฉด ํฌ๊ธฐ์์ ๋ ์ด์์์ ํ ์คํธํ์ธ์: ๋ ์ด์์์ด ์ง์ ์ผ๋ก ๋ฐ์ํ์ด๊ณ ์๊ฐ์ ์ผ๋ก ๋งค๋ ฅ์ ์ธ์ง ํ์ธํ๋ ๋ฐ ์ค์ํฉ๋๋ค. ๋ธ๋ผ์ฐ์ ๊ฐ๋ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์ํ ํ๋ฉด ํฌ๊ธฐ์ ์ฅ์น ๋ฐฉํฅ์ ์๋ฎฌ๋ ์ด์ ํ์ธ์.
- ๋ชจ๋ฐ์ผ ์ฐ์ ์ ๊ทผ ๋ฐฉ์์ผ๋ก ์์ํ์ธ์: ๋จผ์ ์์ ํ๋ฉด์ฉ ๋ ์ด์์์ ๋์์ธํ ๋ค์ ํฐ ํ๋ฉด์ฉ์ผ๋ก ์ ์ง์ ์ผ๋ก ๊ฐ์ ํ์ธ์. ์ด๋ ๊ฒ ํ๋ฉด ๋ชจ๋ ์ฅ์น์ ์ฌ์ฉ์๊ฐ ๋ ์ด์์์ ์ก์ธ์คํ ์ ์์ต๋๋ค.
- ์ค๋ช ์ ์ธ ํด๋์ค ์ด๋ฆ์ ์ฌ์ฉํ์ธ์: ๊ฐ ๊ทธ๋ฆฌ๋ ํญ๋ชฉ์ ๋ชฉ์ ์ ๋ช ํํ๊ฒ ๋ํ๋ด๋ ํด๋์ค ์ด๋ฆ์ ์ฌ์ฉํ์ธ์. ์ด๋ ๊ฒ ํ๋ฉด CSS ์ฝ๋๋ฅผ ๋ ์ฝ๊ฒ ์ดํดํ๊ณ ์ ์ง ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
- CSS ์ฝ๋์ ์ฃผ์์ ๋ค์ธ์: CSS ์ฝ๋์ ์ฃผ์์ ์ถ๊ฐํ์ฌ ๋ค๋ฅธ ์น์ ๊ณผ ์์ฑ์ ๋ชฉ์ ์ ์ค๋ช ํ์ธ์. ์ด๋ ๊ฒ ํ๋ฉด ๊ทํ์ ๋ค๋ฅธ ์ฌ๋๋ค์ด ์ฝ๋๋ฅผ ๋ ์ฝ๊ฒ ์ดํดํ๊ณ ์ ์ง ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
์ผ๋ฐ์ ์ธ ๊ทธ๋ฆฌ๋ ๋ ์ด์์ ๋ฌธ์ ํด๊ฒฐ
CSS ๊ทธ๋ฆฌ๋ ํธ๋ ํฌ๊ธฐ ๋ถ๋ฐฐ ์๊ณ ๋ฆฌ์ฆ์ ๋ํด ์ ์ดํดํ๊ณ ์๋๋ผ๋ ์ฌ์ ํ ๋ช ๊ฐ์ง ์ผ๋ฐ์ ์ธ ๋ ์ด์์ ๋ฌธ์ ์ ์ง๋ฉดํ ์ ์์ต๋๋ค. ๋ค์์ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๋ช ๊ฐ์ง ํ์ ๋๋ค:
- ํธ๋ ํฌ๊ธฐ๊ฐ ์์๋๋ก ์กฐ์ ๋์ง ์์: ํธ๋ ํฌ๊ธฐ ์กฐ์ ๊ฐ์ด ์ฌ๋ฐ๋ฅธ์ง ๋ค์ ํ์ธํ์ธ์. ๋ํ ๋ค๋ฅธ CSS ์์ฑ์ผ๋ก ํธ๋ ํฌ๊ธฐ ์กฐ์ ๊ฐ์ ์๋์น ์๊ฒ ์ฌ์ ์ํ๊ณ ์์ง ์์์ง ํ์ธํ์ธ์.
- ์ฝํ
์ธ ๊ฐ ๊ทธ๋ฆฌ๋ ์
์ ๋์นจ:
overflow
์์ฑ์ ์ฌ์ฉํ์ฌ ์ค๋ฒํ๋ก ์ฒ๋ฆฌ ๋ฐฉ๋ฒ์ ์ ์ดํ์ธ์. ๋ํ ํธ๋ ํฌ๊ธฐ ์กฐ์ ๊ฐ์ ์กฐ์ ํ์ฌ ์ฝํ ์ธ ๋ฅผ ์ํ ์ถฉ๋ถํ ๊ณต๊ฐ์ ํ๋ณดํ ์ ์์ต๋๋ค. - ๊ทธ๋ฆฌ๋ ์์ดํ
์ด ์ฌ๋ฐ๋ฅด๊ฒ ์ ๋ ฌ๋์ง ์์:
justify-items
,align-items
,justify-content
,align-content
์์ฑ์ ์ฌ์ฉํ์ฌ ๊ทธ๋ฆฌ๋ ์ ๊ณผ ๊ทธ๋ฆฌ๋ ์ปจํ ์ด๋ ๋ด์์ ๊ทธ๋ฆฌ๋ ์์ดํ ์ ์ ๋ ฌ์ ์ ์ดํ์ธ์. - ๊ทธ๋ฆฌ๋ ๊ฐ๊ฒฉ์ด ์์๋๋ก ๋ํ๋์ง ์์:
grid-gap
์์ฑ์ด ๊ทธ๋ฆฌ๋ ์ปจํ ์ด๋์ ์ฌ๋ฐ๋ฅด๊ฒ ์ ์ฉ๋์๋์ง ํ์ธํ์ธ์. ๋ํ ๊ทธ๋ฆฌ๋ ๊ฐ๊ฒฉ์ ๋ฐฉํดํ๋ ๋ค๋ฅธ CSS ์์ฑ์ด ์๋์ง ํ์ธํ์ธ์.
๊ณ ๊ธ ๊ธฐ์
CSS ๊ทธ๋ฆฌ๋ ํธ๋ ํฌ๊ธฐ ์กฐ์ ์ ๊ธฐ๋ณธ์ ๋ง์คํฐํ๋ค๋ฉด ๋ช ๊ฐ์ง ๊ณ ๊ธ ๊ธฐ์ ์ ํ์ํ์ฌ ํจ์ฌ ๋ ์ ๊ตํ ๋ ์ด์์์ ๋ง๋ค ์ ์์ต๋๋ค.
์ค์ฒฉ ๊ทธ๋ฆฌ๋
CSS ๊ทธ๋ฆฌ๋๋ฅผ ์ฌ์ฉํ๋ฉด ๋ค๋ฅธ ๊ทธ๋ฆฌ๋ ๋ด์ ๊ทธ๋ฆฌ๋๋ฅผ ์ค์ฒฉํ ์ ์์ต๋๋ค. ์ด๋ ๊ณ์ธต์ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง ๋ณต์กํ ๋ ์ด์์์ ๋ง๋๋ ๋ฐ ์ ์ฉํ ์ ์์ต๋๋ค.
์ด๋ฆ ์๋ ๊ทธ๋ฆฌ๋ ์์ญ
์ด๋ฆ ์๋ ๊ทธ๋ฆฌ๋ ์์ญ์ ์ฌ์ฉํ๋ฉด ๊ทธ๋ฆฌ๋ ๋ด์ ํน์ ์์ญ์ ์ ์ํ๊ณ grid-area
์์ฑ์ ์ฌ์ฉํ์ฌ ํด๋น ์์ญ์ ๊ทธ๋ฆฌ๋ ์์ดํ
์ ํ ๋นํ ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด CSS ์ฝ๋๋ฅผ ๋ ์ฝ๊ธฐ ์ฝ๊ณ ์ ์ง ๊ด๋ฆฌํ๊ธฐ ์ฝ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค.
์๋ ํ๋ฆ (Autoflow)
grid-auto-flow
์์ฑ์ grid-column
๋ฐ grid-row
์์ฑ์ ์ฌ์ฉํ์ฌ ๋ช
์์ ์ผ๋ก ๋ฐฐ์น๋์ง ์์ ๊ทธ๋ฆฌ๋ ์์ดํ
์ด ๊ทธ๋ฆฌ๋์ ์๋์ผ๋ก ๋ฐฐ์น๋๋ ๋ฐฉ์์ ์ ์ดํฉ๋๋ค. ์ด๋ ๊ทธ๋ฆฌ๋ ์์ดํ
์ ์๊ฐ ๋ฏธ๋ฆฌ ์๋ ค์ง์ง ์์ ๋์ ๋ ์ด์์์ ๋ง๋๋ ๋ฐ ์ ์ฉํ ์ ์์ต๋๋ค.
๊ฒฐ๋ก
CSS ๊ทธ๋ฆฌ๋ ํธ๋ ํฌ๊ธฐ ๋ถ๋ฐฐ ์๊ณ ๋ฆฌ์ฆ์ ์ดํดํ๋ ๊ฒ์ ๋ฐ์ํ์ด๊ณ ์ ์ฐํ๋ฉฐ ์๊ฐ์ ์ผ๋ก ๋งค๋ ฅ์ ์ธ ์น ๋ ์ด์์์ ๋ง๋๋ ๋ฐ ํ์์ ์
๋๋ค. ๊ณ ์ ํฌ๊ธฐ, ๋ฐฑ๋ถ์จ ํฌ๊ธฐ, fr
๋จ์, auto
, minmax()
๋ฑ ๋ค์ํ ํฌ๊ธฐ ์กฐ์ ์์ฑ์ ๋ง์คํฐํจ์ผ๋ก์จ ๊ทธ๋ฆฌ๋ ๋ ์ด์์์ ์์ ํ ์ ์ดํ๊ณ ์ง์ ์ผ๋ก ๋
ํนํ๊ณ ๋งค๋ ฅ์ ์ธ ์ฌ์ฉ์ ๊ฒฝํ์ ๋ง๋ค ์ ์์ต๋๋ค. CSS ๊ทธ๋ฆฌ๋์ ์ ์ฐ์ฑ๊ณผ ๊ฐ๋ ฅํจ์ ๋ฐ์๋ค์ด๊ณ ์น ๋์์ธ์ ๋ํ ์๋ก์ด ์ฐจ์์ ์ ์ด๋ ฅ์ ๋ฐํํด ๋ณด์ธ์.
ํน์ ๋ ์ด์์ ์๊ตฌ ์ฌํญ์ ๊ฐ์ฅ ์ ํฉํ ์ ๊ทผ ๋ฐฉ์์ ์ฐพ๊ธฐ ์ํด ๋ค์ํ ํฌ๊ธฐ ์กฐ์ ์์ฑ๊ณผ ๊ธฐ์ ์ ์กฐํฉ์ ๊ณ์ ์คํํด ๋ณด์ธ์. ๊ฒฝํ์ด ์์ด๋ฉด ์๊ณ ๋ฆฌ์ฆ์ ๋ํ ๋ ๊น์ ์ดํด๋ฅผ ๊ฐ๊ฒ ๋๊ณ ๋ณต์กํ๊ณ ๋ฐ์์ด ๋น ๋ฅธ ๊ทธ๋ฆฌ๋ ๋ ์ด์์์ ๋ง๋๋ ๋ฐ ๋์ฑ ๋ฅ์ํด์ง ๊ฒ์ ๋๋ค.