CSS Grid Masonry λ μ΄μμ μ΅μ νλ₯Ό μν κ³ κΈ κΈ°μ μ νμνμ¬ μ μΈκ³ μΉμμ λΆλλ¬μ΄ λ λλ§, ν₯μλ μ±λ₯, κ°μ λ μ¬μ©μ κ²½νμ λ¬μ±νλ λ°©λ²μ μμλ΄ λλ€.
CSS Grid Masonry μ±λ₯: Masonry λ μ΄μμ λ λλ§ μ΅μ ν
λ€μν ν¬κΈ°μ μ½ν μΈ μμ΄ν μ λμ μ΄κ³ λ―Ένμ μΌλ‘ λ°°μ΄νλ κ²μ΄ νΉμ§μΈ Masonry λ μ΄μμμ νλ μΉ λμμΈμμ μ μ λ μΈκΈ°λ₯Ό μ»κ³ μμ΅λλ€. μ ν΅μ μΌλ‘ μλ°μ€ν¬λ¦½νΈ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©νμ¬ κ΅¬νλμμ§λ§, CSS Grid Masonryμ λ±μ₯μ λ λ€μ΄ν°λΈνκ³ μ μ¬μ μΌλ‘ μ±λ₯μ΄ λ°μ΄λ λμμ μ 곡νμ΅λλ€. κ·Έλ¬λ CSS Grid Masonryλ‘ μ΅μ μ μ±λ₯μ λ¬μ±νλ €λ©΄ λ λλ§ λμκ³Ό μ¬μ© κ°λ₯ν λ€μν μ΅μ ν κΈ°μ μ λν κΉμ μ΄ν΄κ° νμν©λλ€. μ΄ μ’ ν© κ°μ΄λλ CSS Grid Masonry μ±λ₯μ 볡μ‘μ±μ νκ³ λ€μ΄, μ μΈκ³μ μΌλ‘ λΆλλ¬μ΄ λ λλ§, ν₯μλ μ¬μ©μ κ²½ν, ν¨μ¨μ μΈ λ¦¬μμ€ νμ©μ 보μ₯νκΈ° μν μ€μ©μ μΈ μ λ΅μ μ 곡ν©λλ€.
CSS Grid Masonryμ κ·Έ μ±λ₯ κ³Όμ μ΄ν΄νκΈ°
grid-template-rows: masonry μμ±μΌλ‘ νμ±νλλ CSS Grid Masonryλ λΈλΌμ°μ κ° κ·Έλ¦¬λ μμ΄ν
μ μλμΌλ‘ μ΄μ λ°°μ΄νκ³ , κ° μ΄μ΄ μ΅λ λμ΄μ λλ¬ν λκΉμ§ μ±μ΄ ν λ€μ μ΄λ‘ μ΄λνλλ‘ ν©λλ€. μ΄λ λμ΄κ° λ€λ₯Έ μμ΄ν
λ€μ΄ λ§€λλ½κ² μ΄μ°λ¬μ§λ μκ°μ μΌλ‘ λ§€λ ₯μ μΈ λ μ΄μμμ λ§λλλ€. κ·Έλ¬λ μ΄λ¬ν λμ λ°°μ΄μ νΉν λκ·λͺ¨ λ°μ΄ν°μ
μ΄λ 볡μ‘ν μμ΄ν
ꡬ쑰μμ μ±λ₯ λ¬Έμ λ₯Ό μΌκΈ°ν μ μμ΅λλ€.
CSS Grid Masonryμ λ λλ§ λ³λͺ© νμ
μ¬λ¬ μμΈμ΄ CSS Grid Masonry λ μ΄μμμ μ±λ₯ λ³λͺ© νμμ κΈ°μ¬ν μ μμ΅λλ€:
- λ μ΄μμ μ€λμ±(Layout Thrashing): μμ μμΉμ ν¬κΈ°μ μ¦μ μ¬κ³μ°μ λ μ΄μμ μ€λμ±μΌλ‘ μ΄μ΄μ§ μ μμΌλ©°, μ΄λ‘ μΈν΄ λΈλΌμ°μ λ λ μ΄μμμ 리νλ‘μ°νλ λ° κ³Όλν μκ°μ μλΉνκ² λ©λλ€.
- 리νμΈνΈ(Repaint) λ° λ¦¬νλ‘μ°(Reflow): DOM λλ CSS μ€νμΌμ λ³κ²½μ κ³μ° λΉμ©μ΄ λ§μ΄ λλ μμ μΈ λ¦¬νμΈνΈ(μμ λ€μ 그리기)μ 리νλ‘μ°(λ μ΄μμ μ¬κ³μ°)λ₯Ό μ λ°ν μ μμ΅λλ€.
- μ΄λ―Έμ§ λ‘λ©: ν¬κ³ μ΅μ νλμ§ μμ μ΄λ―Έμ§λ νΉν μ΄κΈ° νμ΄μ§ λ‘λ μ€μ λ λλ§ μ±λ₯μ μλΉν μν₯μ λ―ΈμΉ μ μμ΅λλ€.
- 볡μ‘ν μμ΄ν ꡬ쑰: κΉκ² μ€μ²©λ μμλ 볡μ‘ν CSS μ€νμΌμ κ°μ§ μμ΄ν μ κ° μμ΄ν μ λ λλ§ μκ°μ μ¦κ°μμΌ μ 체 λ μ΄μμ μ±λ₯μ μν₯μ μ€ μ μμ΅λλ€.
- λΈλΌμ°μ λ³ λ λλ§ μ°¨μ΄: λΈλΌμ°μ λ§λ€ CSS Grid Masonryλ₯Ό ꡬννλ μ΅μ ν μμ€μ΄ λ€λ₯Ό μ μμ΄ νλ«νΌ κ° μ±λ₯μ΄ μΌκ΄λμ§ μμ μ μμ΅λλ€.
CSS Grid Masonry μ±λ₯ μ΅μ ν μ λ΅
μ΄λ¬ν μ±λ₯ λ¬Έμ λ₯Ό μννκ³ λΆλλ½κ³ λ°μμ±μ΄ λ°μ΄λ CSS Grid Masonry λ μ΄μμμ λ§λ€λ €λ©΄ λ€μ μ΅μ ν μ λ΅μ ꡬννλ κ²μ κ³ λ €νμμμ€:
1. 리νλ‘μ°μ 리νμΈνΈ μ΅μν
CSS Grid Masonry μ±λ₯ μ΅μ νμ ν΅μ¬μ λ μ΄μμ λ³κ²½μΌλ‘ μΈν΄ λ°μνλ 리νλ‘μ°μ 리νμΈνΈμ μλ₯Ό μ΅μννλ κ²μ λλ€. μ΄λ₯Ό λ¬μ±νκΈ° μν λͺ κ°μ§ κΈ°μ μ λ€μκ³Ό κ°μ΅λλ€:
- κ°μ λκΈ°μ λ μ΄μμ νΌνκΈ°: DOMμ μμ ν μ§νμ λ μ΄μμ μμ±(μ:
offsetWidth,offsetHeight)μ μ κ·Όνλ©΄ λΈλΌμ°μ κ° λκΈ°μ λ μ΄μμμ κ°μ λ‘ μννκ² λμ΄ λ μ΄μμ μ€λμ±μ μ λ°ν μ μμ΅λλ€. λ³κ²½νκΈ° μ μ λ μ΄μμ μμ±μ μ½κ±°λ requestAnimationFrameκ³Ό κ°μ κΈ°μ μ μ¬μ©νμ¬ μ λ°μ΄νΈλ₯Ό μΌκ΄ μ²λ¦¬ν¨μΌλ‘μ¨ μ΄λ₯Ό νΌνμμμ€. - DOM μ λ°μ΄νΈ μΌκ΄ μ²λ¦¬: DOMμ κ°λ³μ μΈ λ³κ²½μ νλ λμ , ν¨κ» λ¬Άμ΄μ λ¨μΌ μμ μΌλ‘ μ μ©νμμμ€. μ΄λ μ¬λ¬ μ λ°μ΄νΈλ‘ μΈν΄ λ°μνλ 리νλ‘μ°μ μλ₯Ό μ€μ¬μ€λλ€.
- μ λλ©μ΄μ
μ CSS λ³ν(Transforms) μ¬μ©: Masonry λ μ΄μμ λ΄μμ μμλ₯Ό μ λλ©μ΄μ
νν λ, 리νλ‘μ°λ₯Ό μ λ°νλ μμ±(μ:
width,height,margin) λμ CSS λ³ν(μ:translate,rotate,scale)μ μ¬μ©νλ κ²μ μ νΈνμμμ€. λ³νμ μΌλ°μ μΌλ‘ GPUμ μν΄ μ²λ¦¬λλ―λ‘ λ λΆλλ¬μ΄ μ λλ©μ΄μ μ λ§λλλ€. - CSS μ νμ μ΅μ ν: 볡μ‘ν CSS μ νμλ λ λλ§ μλλ₯Ό μ νμν¬ μ μμ΅λλ€. ꡬ체μ μ΄κ³ ν¨μ¨μ μΈ μ νμλ₯Ό μ¬μ©νμ¬ λΈλΌμ°μ κ° μμλ₯Ό μ€νμΌμ λ§μΆλ λ° μλΉνλ μκ°μ μ΅μννμμμ€. μλ₯Ό λ€μ΄, κΉκ² μ€μ²©λ μ νμλ³΄λ€ ν΄λμ€ μ΄λ¦μ μ νΈνμμμ€.
2. μ΄λ―Έμ§ μ΅μ ν
μ΄λ―Έμ§λ μ’ μ’ μΉ νμ΄μ§μμ κ°μ₯ ν° μμ°μ΄λ―λ‘, μ΄λ₯Ό μ΅μ ννλ κ²μ CSS Grid Masonry μ±λ₯ ν₯μμ λ§€μ° μ€μν©λλ€:
- μ΅μ νλ μ΄λ―Έμ§ νμ μ¬μ©: κ° μ΄λ―Έμ§μ μ ν©ν μ΄λ―Έμ§ νμμ μ ννμμμ€. JPEGλ μ¬μ§μ μ ν©νλ©°, PNGλ λ μΉ΄λ‘μ΄ μ κ³Ό ν μ€νΈκ° μλ κ·Έλν½μ λ μ’μ΅λλ€. WebPλ JPEG λ° PNGμ λΉν΄ μ°μν μμΆλ₯ κ³Ό νμ§μ μ 곡ν©λλ€.
- μ΄λ―Έμ§ μμΆ: νμ§μ λ무 λ§μ΄ ν¬μνμ§ μμΌλ©΄μ νμΌ ν¬κΈ°λ₯Ό μ€μ΄κΈ° μν΄ μ΄λ―Έμ§λ₯Ό μμΆνμμμ€. ImageOptim, TinyPNGμ κ°μ λꡬ λ° μ¨λΌμΈ μ΄λ―Έμ§ μμΆκΈ°κ° λμμ΄ λ μ μμ΅λλ€.
- μ΄λ―Έμ§ ν¬κΈ° μ‘°μ : λμ€νλ μ΄μ λ§λ μ¬λ°λ₯Έ ν¬κΈ°λ‘ μ΄λ―Έμ§λ₯Ό μ 곡νμμμ€. λΈλΌμ°μ μ μν΄ μΆμλλ ν° μ΄λ―Έμ§λ₯Ό μ 곡νλ κ²μ νΌνμμμ€. λ°μν μ΄λ―Έμ§(
srcsetμμ±)λ₯Ό μ¬μ©νμ¬ λ€μν νλ©΄ ν΄μλμ λ§λ λ€λ₯Έ μ΄λ―Έμ§ ν¬κΈ°λ₯Ό μ 곡νμμμ€. - μ΄λ―Έμ§ μ§μ° λ‘λ©(Lazy Loading): λ·°ν¬νΈμ λ³΄μΌ λλ§ μ΄λ―Έμ§λ₯Ό λ‘λνμμμ€. μ΄λ μ΄κΈ° νμ΄μ§ λ‘λ μκ°μ ν¬κ² κ°μ νκ³ μ μ‘λλ λ°μ΄ν° μμ μ€μΌ μ μμ΅λλ€. μ§μ° λ‘λ©μ μν΄
loading="lazy"μμ±μ΄λ μλ°μ€ν¬λ¦½νΈ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©νμμμ€. - μ½ν μΈ μ μ‘ λ€νΈμν¬(CDN) μ¬μ©: CDNμ μ΄λ―Έμ§λ₯Ό μ μΈκ³ μ¬λ¬ μλ²μ λΆμ°μμΌ μ¬μ©μκ° μμ μ μμΉμμ κ°μ₯ κ°κΉμ΄ μλ²μμ μ΄λ―Έμ§λ₯Ό λ€μ΄λ‘λν μ μλλ‘ ν©λλ€. μ΄λ λκΈ° μκ°μ μ€μ΄κ³ λ€μ΄λ‘λ μλλ₯Ό ν₯μμν΅λλ€.
3. κ°μν λ° μλμ
λκ·λͺ¨ λ°μ΄ν°μ μ κ²½μ°, Masonry λ μ΄μμμ λͺ¨λ μμ΄ν μ ν λ²μ λ λλ§νλ κ²μ κ·Ήλλ‘ λΉν¨μ¨μ μΌ μ μμ΅λλ€. κ°μν(μλμμ΄λΌκ³ λ ν¨)λ νμ¬ λ·°ν¬νΈμ 보μ΄λ μμ΄ν λ§ λ λλ§νλ κΈ°μ μ λλ€. μ¬μ©μκ° μ€ν¬λ‘€νλ©΄ μ μμ΄ν μ΄ λ λλ§λκ³ μ΄μ μμ΄ν μ DOMμμ μ κ±°λ©λλ€.
- κ°μν ꡬν: μλ°μ€ν¬λ¦½νΈ λΌμ΄λΈλ¬λ¦¬λ μ¬μ©μ μ μ μ½λλ₯Ό μ¬μ©νμ¬ CSS Grid Masonry λ μ΄μμμ κ°μνλ₯Ό ꡬννμμμ€. μΌλ°μ μΈ λΌμ΄λΈλ¬λ¦¬μλ React Virtualized, react-window λ° λ€λ₯Έ νλ μμν¬λ₯Ό μν μ μ¬ν μ루μ μ΄ ν¬ν¨λ©λλ€.
- μμ΄ν λμ΄ κ³μ°: κ°μνλ λ μ΄μμμμ μμ΄ν μ μ ννκ² λ°°μΉνλ €λ©΄ λμ΄λ₯Ό μμμΌ ν©λλ€. μμ΄ν λμ΄κ° λμ (μ: μ½ν μΈ κΈ°λ°)μΈ κ²½μ°, λμ΄λ₯Ό μΆμ νκ±°λ μν μμ΄ν μ λμ΄λ₯Ό μΈ‘μ νλ κ²κ³Ό κ°μ κΈ°μ μ μ¬μ©ν΄μΌ ν μ μμ΅λλ€.
- μ€ν¬λ‘€ μ΄λ²€νΈ ν¨μ¨μ μΌλ‘ μ²λ¦¬: κ³Όλν μ¬κ³μ°μ νΌνκΈ° μν΄ μ€ν¬λ‘€ μ΄λ²€νΈ νΈλ€λ¬λ₯Ό μ΅μ ννμμμ€. λλ°μ΄μ±μ΄λ μ€λ‘νλ§κ³Ό κ°μ κΈ°μ μ μ¬μ©νμ¬ νΈλ€λ¬κ° μ€νλλ νμλ₯Ό μ ννμμμ€.
4. λλ°μ΄μ±κ³Ό μ€λ‘νλ§
λλ°μ΄μ±κ³Ό μ€λ‘νλ§μ ν¨μκ° μ€νλλ λΉλλ₯Ό μ ννλ λ° μ¬μ©λλ κΈ°μ μ λλ€. μ΄λ μ€ν¬λ‘€ μ΄λ²€νΈλ 리μ¬μ΄μ¦ μ΄λ²€νΈμ κ°μ΄ μμ£Ό λ°μνλ μ΄λ²€νΈλ₯Ό μ²λ¦¬νλ λ° μ μ©ν μ μμ΅λλ€.
- λλ°μ΄μ±(Debouncing): λλ°μ΄μ±μ ν¨μκ° λ§μ§λ§μΌλ‘ νΈμΆλ ν μΌμ μκ°μ΄ κ²½κ³Όν λκΉμ§ ν¨μ μ€νμ μ§μ°μν΅λλ€. μ΄λ μ¬μ©μκ° λ°λ³΅μ μΌλ‘ μμ μ μνν λ ν¨μκ° λ무 μμ£Ό νΈμΆλλ κ²μ λ°©μ§νλ λ° μ μ©ν©λλ€.
- μ€λ‘νλ§(Throttling): μ€λ‘νλ§μ ν¨μκ° νΈμΆλ μ μλ λΉλλ₯Ό μ νν©λλ€. μ΄λ ν¨μκ° μ΄λΉ νΉμ νμ μ΄μ νΈμΆλμ§ μλλ‘ νλ λ° μ μ©ν©λλ€.
5. CSS 그리λ μμ± μ΅μ ν
CSS Grid Masonryκ° λ μ΄μμμ λ¨μννμ§λ§, μ¬λ°λ₯Έ μμ±κ³Ό κ°μ μ ννλ κ²μ΄ μ±λ₯μ μν₯μ μ€ μ μμ΅λλ€:
grid-auto-rows: minmax(auto, max-content)μ¬μ©: μ΄λ νμ΄ μ½ν μΈ μ λ§κ² νμ₯λμ§λ§, μ½ν μΈ κ° μ§μ λ μ΅μ λμ΄λ³΄λ€ μμ κ²½μ° μΆμλμ§ μλλ‘ λ³΄μ₯ν©λλ€.- μ§λμΉκ² 볡μ‘ν 그리λ ꡬ쑰 νΌνκΈ°: μΌλ°μ μΌλ‘ λ λ¨μν 그리λ κ΅¬μ‘°κ° λ 빨리 λ λλ§λ©λλ€. κ°λ₯νλ€λ©΄ νκ³Ό μ΄μ μλ₯Ό μ€μ΄μμμ€.
- νλ‘νμΌλ§ λ° μ€ν: λΈλΌμ°μ κ°λ°μ λꡬ(μ: Chrome DevTools, Firefox Developer Tools)λ₯Ό μ¬μ©νμ¬ CSS Grid Masonry λ μ΄μμμ λ λλ§ μ±λ₯μ νλ‘νμΌλ§νμμμ€. λ€μν CSS μμ±κ³Ό κ°μ μ€ννμ¬ μ±λ₯ λ³λͺ© νμμ μλ³νκ³ κ·Έμ λ°λΌ μ΅μ ννμμμ€.
6. νλμ¨μ΄ κ°μ
νλμ¨μ΄ κ°μμ νμ©νλ©΄ νΉν μ λλ©μ΄μ λ° λ³νμ λν λ λλ§ μ±λ₯μ ν¬κ² ν₯μμν¬ μ μμ΅λλ€. λΈλΌμ°μ λ GPUλ₯Ό μ¬μ©νμ¬ μ΄λ¬ν μμ μ μ²λ¦¬ν¨μΌλ‘μ¨ CPUκ° λ€λ₯Έ μμ μ μνν μ μλλ‘ ν΄μ€λλ€.
will-changeμμ± μ¬μ©:will-changeμμ±μ λΈλΌμ°μ μ μμκ° λ―Έλμ μ λλ©μ΄μ λκ±°λ λ³νλ κ²μμ μλ €μ€λλ€. μ΄λ₯Ό ν΅ν΄ λΈλΌμ°μ λ μ΄λ¬ν μμ μ μν΄ μμλ₯Ό μ΅μ ννμ¬ μ μ¬μ μΌλ‘ νλμ¨μ΄ κ°μμ νμ±νν μ μμ΅λλ€. λ¨μ©νλ©΄ μ±λ₯μ λΆμ μ μΈ μν₯μ λ―ΈμΉ μ μμΌλ―λ‘ μ μ€νκ² κ·Έλ¦¬κ³ νμν λλ§ μ¬μ©νμμμ€.- νλμ¨μ΄ κ°μ κ°μ (μ£Όμ νμ):
transform: translateZ(0)λλbackface-visibility: hiddenκ³Ό κ°μ μμ±μ μ μ©νλ©΄ λλλ‘ νλμ¨μ΄ κ°μμ κ°μ ν μ μμ§λ§, μ΄λ μλνμ§ μμ λΆμμ©μ μΌμΌν¬ μ μμΌλ―λ‘ λλ¬Όκ² κ·Έλ¦¬κ³ μ² μ ν ν μ€νΈλ₯Ό κ±°μ³ μ¬μ©ν΄μΌ ν©λλ€.
7. λΈλΌμ°μ λ³ κ³ λ € μ¬ν
λΈλΌμ°μ λ§λ€ CSS Grid Masonryλ₯Ό ꡬννλ μ΅μ ν μμ€μ΄ λ€λ₯Ό μ μμ΅λλ€. μΌκ΄λ μ±λ₯μ 보μ₯νκΈ° μν΄ λ€μν λΈλΌμ°μ μ μ₯μΉμμ λ μ΄μμμ ν μ€νΈνλ κ²μ΄ μ€μν©λλ€.
- λ²€λ ν리ν½μ€ μ¬μ© (νμμ): CSS Grid Masonryκ° λ리 μ§μλμ§λ§, ꡬν λΈλΌμ°μ μμλ νΉμ μμ±μ λν΄ λ²€λ ν리ν½μ€(μ:
-webkit-)κ° νμν μ μμ΅λλ€. Autoprefixerμ κ°μ λꡬλ₯Ό μ¬μ©νμ¬ νμμ λ°λΌ λ²€λ ν리ν½μ€λ₯Ό μλμΌλ‘ μΆκ°νμμμ€. - λ€λ₯Έ μ₯μΉμμ ν μ€νΈ: μ±λ₯μ νΉν μ²λ¦¬ λ₯λ ₯μ΄ μ νλ λͺ¨λ°μΌ μ₯μΉμ κ°μ΄ μ₯μΉλ§λ€ ν¬κ² λ€λ₯Ό μ μμ΅λλ€. λ€μν μ₯μΉμμ λ μ΄μμμ ν μ€νΈνμ¬ μ±λ₯ λ³λͺ© νμμ μλ³νμμμ€.
- λΈλΌμ°μ μ λ°μ΄νΈ λͺ¨λν°λ§: λΈλΌμ°μ 곡κΈμ 체λ λ λλ§ μμ§μ μ±λ₯μ μ§μμ μΌλ‘ κ°μ νκ³ μμ΅λλ€. μ΄λ¬ν κ°μ μ¬νμ νμ©νλ €λ©΄ μ΅μ λΈλΌμ°μ μ λ°μ΄νΈλ₯Ό μ΅μ μνλ‘ μ μ§νμμμ€.
8. μ κ·Όμ± κ³ λ € μ¬ν
μ±λ₯μ μ΅μ ννλ λμ μ κ·Όμ±μ μ μ§νλ κ²μ μμ§ λ§μμμ€. λͺ¨λ μ¬λμ΄ μ¬μ©ν μ μλ λΉ λ₯Έ λ μ΄μμμ μ±κ³΅μ΄ μλλλ€.
- μλ§¨ν± HTML: μλ§¨ν± HTML μμλ₯Ό μ¬μ©νμ¬ μ½ν μΈ μ λͺ νν ꡬ쑰λ₯Ό μ 곡νμμμ€. μ΄λ 보쑰 κΈ°μ μ΄ μ½ν μΈ λ₯Ό μ΄ν΄νκ³ λ λμ μ¬μ©μ κ²½νμ μ 곡νλ λ° λμμ΄ λ©λλ€.
- ν€λ³΄λ νμ: λͺ¨λ μνΈμμ© μμκ° ν€λ³΄λ νμμ ν΅ν΄ μ κ·Ό κ°λ₯νμ§ νμΈνμμμ€.
- ARIA μμ±: ARIA μμ±μ μ¬μ©νμ¬ μμμ μν , μν λ° μμ±μ λν μΆκ° μ 보λ₯Ό 보쑰 κΈ°μ μ μ 곡νμμμ€.
- μΆ©λΆν λλΉ: μκ° μ₯μ κ° μλ μ¬μ©μκ° μ½ν μΈ λ₯Ό μ½μ μ μλλ‘ ν μ€νΈμ λ°°κ²½μ κ°μ μΆ©λΆν λλΉκ° μλμ§ νμΈνμμμ€.
μ€μ μμ λ° μ¬λ‘ μ°κ΅¬
μ΄λ¬ν μ΅μ ν κΈ°μ μ΄ μ€μ λ‘ μ΄λ»κ² μ μ©λ μ μλμ§ λ³΄μ¬μ£ΌκΈ° μν΄ λͺ κ°μ§ μ€μ μμ μ μ¬λ‘ μ°κ΅¬λ₯Ό μ΄ν΄λ³΄κ² μ΅λλ€.
μμ 1: μ μμκ±°λ μν κ°€λ¬λ¦¬
ν μ μμκ±°λ μΉμ¬μ΄νΈλ μκ°μ μΌλ‘ λ§€λ ₯μ μΈ κ°€λ¬λ¦¬μ μν μ΄λ―Έμ§λ₯Ό νμνκΈ° μν΄ CSS Grid Masonry λ μ΄μμμ μ¬μ©ν©λλ€. μ±λ₯μ μ΅μ ννκΈ° μν΄ λ€μμ μννμ΅λλ€:
- TinyPNGλ‘ μμΆλ WebP μ΄λ―Έμ§λ₯Ό μ¬μ©ν©λλ€.
- μ€ν¬λ‘€ μλμ μλ μ΄λ―Έμ§μ λν΄ μ§μ° λ‘λ©μ ꡬνν©λλ€.
- μ μΈκ³μ μΌλ‘ μ΄λ―Έμ§λ₯Ό μ 곡νκΈ° μν΄ CDNμ μ¬μ©ν©λλ€.
- μ°½ ν¬κΈ°κ° μ‘°μ λ λ κ³Όλν λ μ΄μμ μ¬κ³μ°μ νΌνκΈ° μν΄ λ¦¬μ¬μ΄μ¦ μ΄λ²€νΈ νΈλ€λ¬λ₯Ό λλ°μ΄μ±ν©λλ€.
μμ 2: λ΄μ€ μΉμ¬μ΄νΈ κΈ°μ¬ λͺ©λ‘
ν λ΄μ€ μΉμ¬μ΄νΈλ κΈ°μ¬ λ―Έλ¦¬λ³΄κΈ°λ₯Ό νμνκΈ° μν΄ CSS Grid Masonry λ μ΄μμμ μ¬μ©ν©λλ€. μ±λ₯μ μ΅μ ννκΈ° μν΄ λ€μμ μννμ΅λλ€:
srcsetμμ±μ μ¬μ©νμ¬ λ°μν μ΄λ―Έμ§λ₯Ό μ¬μ©ν©λλ€.- νμ¬ λ·°ν¬νΈμ 보μ΄λ κΈ°μ¬λ§ λ λλ§νκΈ° μν΄ κ°μνλ₯Ό ꡬνν©λλ€.
- κΈ°μ¬ λ―Έλ¦¬λ³΄κΈ°μ λ§μ°μ€λ₯Ό μ¬λ Έμ λ μ λλ©μ΄μ
λ κ²μμ λΈλΌμ°μ μ μ리기 μν΄
will-changeμμ±μ μ¬μ©ν©λλ€. - μΌκ΄λ μ±λ₯μ 보μ₯νκΈ° μν΄ λ€μν μ₯μΉμμ λ μ΄μμμ ν μ€νΈν©λλ€.
μ±λ₯ μ΅μ νλ₯Ό μν λꡬ λ° λ¦¬μμ€
λͺ κ°μ§ λꡬμ 리μμ€κ° CSS Grid Masonry λ μ΄μμμ μ±λ₯μ μ΅μ ννλ λ° λμμ΄ λ μ μμ΅λλ€:
- λΈλΌμ°μ κ°λ°μ λꡬ: Chrome DevToolsμ Firefox Developer Toolsλ μ±λ₯ λ³λͺ© νμμ μλ³νκΈ° μν κ°λ ₯ν νλ‘νμΌλ§ λꡬλ₯Ό μ 곡ν©λλ€.
- WebPageTest: WebPageTestλ μ μΈκ³ μ¬λ¬ μμΉμμ μΉμ¬μ΄νΈ μ±λ₯μ ν μ€νΈν μ μλ λ¬΄λ£ μ¨λΌμΈ λꡬμ λλ€.
- Google PageSpeed Insights: Google PageSpeed Insightsλ μΉμ¬μ΄νΈ μ±λ₯ κ°μ μ μν κΆμ₯ μ¬νμ μ 곡ν©λλ€.
- Lighthouse: Lighthouseλ μΉ νμ΄μ§μ νμ§μ κ°μ νκΈ° μν μ€ν μμ€ μλν λꡬμ λλ€. μ±λ₯, μ κ·Όμ±, νλ‘κ·Έλ μλΈ μΉ μ±, SEO λ±μ λν κ°μ¬λ₯Ό μ 곡ν©λλ€. Chrome DevTools, λͺ λ Ήμ€ λλ Node λͺ¨λλ‘ μ€νν μ μμ΅λλ€.
- CSS μΆμκΈ° λ° μ΅μ ν λꡬ: CSSNano λ° PurgeCSSμ κ°μ λꡬλ CSS μ½λλ₯Ό μΆμνκ³ μ΅μ ννλ λ° λμμ΄ λ μ μμ΅λλ€.
- μ΄λ―Έμ§ μ΅μ ν λꡬ: ImageOptim, TinyPNGμ κ°μ λꡬ λ° μ¨λΌμΈ μ΄λ―Έμ§ μμΆκΈ°λ μ΄λ―Έμ§λ₯Ό μμΆνκ³ μ΅μ ννλ λ° λμμ΄ λ μ μμ΅λλ€.
κ²°λ‘
CSS Grid Masonry μ±λ₯ μ΅μ νλ λΆλλ½κ³ λ°μμ±μ΄ λ°μ΄λλ©° λ§€λ ₯μ μΈ μ¬μ©μ κ²½νμ λ§λλ λ° νμμ μ λλ€. CSS Grid Masonryμ λ λλ§ λμμ μ΄ν΄νκ³ μ΄ κ°μ΄λμμ λ Όμλ μ΅μ ν κΈ°μ μ ꡬνν¨μΌλ‘μ¨ λ μ΄μμ μ±λ₯μ ν¬κ² ν₯μμν€κ³ μ μΈκ³ μ¬μ©μμκ² λ λμ κ²½νμ μ 곡ν μ μμ΅λλ€. μ΄λ―Έμ§ μ΅μ ν, 리νλ‘μ° λ° λ¦¬νμΈνΈ μ΅μν, λκ·λͺ¨ λ°μ΄ν°μ μ λν κ°μν νμ©, λ€μν λΈλΌμ°μ λ° μ₯μΉμμμ λ μ΄μμ ν μ€νΈλ₯Ό μ°μ μνλ κ²μ κΈ°μ΅νμμμ€. μ§μμ μΈ λͺ¨λν°λ§κ³Ό νλ‘νμΌλ§μ μκ°μ΄ μ§λ¨μ λ°λΌ μ±λ₯ λ³λͺ© νμμ μλ³νκ³ ν΄κ²°νλ μ΄μ μ λλ€.
μ΄λ¬ν λͺ¨λ² μ¬λ‘λ₯Ό μ±νν¨μΌλ‘μ¨ κ°λ°μμ λμμ΄λλ CSS Grid Masonryμ νμ νμ©νμ¬ μ μΈκ³ μ¬μ©μλ₯Ό κΈ°μκ² νλ μκ°μ μΌλ‘ λ°μ΄λκ³ μ±λ₯μ΄ μ°μν μΉ λ μ΄μμμ λ§λ€ μ μμ΅λλ€.