CSS Grid์ ํธ๋ ํฌ๊ธฐ ์บ์ฑ ๋ฉ์ปค๋์ฆ, ๋ ์ด์์ ์ฑ๋ฅ ๊ฐ์ ๋ฐฉ๋ฒ, ๋ค์ํ ๊ธฐ๊ธฐ ๋ฐ ๋ธ๋ผ์ฐ์ ์ ๋ฐ์ ๋ฐ์ํ ๋ฐ ํจ์จ์ ์ธ ์น ๋์์ธ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ํ์ํฉ๋๋ค.
CSS Grid ํธ๋ ํฌ๊ธฐ ์บ์ฑ: ๋ ์ด์์ ์ฑ๋ฅ ์ต์ ํ
CSS Grid๋ ๊ฐ๋ฐ์๊ฐ ๋ณต์กํ๊ณ ๋ฐ์ํ์ธ ์น ๋์์ธ์ ์ฝ๊ฒ ๋ง๋ค ์ ์๋๋ก ํ๋ ๊ฐ๋ ฅํ ๋ ์ด์์ ์์คํ ์ ๋๋ค. ํ์ง๋ง ๊ฐ๋ ฅํ ๋๊ตฌ์ธ ๋งํผ, ์ต์ ์ ์ฑ๋ฅ์ ๋ฌ์ฑํ๊ธฐ ์ํด์๋ ๊ทธ ๊ธฐ๋ฐ ๋ฉ์ปค๋์ฆ์ ์ดํดํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ด๋ฌํ ๋ฉ์ปค๋์ฆ ์ค ํ๋๊ฐ ๋ฐ๋ก ํธ๋ ํฌ๊ธฐ ์บ์ฑ์ผ๋ก, ๋ ์ด์์ ํ๋ก์ธ์ค๋ฅผ ํฌ๊ฒ ๊ฐ์ํํ๋ ๊ธฐ์ ์ ๋๋ค. ์ด ๊ธ์์๋ CSS Grid ํธ๋ ํฌ๊ธฐ ์บ์ฑ์ด ์ด๋ป๊ฒ ์๋ํ๋ฉฐ, ์ด๋ฅผ ํ์ฉํ์ฌ ์ ์ธ๊ณ ์ฌ์ฉ์๋ฅผ ์ํ ๋ ๋น ๋ฅด๊ณ ํจ์จ์ ์ธ ์น์ฌ์ดํธ๋ฅผ ๊ตฌ์ถํ๋ ๋ฐฉ๋ฒ์ ์์ธํ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
CSS Grid ํธ๋์ด๋ ๋ฌด์์ธ๊ฐ์?
์บ์ฑ์ ๋ํด ์์ธํ ์์๋ณด๊ธฐ ์ ์ CSS Grid ํธ๋์ด ๋ฌด์์ธ์ง ์ ์ํด ๋ณด๊ฒ ์ต๋๋ค. CSS Grid์์ ํธ๋์ ๊ทธ๋ฆฌ๋ ์ ์ฌ์ด์ ๊ณต๊ฐ์ ์๋ฏธํฉ๋๋ค. ์ด ๊ณต๊ฐ์ ํ(๊ฐ๋ก ํธ๋) ๋๋ ์ด(์ธ๋ก ํธ๋)์ด ๋ ์ ์์ต๋๋ค. ์ด๋ฌํ ํธ๋์ ํฌ๊ธฐ๋ ๊ทธ๋ฆฌ๋ ๋ด ์์์ ์์น๋ฅผ ๊ฒฐ์ ํฉ๋๋ค.
์๋ฅผ ๋ค์ด, ๋ค์ CSS Grid ์ ์๋ฅผ ๊ณ ๋ คํด ๋ณด์ธ์:
.grid-container {
display: grid;
grid-template-columns: 1fr 2fr 1fr;
grid-template-rows: auto 100px auto;
}
์ด ์์์์๋ ์ธ ๊ฐ์ ์ด ํธ๋๊ณผ ์ธ ๊ฐ์ ํ ํธ๋์ด ์์ต๋๋ค. ์ด ํธ๋์ fr ๋จ์(์ฌ์ฉ ๊ฐ๋ฅํ ๊ณต๊ฐ์ ๋น์จ)๋ฅผ ์ฌ์ฉํ์ฌ ํฌ๊ธฐ๊ฐ ์ง์ ๋๊ณ , ํ ํธ๋์ auto์ ๊ณ ์ ํฝ์
๊ฐ(100px)์ ์ฌ์ฉํ์ฌ ํฌ๊ธฐ๊ฐ ์ง์ ๋ฉ๋๋ค. ์ด๋ฌํ ๊ธฐ๋ณธ ๊ฐ๋
์ ์ดํดํ๋ ๊ฒ์ ํธ๋ ํฌ๊ธฐ ์บ์ฑ์ ์ญํ ์ ์ดํดํ๋ ๋ฐ ํ์์ ์
๋๋ค.
๋ฌธ์ ์ : ๋ ์ด์์ ์ฌ๊ณ์ฐ
ํนํ fr ๋๋ auto์ ๊ฐ์ ์ ์ฐํ ๋จ์๋ฅผ ์ฌ์ฉํ ๋ ๊ทธ๋ฆฌ๋ ํธ๋์ ํฌ๊ธฐ๋ฅผ ๊ณ์ฐํ๋ ๊ฒ์ ๋ธ๋ผ์ฐ์ ์๊ฒ ๊ณ์ฐ ๋น์ฉ์ด ๋ง์ด ๋๋ ์์
์ผ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๋ ํญ๋ชฉ ๋ด ์ฝํ
์ธ ๊ฐ ๋ณ๊ฒฝ๋๊ฑฐ๋ ๋ทฐํฌํธ ํฌ๊ธฐ๊ฐ ์กฐ์ ๋๋ฉด, ๋ธ๋ผ์ฐ์ ๋ ๋ ์ด์์์ด ์ผ๊ด๋๊ณ ๋ฐ์ํ์ผ๋ก ์ ์ง๋๋๋ก ํธ๋ ํฌ๊ธฐ๋ฅผ ๋ค์ ๊ณ์ฐํด์ผ ํฉ๋๋ค.
์๋ง์ ๊ทธ๋ฆฌ๋ ํญ๋ชฉ๊ณผ ์ค์ฒฉ๋ ๊ทธ๋ฆฌ๋๊ฐ ์๋ ๋ณต์กํ ๊ทธ๋ฆฌ๋ ๋ ์ด์์์ ์์ํด ๋ณด์ธ์. ๋ธ๋ผ์ฐ์ ๊ฐ ๋ ์ด์์์ ๋ค์ ๊ณ์ฐํ ๋๋ง๋ค ๋ชจ๋ ๊ทธ๋ฆฌ๋ ํญ๋ชฉ์ ๋ฐ๋ณตํ์ฌ ์ฝํ ์ธ ํฌ๊ธฐ๋ฅผ ๊ฒฐ์ ํ๊ณ ํธ๋ ํฌ๊ธฐ๋ฅผ ๊ทธ์ ๋ง๊ฒ ์กฐ์ ํด์ผ ํฉ๋๋ค. ์ด ๊ณผ์ ์ ํนํ ์ฒ๋ฆฌ ๋ฅ๋ ฅ์ด ์ ํ๋ ๊ธฐ๊ธฐ๋ ๋น๋ฒํ ๋ ์ด์์ ๋ณ๊ฒฝ(์: ์ ๋๋ฉ์ด์ ๋๋ ๋์ ์ฝํ ์ธ ์ ๋ฐ์ดํธ)์ด ๋ฐ์ํ๋ ์๋๋ฆฌ์ค์์ ์ฑ๋ฅ ๋ณ๋ชฉ ํ์์ ์ผ์ผํฌ ์ ์์ต๋๋ค.
ํธ๋ ํฌ๊ธฐ ์บ์ฑ: ์ฑ๋ฅ ์ต์ ํ
์ด๋ฌํ ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ธ๋ผ์ฐ์ ๋ ํธ๋ ํฌ๊ธฐ ์บ์ฑ์ ๊ตฌํํฉ๋๋ค. ํธ๋ ํฌ๊ธฐ ์บ์ฑ์ ๋ธ๋ผ์ฐ์ ๊ฐ ํน์ ์กฐ๊ฑด ์งํฉ์ ๋ํด ๊ณ์ฐ๋ ๊ทธ๋ฆฌ๋ ํธ๋ ํฌ๊ธฐ๋ฅผ ์ ์ฅํ๋ ๋ฉ์ปค๋์ฆ์ ๋๋ค. ๋์ผํ ์กฐ๊ฑด(์: ๋์ผํ ๋ทฐํฌํธ ํฌ๊ธฐ, ๋์ผํ ์ฝํ ์ธ ํฌ๊ธฐ)์์ ๋ ์ด์์์ ๋ค์ ๊ณ์ฐํด์ผ ํ ๋, ๋ธ๋ผ์ฐ์ ๋ ์ฒ์๋ถํฐ ๋ค์ ๊ณ์ฐํ๋ ๋์ ์บ์๋ ํธ๋ ํฌ๊ธฐ๋ฅผ ๊ฒ์ํ ์ ์์ต๋๋ค. ์ด๋ ๋ ์ด์์ ๊ณ์ฐ ์๊ฐ์ ํฌ๊ฒ ์ค์ด๊ณ ์ ๋ฐ์ ์ธ ์ฑ๋ฅ์ ํฅ์์ํต๋๋ค.
๋ณธ์ง์ ์ผ๋ก ๋ธ๋ผ์ฐ์ ๋ ํน์ ์ํฉ์์ ํธ๋์ ์ด๋ป๊ฒ ํฌ๊ธฐ ์กฐ์ ํ๋์ง ๊ธฐ์ตํฉ๋๋ค. ํด๋น ์ํฉ์ด ๋ฐ๋ณต๋๋ฉด ๋จ์ํ ๊ธฐ์กด ๊ณ์ฐ์ ์ฌ์ฌ์ฉํ์ฌ ๋น์ฉ์ด ๋ง์ด ๋๋ ๋ ์ด์์ ์ฌ๊ณ์ฐ ํ๋ก์ธ์ค๋ฅผ ๊ฑด๋๋๋๋ค. ์ด๋ ๋ธ๋ผ์ฐ์ ๊ฐ ์ด๋ฏธ์ง ๋ฐ CSS ํ์ผ๊ณผ ๊ฐ์ ๋ค๋ฅธ ๋ฆฌ์์ค๋ฅผ ์บ์ํ๋ ๋ฐฉ์๊ณผ ์ ์ฌํฉ๋๋ค.
ํธ๋ ํฌ๊ธฐ ์บ์ฑ ์๋ ๋ฐฉ์
ํธ๋ ํฌ๊ธฐ ์บ์ฑ์ ์ ํํ ๊ตฌํ์ ๋ธ๋ผ์ฐ์ ๋ง๋ค ๋ค๋ฅด์ง๋ง, ์ผ๋ฐ์ ์ธ ์์น์ ๋์ผํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์๋ํ๋ ๋ฐฉ์์ ๋ํ ๊ฐ๋ตํ ๊ฐ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ๋ ์ด์์ ๊ณ์ฐ: ๋ธ๋ผ์ฐ์ ๊ฐ ์ฒ์ ๊ทธ๋ฆฌ๋ ๋ ์ด์์์ ๋ ๋๋งํ๊ฑฐ๋ ๋ ์ด์์ ๋ณ๊ฒฝ์ ๊ฐ์งํ๋ฉด, ๊ทธ๋ฆฌ๋ ์ ์, ๊ทธ๋ฆฌ๋ ํญ๋ชฉ ๋ด ์ฝํ ์ธ ๋ฐ ์ฌ์ฉ ๊ฐ๋ฅํ ๊ณต๊ฐ์ ๊ธฐ์ค์ผ๋ก ๋ชจ๋ ํธ๋์ ํฌ๊ธฐ๋ฅผ ๊ณ์ฐํฉ๋๋ค.
- ์บ์ ์ ์ฅ: ๊ณ์ฐ๋ ํธ๋ ํฌ๊ธฐ๋ ๊ณ์ฐ๋ ์กฐ๊ฑด(์: ๋ทฐํฌํธ ํฌ๊ธฐ, ์ฝํ ์ธ ํฌ๊ธฐ)๊ณผ ํจ๊ป ์บ์์ ์ ์ฅ๋ฉ๋๋ค. ์ด ์บ์๋ ์ผ๋ฐ์ ์ผ๋ก ํน์ ๊ทธ๋ฆฌ๋ ์ปจํ ์ด๋์ ์ฐ๊ฒฐ๋ฉ๋๋ค.
- ์บ์ ์กฐํ: ๋ ์ด์์์ ๋ค์ ๊ณ์ฐํด์ผ ํ ๋, ๋ธ๋ผ์ฐ์ ๋ ๋จผ์ ์บ์๋ฅผ ํ์ธํ์ฌ ํ์ฌ ์กฐ๊ฑด๊ณผ ์ผ์นํ๋ ํญ๋ชฉ์ด ์๋์ง ํ์ธํฉ๋๋ค.
- ์บ์ ํํธ: ์ผ์นํ๋ ์บ์ ํญ๋ชฉ์ด ๋ฐ๊ฒฌ๋๋ฉด("์บ์ ํํธ"), ๋ธ๋ผ์ฐ์ ๋ ์บ์๋ ํธ๋ ํฌ๊ธฐ๋ฅผ ๊ฒ์ํ๊ณ ์ ์ฒด ์ฌ๊ณ์ฐ ์์ด ๋ ์ด์์์ ๋ ๋๋งํ๋ ๋ฐ ์ฌ์ฉํฉ๋๋ค.
- ์บ์ ๋ฏธ์ค: ์ผ์นํ๋ ์บ์ ํญ๋ชฉ์ด ๋ฐ๊ฒฌ๋์ง ์์ผ๋ฉด("์บ์ ๋ฏธ์ค"), ๋ธ๋ผ์ฐ์ ๋ ์ ์ฒด ๋ ์ด์์ ์ฌ๊ณ์ฐ์ ์ํํ๊ณ ์๋ก์ด ํธ๋ ํฌ๊ธฐ๋ฅผ ์บ์์ ์ ์ฅํ ๋ค์ ๋ ์ด์์์ ๋ ๋๋งํฉ๋๋ค.
ํธ๋ ํฌ๊ธฐ ์บ์ ์ ํจ์ฑ์ ์ํฅ์ ๋ฏธ์น๋ ์์ธ
ํธ๋ ํฌ๊ธฐ ์บ์ฑ์ ํจ์จ์ฑ์ ์บ์๋ ํธ๋ ํฌ๊ธฐ๊ฐ ์ผ๋ง๋ ์์ฃผ ์ ํจํ์ง์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค. ์ฌ๋ฌ ์์ธ์ด ์บ์๋ฅผ ๋ฌดํจํํ๊ณ ๋ธ๋ผ์ฐ์ ๊ฐ ๋ ์ด์์์ ๋ค์ ๊ณ์ฐํ๋๋ก ๊ฐ์ ํ ์ ์์ต๋๋ค:
- ๋ทฐํฌํธ ํฌ๊ธฐ ์กฐ์ : ๋ทฐํฌํธ ํฌ๊ธฐ๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒ์ ์บ์ ๋ฌดํจํ์ ์ผ๋ฐ์ ์ธ ์์ธ์
๋๋ค. ๋ทฐํฌํธ ํฌ๊ธฐ๊ฐ ๋ณ๊ฒฝ๋๋ฉด ๊ทธ๋ฆฌ๋ ์ปจํ
์ด๋์ ์ฌ์ฉ ๊ฐ๋ฅํ ๊ณต๊ฐ์ด ๋ณ๊ฒฝ๋์ด ์ ์ฐํ ํธ๋ ํฌ๊ธฐ(์:
fr๋จ์๋ก ํฌ๊ธฐ๊ฐ ์ง์ ๋ ํธ๋) ๊ณ์ฐ์ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค. - ์ฝํ ์ธ ๋ณ๊ฒฝ: ๊ทธ๋ฆฌ๋ ํญ๋ชฉ ๋ด ์ฝํ ์ธ ๋ฅผ ์์ ํ๋ ๊ฒ๋ ์บ์๋ฅผ ๋ฌดํจํํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๊ทธ๋ฆฌ๋ ํญ๋ชฉ์ ๋์ ์ผ๋ก ์ฝํ ์ธ ๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ์ ๊ฑฐํ๋ฉด ๋ธ๋ผ์ฐ์ ๋ ๋ณ๊ฒฝ ์ฌํญ์ ์์ฉํ๊ธฐ ์ํด ํธ๋ ํฌ๊ธฐ๋ฅผ ๋ค์ ๊ณ์ฐํด์ผ ํ ์ ์์ต๋๋ค.
- CSS ๋ณ๊ฒฝ: ๊ทธ๋ฆฌ๋ ๋ ์ด์์์ ์ํฅ์ ๋ฏธ์น๋ CSS ์คํ์ผ ๋ณ๊ฒฝ(์:
grid-template-columns,grid-template-rows๋๋gap๋ณ๊ฒฝ)์ ์บ์๋ฅผ ๋ฌดํจํํฉ๋๋ค. - ๊ธ๊ผด ๋ณ๊ฒฝ: ๋ค๋ฅธ ๊ธ๊ผด์ ๋ก๋ํ๊ฑฐ๋ ๊ธ๊ผด ํฌ๊ธฐ๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒ๊ณผ ๊ฐ์ ์ฌ์ํด ๋ณด์ด๋ ๋ณ๊ฒฝ๋ ํ ์คํธ ๋ ๋๋ง ๋ฐ ์ฝํ ์ธ ํฌ๊ธฐ์ ์ํฅ์ ๋ฏธ์ณ ์บ์ ๋ฌดํจํ๋ฅผ ์ด๋ํ ์ ์์ต๋๋ค. ๋ค์ํ ์ธ์ด ๋ฐ ๋ก์ผ์ผ์ ๋ค์ํ ๋ฌธ์ ๋๋น์ ์ํฅ์ ๊ณ ๋ คํ์ธ์. ์ผ๋ถ ์คํฌ๋ฆฝํธ๋ ๋ค๋ฅธ ์คํฌ๋ฆฝํธ๋ณด๋ค ํจ์ฌ ๋๊ฒ ๋ ๋๋ง๋์ด ํธ๋ ํฌ๊ธฐ ๊ณ์ฐ์ ์ํฅ์ ์ค ์ ์์ต๋๋ค.
- JavaScript ์ํธ ์์ฉ: ๊ทธ๋ฆฌ๋ ๋ ์ด์์์ด๋ ๊ทธ๋ฆฌ๋ ํญ๋ชฉ ๋ด ์ฝํ ์ธ ๋ฅผ ์์ ํ๋ JavaScript ์ฝ๋๋ ์บ์๋ฅผ ๋ฌดํจํํ ์๋ ์์ต๋๋ค.
ํธ๋ ํฌ๊ธฐ ์บ์ฑ ํจ์จ์ฑ ๊ทน๋ํ๋ฅผ ์ํ ๋ชจ๋ฒ ์ฌ๋ก
ํธ๋ ํฌ๊ธฐ ์บ์ฑ์ ์๋ํ๋ ์ต์ ํ์ด์ง๋ง, ํจ์จ์ฑ์ ๊ทน๋ํํ๊ณ ๋ ์ด์์ ์ฌ๊ณ์ฐ ํ์๋ฅผ ์ต์ํํ๊ธฐ ์ํด ํ ์ ์๋ ๋ช ๊ฐ์ง ์์ ์ด ์์ต๋๋ค:
- ๋ถํ์ํ ๋ ์ด์์ ๋ณ๊ฒฝ ์ต์ํ: ๊ทธ๋ฆฌ๋ ๋ ์ด์์ ๋๋ ๊ทธ๋ฆฌ๋ ํญ๋ชฉ ๋ด ์ฝํ ์ธ ์ ๋น๋ฒํ๊ฑฐ๋ ๋ถํ์ํ ๋ณ๊ฒฝ์ ํผํ์ญ์์ค. ๊ฐ๋ฅํ ๊ฒฝ์ฐ ์ ๋ฐ์ดํธ๋ฅผ ํจ๊ป ๋ฐฐ์นํ์ฌ ๋ ์ด์์ ์ฌ๊ณ์ฐ ํ์๋ฅผ ์ค์ ๋๋ค. ์๋ฅผ ๋ค์ด, ์ฌ๋ฌ ๊ทธ๋ฆฌ๋ ํญ๋ชฉ์ ์ฝํ ์ธ ๋ฅผ ๊ฐ๋ณ์ ์ผ๋ก ์ ๋ฐ์ดํธํ๋ ๋์ ํ ๋ฒ์ ๋ชจ๋ ์ ๋ฐ์ดํธํฉ๋๋ค.
- CSS
contain์์ฑ ์ฌ์ฉ: CSScontain์์ฑ์ ๋ ์ด์์ ๋ณ๊ฒฝ์ ํ์ด์ง์ ํน์ ๋ถ๋ถ์ผ๋ก ๊ฒฉ๋ฆฌํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๋ ์ปจํ ์ด๋์contain: layout์ ์ ์ฉํ๋ฉด ํด๋น ์ปจํ ์ด๋ ๋ด์ ๋ณ๊ฒฝ ์ฌํญ์ด ์ปจํ ์ด๋ ์ธ๋ถ ์์์ ๋ ์ด์์์ ์ํฅ์ ๋ฏธ์น์ง ์๋๋ก ๋ธ๋ผ์ฐ์ ์ ์๋ฆด ์ ์์ต๋๋ค. ์ด๋ ํ์ด์ง์ ๋ค๋ฅธ ๋ถ๋ถ์์ ๋ถํ์ํ ์บ์ ๋ฌดํจํ ๋ฐ ๋ ์ด์์ ์ฌ๊ณ์ฐ์ ๋ฐฉ์งํ ์ ์์ต๋๋ค. ์ค์ฉ ์ ๋ธ๋ผ์ฐ์ ์ ์ต์ ํ ๊ธฐ๋ฅ์ ๋ฐฉํดํ ์ ์์ผ๋ฏ๋ก ์ ์คํ ๊ณ ๋ ค๊ฐ ํ์ํฉ๋๋ค. - ์ด๋ฏธ์ง ๋ฐ ๊ธฐํ ์ ์
์ต์ ํ: ๊ทธ๋ฆฌ๋ ํญ๋ชฉ ๋ด์ ์ด๋ฏธ์ง ๋ฐ ๊ธฐํ ์ ์
์ด ์ ๋๋ก ์ต์ ํ๋์๋์ง ํ์ธํฉ๋๋ค. ํฌ๊ฑฐ๋ ์ต์ ํ๋์ง ์์ ์ ์
์ ๋ก๋ํ๊ณ ๋ ๋๋งํ๋ ๋ฐ ๋ ์ค๋ ๊ฑธ๋ฆด ์ ์์ผ๋ฉฐ, ์ด๋ ์ด๊ธฐ ๋ ์ด์์ ๊ณ์ฐ์ ์ง์ฐ์ํค๊ณ ์บ์ ๋ฌดํจํ ๊ฐ๋ฅ์ฑ์ ๋์
๋๋ค. ๋ฐ์ํ ์ด๋ฏธ์ง(
<picture>์์ ๋๋srcset์์ฑ)๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์ํ ํ๋ฉด ํฌ๊ธฐ ๋ฐ ํด์๋์ ์ ํฉํ ํฌ๊ธฐ์ ์ด๋ฏธ์ง๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ ๊ณ ๋ คํ์ญ์์ค. - ๊ฐ์ ๋๊ธฐ์ ๋ ์ด์์ ๋ฐฉ์ง: ๊ฐ์ ๋๊ธฐ์ ๋ ์ด์์์ JavaScript ์ฝ๋๊ฐ ๋ ์ด์์์ ์ํฅ์ ๋ฏธ์น๋ ๋ณ๊ฒฝ์ ํ ์งํ ๋ ์ด์์ ์์ฑ(์:
offsetWidth,offsetHeight)์ ์ฝ์ ๋ ๋ฐ์ํฉ๋๋ค. ์ด๋ ๋ธ๋ผ์ฐ์ ๊ฐ JavaScript ์ฝ๋๋ฅผ ์คํํ๊ธฐ ์ ์ ๋ ์ด์์ ์ฌ๊ณ์ฐ์ ์ํํ๋๋ก ๊ฐ์ ํ๋ฉฐ, ์ด๋ ์ฑ๋ฅ ๋ณ๋ชฉ ํ์์ด ๋ ์ ์์ต๋๋ค. ๊ฐ๋ฅํ ํ ์ด ํจํด์ ํผํ์ญ์์ค. ์คํฌ๋ฆฝํธ ์์ ๋ถ๋ถ์์ ๋ ์ด์์์ ์ํฅ์ ๋ฏธ์น ์ ์๋ ๋ณ๊ฒฝ์ ํ๊ธฐ ์ ์ ๋ ์ด์์ ์์ฑ์ ์ฝ์ผ์ญ์์ค. - ์ด๋ฒคํธ ํธ๋ค๋ฌ ๋๋ฐ์ด์ฑ ๋ฐ ์ค๋กํ๋ง: ๋ ์ด์์ ๋ณ๊ฒฝ์ ํธ๋ฆฌ๊ฑฐํ๋ ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ ๋(์:
resize,scroll), ๋๋ฐ์ด์ฑ ๋๋ ์ค๋กํ๋ง ๊ธฐ์ ์ ์ฌ์ฉํ์ฌ ์ด๋ฒคํธ ํธ๋ค๋ฌ ์คํ ๋น๋๋ฅผ ์ ํํฉ๋๋ค. ์ด๋ ๊ณผ๋ํ ๋ ์ด์์ ์ฌ๊ณ์ฐ์ ๋ฐฉ์งํ๊ณ ์ ๋ฐ์ ์ธ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์ต๋๋ค. ๋๋ฐ์ด์ฑ์ ๋ง์ง๋ง ์ด๋ฒคํธ ์ดํ ์ผ์ ์๊ฐ์ด ์ง๋ ๋๊น์ง ์ด๋ฒคํธ ํธ๋ค๋ฌ ์คํ์ ์ง์ฐ์ํต๋๋ค. ์ค๋กํ๋ง์ ์ด๋ฒคํธ ํธ๋ค๋ฌ๊ฐ ์คํ๋๋ ์๋๋ฅผ ์ ํํฉ๋๋ค. content-visibility: auto๊ณ ๋ ค: ์ฒ์์ ํ๋ฉด ๋ฐ์ ์๋ ๊ทธ๋ฆฌ๋ ํญ๋ชฉ์ ๊ฒฝ์ฐcontent-visibility: autoCSS ์์ฑ์ ์ฌ์ฉํ๋ ๊ฒ์ ๊ณ ๋ คํ์ญ์์ค. ์ด ์์ฑ์ ๋ธ๋ผ์ฐ์ ๊ฐ ํ๋ฉด ๋ฐ์ ์๋ ์์์ ์ฝํ ์ธ ๋ ๋๋ง์ ํด๋น ์์๊ฐ ๋ณด์ผ ๋๊น์ง ๊ฑด๋๋ธ ์ ์๋๋ก ํ์ฌ ์ด๊ธฐ ํ์ด์ง ๋ก๋ ์ฑ๋ฅ์ ํฌ๊ฒ ํฅ์์ํค๊ณ ๋ ์ด์์ ๊ณ์ฐ ์ค๋ฒํค๋๋ฅผ ์ค์ผ ์ ์์ต๋๋ค.
์ค์ ์ฌ๋ก ๋ฐ ์ฌ๋ก ์ฐ๊ตฌ
ํธ๋ ํฌ๊ธฐ ์บ์ฑ์ด ์๋นํ ์ํฅ์ ๋ฏธ์น ์ ์๋ ๋ช ๊ฐ์ง ์ค์ ์๋๋ฆฌ์ค๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค:
- ์ ์ ์๊ฑฐ๋ ์ํ ๋ชฉ๋ก: ์ ์ ์๊ฑฐ๋ ์น์ฌ์ดํธ๋ ์ข
์ข
๊ทธ๋ฆฌ๋ ๋ ์ด์์์ ์ฌ์ฉํ์ฌ ์ํ ๋ชฉ๋ก์ ํ์ํฉ๋๋ค. ์ฌ์ฉ์๊ฐ ์ํ์ ํํฐ๋งํ๊ฑฐ๋ ์ ๋ ฌํ๋ฉด ๊ทธ๋ฆฌ๋ ํญ๋ชฉ ๋ด ์ฝํ
์ธ ๊ฐ ๋ณ๊ฒฝ๋์ด ๋ ์ด์์ ์ฌ๊ณ์ฐ์ด ํธ๋ฆฌ๊ฑฐ๋ ์ ์์ต๋๋ค. ์ด๋ฏธ์ง๋ฅผ ์ต์ ํํ๊ณ , ์
๋ฐ์ดํธ๋ฅผ ์ผ๊ด ์ฒ๋ฆฌํ๊ณ ,
contain: layout์ ์ฌ์ฉํ๋ฉด ๋ ์ด์์ ์ฌ๊ณ์ฐ ํ์๋ฅผ ์ต์ํํ๊ณ ๋ ๋ถ๋๋ฌ์ด ํ์ ๊ฒฝํ์ ์ ๊ณตํ ์ ์์ต๋๋ค. ์ด์ ์ํฅ์ ์ฌ์ฉ์์ ์์น์ ๊ธฐ๊ธฐ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค. ์๋ฅผ ๋ค์ด, ์ธํฐ๋ท ์ฐ๊ฒฐ์ด ๋๋ฆฐ ์ง์ญ์ด๋ ๊ตฌํ ๊ธฐ๊ธฐ ์ฌ์ฉ์๋ ์ด๋ฌํ ์ต์ ํ๋ก๋ถํฐ ๋ ๋ง์ ์ด์ ์ ์ป์ ๊ฒ์ ๋๋ค. - ๋์ ์ฝํ ์ธ ๊ฐ ์๋ ๋ด์ค ์น์ฌ์ดํธ: ๋ด์ค ์น์ฌ์ดํธ๋ ์ค์๊ฐ์ผ๋ก ์ฝํ ์ธ ๋ฅผ ์์ฃผ ์ ๋ฐ์ดํธํฉ๋๋ค. CSS Grid๋ฅผ ์ฌ์ฉํ์ฌ ๊ธฐ์ฌ ๋ฐ ๊ด๋ จ ์ฝํ ์ธ ๋ฅผ ๋ ์ด์์ํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ ๋๋ค. ์ ๊ธฐ์ฌ๊ฐ ๋ก๋๋๊ฑฐ๋ ๊ธฐ์กด ๊ธฐ์ฌ๊ฐ ์ ๋ฐ์ดํธ๋๋ฉด ๋ ์ด์์์ ๋ค์ ๊ณ์ฐํด์ผ ํ ์ ์์ต๋๋ค. ํธ๋ ํฌ๊ธฐ ์บ์ฑ์ ํ์ด์ง๊ฐ ๋ฐ์ํ์ผ๋ก ์ ์ง๋๋๋ก ํ๋ ๋ฐ ๋์์ด ๋๋ฉฐ, ์ด๋ ๋์ ์ผ๋ก ํฌ๊ธฐ๊ฐ ๋ณ๊ฒฝ๋ ์ ์๋ ์ฌ๋ฌ ๊ด๊ณ ์ฌ๋กฏ์ ์ฒ๋ฆฌํ ๋ ํนํ ์ค์ํฉ๋๋ค.
- ๋์๋ณด๋ ์ ํ๋ฆฌ์ผ์ด์
: ๋ณต์กํ ๋์๋ณด๋ ์ ํ๋ฆฌ์ผ์ด์
์ ์ข
์ข
์ค์ฒฉ๋ ๊ทธ๋ฆฌ๋ ๋ ์ด์์์ ์ฌ์ฉํ์ฌ ๋ค์ํ ์์ ฏ๊ณผ ๋ฐ์ดํฐ ์๊ฐํ๋ฅผ ํ์ํฉ๋๋ค. ์ด๋ฌํ ๋์๋ณด๋๋ ๋ฐ์ดํฐ๋ฅผ ์์ฃผ ์
๋ฐ์ดํธํ์ฌ ๋ ์ด์์ ๋ณ๊ฒฝ์ ํธ๋ฆฌ๊ฑฐํ ์ ์์ต๋๋ค. ๋์๋ณด๋ ๋ ์ด์์์ ์ต์ ํํ๊ณ
content-visibility: auto์ ๊ฐ์ ๊ธฐ์ ์ ์ฌ์ฉํ๋ฉด ๋์๋ณด๋์ ์ฑ๋ฅ๊ณผ ๋ฐ์์ฑ์ ํฅ์์ํฌ ์ ์์ต๋๋ค. ์บ์๋ฅผ ๋ฌดํจํํ๋ ์ฝํ ์ธ ์ ๋ฐ์ดํธ ๋น๋๋ฅผ ์ค์ด๊ธฐ ์ํด ๋ฐ์ดํฐ ๋ก๋ฉ ๋ฐ ์ฒ๋ฆฌ๊ฐ ์ต์ ํ๋์๋์ง ํ์ธํ์ญ์์ค. - ๊ตญ์ ํ๋ ์น์ฌ์ดํธ: ์ฌ๋ฌ ์ธ์ด๋ฅผ ์ง์ํ๋ ์น์ฌ์ดํธ๋ ํ ์คํธ ๊ธธ์ด์ ๋ฌธ์ ๋๋น๊ฐ ๋ค๋ฅธ ๋ฌธ์ ์ ์ง๋ฉดํ ์ ์์ต๋๋ค. ๋ ์ผ์ด์ ๊ฐ์ ์ผ๋ถ ์ธ์ด๋ ๋จ์ด๊ฐ ๊ธด ๊ฒฝํฅ์ด ์์ผ๋ฉฐ, ์ผ๋ณธ์ด์ ๊ฐ์ ๋ค๋ฅธ ์ธ์ด๋ ๋ค๋ฅธ ๋๋น์ ๋ฌธ์๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด๋ฌํ ๋ณํ์ ๋ ์ด์์์ ์ํฅ์ ๋ฏธ์น๊ณ ์ฌ๊ณ์ฐ์ ํธ๋ฆฌ๊ฑฐํ ์ ์์ต๋๋ค. ๊ธ๊ผด ์ต์ ํ ๊ธฐ์ ์ ํ์ฉํ๊ณ ๋ค์ํ ์ธ์ด๊ฐ ๊ทธ๋ฆฌ๋ ๋ ์ด์์์ ๋ฏธ์น๋ ์ํฅ์ ์ ์คํ๊ฒ ๊ณ ๋ คํ๋ฉด ์บ์ ๋ฌดํจํ๋ฅผ ์ต์ํํ๊ณ ๋ค์ํ ๋ก์ผ์ผ์ ๊ฑธ์ณ ์ผ๊ด๋ ์ฌ์ฉ์ ๊ฒฝํ์ ๋ณด์ฅํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
๋ ์ด์์ ์ฑ๋ฅ ๋ถ์ ๋๊ตฌ
ํ๋ ๋ธ๋ผ์ฐ์ ๊ฐ๋ฐ์ ๋๊ตฌ๋ ๋ ์ด์์ ์ฑ๋ฅ์ ๋ถ์ํ๊ณ ์ ์ฌ์ ๋ณ๋ชฉ ํ์์ ์๋ณํ๊ธฐ ์ํ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค:
- Chrome DevTools: Chrome DevTools์ ์ฑ๋ฅ ํจ๋์ ์ฌ์ฉํ๋ฉด ๋ธ๋ผ์ฐ์ ์ ๋ ๋๋ง ํ๋ก์ธ์ค๋ฅผ ๊ธฐ๋กํ๊ณ ๋ถ์ํ ์ ์์ต๋๋ค. ๋ ์ด์์ ์ฌ๊ณ์ฐ, ์ค๋ ์คํ๋๋ ์์ ๋ฐ ๊ธฐํ ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ์๋ณํ ์ ์์ต๋๋ค. ํ์๋ผ์ธ์ "๋ ๋๋ง" ์น์ ์์ ๋ ์ด์์ ์ฌ๊ณ์ฐ์ ๋ํ๋ด๋ ํญ๋ชฉ์ ์ฐพ์ผ์ญ์์ค.
- Firefox Developer Tools: Firefox Developer Tools๋ ์ ์ฌํ ๊ธฐ๋ฅ์ ๊ฐ์ถ ์ฑ๋ฅ ํจ๋์ ์ ๊ณตํฉ๋๋ค. ๋ธ๋ผ์ฐ์ ์ฑ๋ฅ์ ํ๋กํ์ผ๋งํ๊ณ ์ต์ ํ ์์ญ์ ์๋ณํ ์ ์์ต๋๋ค.
- WebPageTest: WebPageTest๋ ๋ค๋ฅธ ์์น ๋ฐ ๊ธฐ๊ธฐ์์ ์น์ฌ์ดํธ ์ฑ๋ฅ์ ํ ์คํธํ ์ ์๋ ๋ฌด๋ฃ ์จ๋ผ์ธ ๋๊ตฌ์ ๋๋ค. ๋ ์ด์์ ์๊ฐ ๋ฐ ๋ ์ด์์ ์ฌ๊ณ์ฐ ํ์๋ฅผ ํฌํจํ ์์ธํ ์ฑ๋ฅ ๋ฉํธ๋ฆญ์ ์ ๊ณตํฉ๋๋ค. WebPageTest๋ฅผ ์ฌ์ฉํ์ฌ ๋ค๋ฅธ ๋คํธ์ํฌ ์กฐ๊ฑด ๋ฐ ๊ธฐ๊ธฐ ๊ธฐ๋ฅ์ ์๋ฎฌ๋ ์ด์ ํ์ฌ ์ ์ธ๊ณ ์ฌ์ฉ์์๊ฒ ์น์ฌ์ดํธ๊ฐ ์ด๋ป๊ฒ ์ฑ๋ฅ์ ๋ฐํํ๋์ง ์ดํดํ ์ ์์ต๋๋ค.
CSS Grid ์ฑ๋ฅ์ ๋ฏธ๋
CSS Grid ์ฌ์์ ์ง์์ ์ผ๋ก ๋ฐ์ ํ๊ณ ์์ผ๋ฉฐ, ํฅํ ๊ฐ์ ์ฌํญ์ ๋ ์ด์์ ์ฑ๋ฅ์ ๋์ฑ ํฅ์์ํฌ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค. ๊ฐ๋ฐ์ ๋ช ๊ฐ์ง ์ ์ฌ์ ์์ญ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ํฅ์๋ ์บ์ฑ ์ ๋ต: ๋ธ๋ผ์ฐ์ ๋ ๋์ ์ฝํ ์ธ ๋ฐ ๋ทฐํฌํธ ๋ณ๊ฒฝ์ ๋ ์ ์ฒ๋ฆฌํ ์ ์๋ ๋ ์ ๊ตํ ์บ์ฑ ์ ๋ต์ ๊ตฌํํ ์ ์์ต๋๋ค.
- ํ๋์จ์ด ๊ฐ์: ๋ ์ด์์ ๊ณ์ฐ์ ํ๋์จ์ด ๊ฐ์์ ํ์ฉํ๋ฉด ํนํ ์ ์ฉ ๊ทธ๋ํฝ ์ฒ๋ฆฌ ์ฅ์น(GPU)๊ฐ ์๋ ๊ธฐ๊ธฐ์์ ์ฑ๋ฅ์ด ํฌ๊ฒ ํฅ์๋ ์ ์์ต๋๋ค.
- ๋ ์ธ๋ถํ๋ ์ ์ด: CSS Grid์ ํฅํ ๋ฒ์ ์์๋ ๊ฐ๋ฐ์์๊ฒ ๋ ์ด์์ ํ๋ก์ธ์ค์ ๋ํ ๋ ์ธ๋ถํ๋ ์ ์ด๋ฅผ ์ ๊ณตํ์ฌ ํน์ ์๋๋ฆฌ์ค์ ๋ํ ์ฑ๋ฅ์ ๋ฏธ์ธ ์กฐ์ ํ ์ ์์ต๋๋ค.
๊ฒฐ๋ก
CSS Grid ํธ๋ ํฌ๊ธฐ ์บ์ฑ์ ์น ๋ ์ด์์ ์ฑ๋ฅ์ ํฅ์์ํค๋ ์ค์ํ ์ต์ ํ ๊ธฐ์ ์ ๋๋ค. ์๋ ๋ฐฉ์์ ์ดํดํ๊ณ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๋ฐ๋ฅด๋ฉด ์ ์ธ๊ณ ์ฌ์ฉ์๋ฅผ ์ํ ๋ ๋น ๋ฅด๊ณ ๋ฐ์์ฑ์ด ๋ฐ์ด๋๋ฉฐ ํจ์จ์ ์ธ ์น์ฌ์ดํธ๋ฅผ ๊ตฌ์ถํ ์ ์์ต๋๋ค. ๋ถํ์ํ ๋ ์ด์์ ๋ณ๊ฒฝ์ ์ต์ํํ๊ณ , ์ ์ ์ ์ต์ ํํ๊ณ , ๋ธ๋ผ์ฐ์ ๊ฐ๋ฐ์ ๋๊ตฌ๋ฅผ ํ์ฉํ๋ฉด ๋ค์ํ ๊ธฐ๊ธฐ ๋ฐ ๋คํธ์ํฌ ์กฐ๊ฑด์์ CSS Grid ๋ ์ด์์์ด ์ต์ ์ผ๋ก ์ฑ๋ฅ์ ๋ฐํํ๋๋ก ๋ณด์ฅํ ์ ์์ต๋๋ค. CSS Grid๊ฐ ๊ณ์ ๋ฐ์ ํจ์ ๋ฐ๋ผ ์ต์ ์ฑ๋ฅ ์ต์ ํ ๋ฐ ๋ชจ๋ฒ ์ฌ๋ก์ ๋ํ ์ ๋ณด๋ฅผ ์ ์งํ๋ ๊ฒ์ ์ ์ธ๊ณ ์ฌ์ฉ์์๊ฒ ๋ฐ์ด๋ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ๋ ๋ฐ ํ์์ ์ผ ๊ฒ์ ๋๋ค.
์ด๋ฌํ ๊ฐ๋ ์ ์์ฉํ๊ณ , ๋ค์ํ ๊ธฐ์ ์ ์คํํ๊ณ , ์น์ฌ์ดํธ ์ฑ๋ฅ์ ์ง์์ ์ผ๋ก ๋ชจ๋ํฐ๋งํ์ฌ CSS Grid์ ์ ์ฌ๋ ฅ์ ์ต๋ํ ํ์ฉํ๊ณ ์ด๋์์๋ ์ฌ์ฉ์์๊ฒ ์ํํ ๊ฒฝํ์ ์ ๊ณตํ์ญ์์ค.