CSS 그리λ λ©μ΄μ¨λ¦¬μ μ±λ₯ μν₯μ μ¬μΈ΅ λΆμνκ³ , ν¨μ¨μ μΈ λ©μ΄μ¨λ¦¬ λμμΈμ μν λ μ΄μμ μ²λ¦¬ μ€λ²ν€λμ μ΅μ ν κΈ°λ²μ μ΄ν΄λ΄ λλ€.
CSS 그리λ λ©μ΄μ¨λ¦¬ μ±λ₯ μν₯: λ©μ΄μ¨λ¦¬ λ μ΄μμ μ²λ¦¬ μ€λ²ν€λ
CSS 그리λ λ©μ΄μ¨λ¦¬λ κ°λ°μκ° μλ°μ€ν¬λ¦½νΈ λΌμ΄λΈλ¬λ¦¬μ μμ‘΄νμ§ μκ³ CSSμμ μ§μ λμ μΈ νν°λ μ€νΈ μ€νμΌμ λ μ΄μμμ λ§λ€ μ μκ² ν΄μ£Όλ κ°λ ₯ν λ μ΄μμ λꡬμ λλ€. νμ§λ§ λ€λ₯Έ κ³ κΈ CSS κΈ°λ₯κ³Ό λ§μ°¬κ°μ§λ‘, ν¨μ¨μ μ΄κ³ λ°μνμΈ μΉ μ ν리μΌμ΄μ μ ꡬμΆνκΈ° μν΄μλ μ±λ₯μ λ―ΈμΉλ μν₯μ μ΄ν΄νλ κ²μ΄ μ€μν©λλ€. μ΄ κΈμμλ CSS 그리λ λ©μ΄μ¨λ¦¬μ κ΄λ ¨λ λ μ΄μμ μ²λ¦¬ μ€λ²ν€λλ₯Ό μ¬μΈ΅μ μΌλ‘ λΆμνκ³ , λΈλΌμ°μ λ λλ§μ λ―ΈμΉλ μν₯κ³Ό μ€μ©μ μΈ μ΅μ ν κΈ°λ²μ μ μν©λλ€.
CSS 그리λ λ©μ΄μ¨λ¦¬ μ΄ν΄νκΈ°
μ±λ₯ κ³ λ € μ¬νμ μ΄ν΄λ³΄κΈ° μ μ CSS 그리λ λ©μ΄μ¨λ¦¬κ° 무μμ΄κ³ μ΄λ»κ² μλνλμ§ κ°λ¨ν μμ½ν΄ λ³΄κ² μ΅λλ€.
CSS 그리λ λ©μ΄μ¨λ¦¬(grid-template-rows: masonry)λ CSS 그리λ λ μ΄μμμ κΈ°λ₯μ νμ₯νμ¬, μ¬μ© κ°λ₯ν 곡κ°μ λ°λΌ 그리λ νΈλ λ΄μμ μμ΄ν
λ€μ΄ μμ§μΌλ‘ νλ₯΄λλ‘ ν©λλ€. μ΄λ₯Ό ν΅ν΄ λμ΄κ° λ€μν μμ΄ν
λ€μ΄ λΉνμ μ±μ°λ©° μκ°μ μΌλ‘ λ§€λ ₯μ μΈ λ°°μ΄μ λ§λ€μ΄, κ³ μ μ μΈ λ©μ΄μ¨λ¦¬ λ μ΄μμ ν¨κ³Όλ₯Ό λͺ¨λ°©ν©λλ€.
μ ν΅μ μΈ μλ°μ€ν¬λ¦½νΈ κΈ°λ° λ©μ΄μ¨λ¦¬ μ루μ κ³Ό λ¬λ¦¬, CSS 그리λ λ©μ΄μ¨λ¦¬λ λΈλΌμ°μ μ λ λλ§ μμ§μ μν΄ λ€μ΄ν°λΈλ‘ μ²λ¦¬λ©λλ€. μ΄λ λ μ΄μμ κ³μ°μ λΈλΌμ°μ μ μ΅μ νλ μκ³ λ¦¬μ¦μ μ€νλ‘λνμ¬ μ μ¬μ μΈ μ±λ₯ μ΄μ μ μ 곡ν©λλ€. νμ§λ§ μ΄λ¬ν κ³μ°μ 볡μ‘μ±μ νΉν λμ©λ λ°μ΄ν° μΈνΈλ 볡μ‘ν 그리λ ꡬμ±μμ μ¬μ ν μ±λ₯ μ€λ²ν€λλ₯Ό μ λ°ν μ μμ΅λλ€.
λ μ΄μμ μ²λ¦¬ μ€λ²ν€λ
CSS 그리λ λ©μ΄μ¨λ¦¬μ μ£Όμ μ±λ₯ μ°λ €λ λ μ΄μμ μ²λ¦¬ μ€λ²ν€λλ₯Ό μ€μ¬μΌλ‘ ν©λλ€. λΈλΌμ°μ λ λΉ κ³΅κ°μ μ΅μννκ³ μκ°μ μΌλ‘ κ· ν μ‘ν λ μ΄μμμ λ§λ€κΈ° μν΄ κ° κ·Έλ¦¬λ μμ΄ν μ μ΅μ μμΉλ₯Ό κ³μ°ν΄μΌ ν©λλ€. μ΄ κ³Όμ μλ λ€μμ΄ ν¬ν¨λ©λλ€:
- μ΄κΈ° λ μ΄μμ κ³μ°: νμ΄μ§κ° μ²μ λ‘λλ λ, λΈλΌμ°μ λ μμ΄ν μ μ½ν μΈ μ 그리λμ μ μλ ꡬ쑰λ₯Ό κΈ°λ°μΌλ‘ λͺ¨λ 그리λ μμ΄ν μ μ΄κΈ° λ°°μΉλ₯Ό κ²°μ ν©λλ€.
- 리νλ‘μ° λ° λ¦¬νμΈνΈ: 그리λ μμ΄ν μ μ½ν μΈ κ° λ³κ²½λκ±°λ(μ: μ΄λ―Έμ§ λ‘λ, ν μ€νΈ μΆκ°) 그리λ 컨ν μ΄λμ ν¬κΈ°κ° λ³κ²½λ λ(μ: λΈλΌμ°μ μ°½ ν¬κΈ° μ‘°μ ), λΈλΌμ°μ λ λ μ΄μμμ λ€μ κ³μ°ν΄μΌ νλ©°, μ΄λ 리νλ‘μ°(μμ μμΉ λ° ν¬κΈ° μ¬κ³μ°)μ 리νμΈνΈ(μν₯λ°λ μμ λ€μ 그리기)λ₯Ό μ λ°ν©λλ€.
- μ€ν¬λ‘€ μ±λ₯: μ¬μ©μκ° νμ΄μ§λ₯Ό μ€ν¬λ‘€ν λ, λΈλΌμ°μ λ λ·°ν¬νΈμ λ€μ΄μ€κ±°λ λκ°λ μμ΄ν μ λ μ΄μμμ λ€μ κ³μ°ν΄μΌ ν μ μμΌλ©°, μ΄λ μ€ν¬λ‘€ λΆλλ¬μμ μν₯μ λ―ΈμΉ μ μμ΅λλ€.
μ΄λ¬ν κ³μ°μ 볡μ‘μ±μ μ¬λ¬ μμΈμ λ°λΌ λ¬λΌμ§λλ€:
- 그리λ μμ΄ν μ: 그리λμ μμ΄ν μ΄ λ§μμλ‘ λΈλΌμ°μ κ° μνν΄μΌ νλ κ³μ°μ΄ λ§μμ§λλ€.
- μμ΄ν λμ΄ κ°λ³μ±: μμ΄ν λμ΄μ νΈμ°¨κ° ν¬λ©΄ κ° μμ΄ν μ μ΅μ λ°°μΉλ₯Ό μ°Ύλ 볡μ‘μ±μ΄ μ¦κ°ν©λλ€.
- 그리λ νΈλ μ: 그리λ νΈλ μκ° λ§μμλ‘ κ° μμ΄ν μ μ μ¬μ μΈ λ°°μΉ μ΅μ μκ° λμ΄λ©λλ€.
- λΈλΌμ°μ μμ§: μλ‘ λ€λ₯Έ λΈλΌμ°μ μμ§(μ: Chromeμ Blink, Firefoxμ Gecko, Safariμ WebKit)μ λ€μν μ΅μ ν μμ€μΌλ‘ CSS 그리λ λ©μ΄μ¨λ¦¬λ₯Ό ꡬνν μ μμ΅λλ€.
- νλμ¨μ΄: μ¬μ©μμ μ₯μΉ νλμ¨μ΄, νΉν CPUμ GPUλ λ μ΄μμ κ³μ°μ μΌλ§λ 빨리 μνν μ μλμ§ κ²°μ νλ λ° μ€μν μν μ ν©λλ€.
μ±λ₯ μν₯ μΈ‘μ νκΈ°
CSS 그리λ λ©μ΄μ¨λ¦¬ λ μ΄μμμ ν¨κ³Όμ μΌλ‘ μ΅μ ννλ €λ©΄ μ±λ₯ μν₯μ μΈ‘μ νλ κ²μ΄ νμμ μ λλ€. λ€μμ μ¬μ©ν μ μλ λͺ κ°μ§ λꡬμ κΈ°λ²μ λλ€:
- λΈλΌμ°μ κ°λ°μ λꡬ: Chrome DevTools, Firefox κ°λ°μ λꡬ, Safari μΉ κ²μ¬κΈ°λ κ°λ ₯ν νλ‘νμΌλ§ κΈ°λ₯μ μ 곡ν©λλ€. μ±λ₯ ν¨λμ μ¬μ©νμ¬ λΈλΌμ°μ νλμ νμλΌμΈμ κΈ°λ‘νκ³ , λ μ΄μμ κ³μ°μ΄ μλΉν μκ°μ μλͺ¨νλ μμμ μλ³νμΈμ. μμλ³΄λ€ μ€λ 걸리λ "Layout" λλ "Recalculate Style" μ΄λ²€νΈλ₯Ό μ°Ύμ보μΈμ.
- WebPageTest: WebPageTestλ μΉμ¬μ΄νΈ μ±λ₯ λΆμμ μν μΈκΈ° μλ μ¨λΌμΈ λꡬμ λλ€. λ μ΄μμ μ§μ μκ° λ° λ¦¬νμΈνΈ νμμ κ°μ μμΈν λ©νΈλ¦μ μ 곡ν©λλ€.
- Lighthouse: Chrome DevToolsμ ν΅ν©λ Lighthouseλ μΉμ¬μ΄νΈ μ±λ₯, μ κ·Όμ± λ° λͺ¨λ² μ¬λ‘μ λν μλνλ κ°μ¬λ₯Ό μ 곡ν©λλ€. λ μ΄μμ μ€λμ±κ³Ό κ΄λ ¨λ μ μ¬μ μΈ μ±λ₯ λ³λͺ© νμμ μλ³ν μ μμ΅λλ€.
- μ±λ₯ λ©νΈλ¦: CSS 그리λ λ©μ΄μ¨λ¦¬κ° μ¬μ©μ κ²½νμ λ―ΈμΉλ μ λ°μ μΈ μν₯μ νκ°νκΈ° μν΄ First Contentful Paint(FCP), Largest Contentful Paint(LCP), Time to Interactive(TTI)μ κ°μ μ£Όμ μ±λ₯ λ©νΈλ¦μ μΆμ νμΈμ.
μ΅μ ν κΈ°λ²
μ±λ₯ λ³λͺ© νμμ μλ³ν νμλ CSS 그리λ λ©μ΄μ¨λ¦¬μ λ μ΄μμ μ²λ¦¬ μ€λ²ν€λλ₯Ό μννκΈ° μν΄ μ¬λ¬ μ΅μ ν κΈ°λ²μ μ μ©ν μ μμ΅λλ€:
1. 그리λ μμ΄ν μ μ€μ΄κΈ°
κ°μ₯ κ°λ¨ν μ΅μ νλ 그리λμ μμ΄ν μλ₯Ό μ€μ΄λ κ²μ λλ€. μ¬μ©μκ° μ€ν¬λ‘€ν λ μμ΄ν μ μ μ§μ μΌλ‘ λ‘λνκΈ° μν΄ νμ΄μ§λ€μ΄μ μ΄λ 무ν μ€ν¬λ‘€ ꡬνμ κ³ λ €νμΈμ. μ΄λ κ² νλ©΄ μ΄κΈ°μ λ§μ μμ μμλ₯Ό λ λλ§νλ κ²μ νΌνκ³ , μ΄κΈ° λ‘λ μκ°μ κ°μ νλ©° λ μ΄μμ κ³μ° μ€λ²ν€λλ₯Ό μ€μΌ μ μμ΅λλ€.
μμ: λ©μ΄μ¨λ¦¬ 그리λμ 500κ°μ μ΄λ―Έμ§λ₯Ό λ‘λνλ λμ , μ²μ 50κ°λ₯Ό λ‘λν λ€μ μ¬μ©μκ° μλλ‘ μ€ν¬λ‘€ν λ λμ μΌλ‘ λ λ§μ΄ λ‘λν©λλ€. μ΄λ μ΄λ―Έμ§κ° λ§μ μΉμ¬μ΄νΈμ νΉν μ μ©ν©λλ€.
2. μ΄λ―Έμ§ λ‘λ© μ΅μ ν
μ΄λ―Έμ§λ μ’ μ’ λ©μ΄μ¨λ¦¬ λ μ΄μμμμ κ°μ₯ ν° μμ°μ λλ€. μ΄λ―Έμ§ λ‘λ©μ μ΅μ ννλ©΄ μ±λ₯μ ν¬κ² ν₯μμν¬ μ μμ΅λλ€:
- λ°μν μ΄λ―Έμ§ μ¬μ©:
<picture>μμλsrcsetμμ±μ μ¬μ©νμ¬ μ¬μ©μμ μ₯μΉ λ° νλ©΄ ν΄μλμ λ°λΌ λ€λ₯Έ ν¬κΈ°μ μ΄λ―Έμ§λ₯Ό μ 곡νμΈμ. - μ§μ° λ‘λ©(Lazy Loading):
loading="lazy"μμ±μ μ¬μ©νμ¬ νλ©΄ λ° μ΄λ―Έμ§μ λ‘λ©μ λ·°ν¬νΈμ λ€μ΄μ€κΈ° μ§μ κΉμ§ μ§μ°μν€μΈμ. μ΄λ μ΄κΈ° λ‘λ μκ°κ³Ό λμν μλΉλ₯Ό μ€μ λλ€. - μ΄λ―Έμ§ μμΆ: ImageOptimμ΄λ TinyPNGμ κ°μ λꡬλ₯Ό μ¬μ©νμ¬ μκ°μ νμ§μ μ νμν€μ§ μμΌλ©΄μ μ΄λ―Έμ§λ₯Ό μμΆνμΈμ.
- μ½ν μΈ μ μ‘ λ€νΈμν¬(CDN): CDNμ μ¬μ©νμ¬ μ§λ¦¬μ μΌλ‘ λΆμ°λ μλ²μμ μ΄λ―Έμ§λ₯Ό μ 곡νμ¬ μ μΈκ³ μ¬μ©μμ μ§μ° μκ°μ μ€μ΄κ³ λ‘λ© μλλ₯Ό ν₯μμν€μΈμ.
- μ΄λ―Έμ§ νμ μ΅μ ν: WebPλ AVIFμ κ°μ μ΅μ μ΄λ―Έμ§ νμμ μ¬μ©νλ κ²μ κ³ λ €νμΈμ. μ΄λ€μ JPEGλ PNGμ λΉν΄ λ λμ μμΆλ₯ κ³Ό νμ§μ μ 곡ν©λλ€. μ΄λ¬ν νμμ μ§μνμ§ μλ ꡬν λΈλΌμ°μ μ λν λ체 μ§μμ 보μ₯ν΄μΌ ν©λλ€.
3. μμ΄ν λμ΄ κ°λ³μ± μ μ΄νκΈ°
μμ΄ν λμ΄μ ν° νΈμ°¨λ λ μ΄μμ κ³μ°μ 볡μ‘μ±μ μ¦κ°μν¬ μ μμ΅λλ€. λμ΄ λ²μλ₯Ό μ ννκ±°λ μμ΄ν λμ΄λ₯Ό μ κ·ννλ κΈ°λ²μ μ¬μ©νλ κ²μ κ³ λ €νμΈμ:
- μ’ ν‘λΉ μ μ§: 그리λ μμ΄ν λ΄μ μ΄λ―Έμ§ λ° κΈ°ν μ½ν μΈ μ λν΄ μΌκ΄λ μ’ ν‘λΉλ₯Ό μ μ§νμΈμ. μ΄λ μμ΄ν λμ΄μ νΈμ°¨λ₯Ό μ€μ΄λ λ° λμμ΄ λ©λλ€.
- ν
μ€νΈ μλ₯΄κΈ°: κ° κ·Έλ¦¬λ μμ΄ν
μ νμλλ ν
μ€νΈμ μμ μ ννμ¬ κ·Ήμ¬ν λμ΄ λ³νλ₯Ό λ°©μ§νμΈμ. μλ¦° ν
μ€νΈλ₯Ό λνλ΄κΈ° μν΄ CSS
text-overflow: ellipsisλ₯Ό μ¬μ©νμΈμ. - κ³ μ λμ΄ μ»¨ν μ΄λ: κ°λ₯νλ€λ©΄, νΉν μΉ΄λλ μ¬μ μ μλ μ½ν μΈ κ΅¬μ‘°λ₯Ό κ°μ§ 컨ν μ΄λμ κ°μ μμμ λν΄ κ·Έλ¦¬λ μμ΄ν μ κ³ μ λμ΄λ₯Ό μ¬μ©νμΈμ. μ΄λ λΈλΌμ°μ κ° κ° μμ΄ν μ λμ΄λ₯Ό λμ μΌλ‘ κ³μ°ν νμλ₯Ό μμ μ€λλ€.
4. 그리λ κ΅¬μ± μ΅μ ν
μκ°μ λ§€λ ₯κ³Ό μ±λ₯ μ¬μ΄μ μ΅μ μ κ· νμ μ°ΎκΈ° μν΄ λ€μν 그리λ ꡬμ±μ μ€νν΄ λ³΄μΈμ:
- νΈλ μ μ€μ΄κΈ°: 그리λ νΈλ μκ° μ μΌλ©΄ κ° μμ΄ν μ μ μ¬μ λ°°μΉ μ΅μ μκ° μ€μ΄λ€μ΄ λ μ΄μμ κ³μ°μ΄ λ¨μνλ©λλ€.
- κ³ μ νΈλ ν¬κΈ°: κ°λ₯ν λλ§λ€ μλ ν¬κΈ° μ‘°μ νΈλ λμ κ³ μ νΈλ ν¬κΈ°(μ:
frλ¨μ)λ₯Ό μ¬μ©νμΈμ. μ΄λ λΈλΌμ°μ μ 그리λ ꡬ쑰μ λν λ λ§μ μ 보λ₯Ό 미리 μ 곡νμ¬ λμ κ³μ°μ νμμ±μ μ€μ λλ€. - 볡μ‘ν 그리λ ν νλ¦Ώ νΌνκΈ°: 그리λ ν νλ¦Ώμ κ°λ₯ν ν λ¨μνκ² μ μ§νμΈμ. μ§λμΉκ² 볡μ‘ν ν¨ν΄μ΄λ μ€μ²©λ 그리λλ λ μ΄μμ κ³μ° μ€λ²ν€λλ₯Ό μ¦κ°μν¬ μ μμΌλ―λ‘ νΌνμΈμ.
5. μ΄λ²€νΈ νΈλ€λ¬ λλ°μ΄μ€ λ° μ€λ‘ν
λ μ΄μμ μ¬κ³μ°μ μ λ°νλ μ΄λ²€νΈ νΈλ€λ¬(μ: resize μ΄λ²€νΈ, scroll μ΄λ²€νΈ)λ μ±λ₯μ λΆμ μ μΈ μν₯μ λ―ΈμΉ μ μμ΅λλ€. μ΄λ¬ν κ³μ°μ λΉλλ₯Ό μ ννκΈ° μν΄ λλ°μ΄μ±μ΄λ μ€λ‘νλ§μ μ¬μ©νμΈμ:
- λλ°μ΄μ±(Debouncing): λλ°μ΄μ±μ μ΄λ²€νΈκ° λ§μ§λ§μΌλ‘ νΈλ¦¬κ±°λ ν μΌμ μκ°μ΄ μ§λ νμ ν¨μμ μ€νμ μ§μ°μν΅λλ€. μ΄λ μ¬μ©μκ° μ°½ ν¬κΈ° μ‘°μ μ λ§μΉ νμλ§ κ³μ°μ μννλ €λ resizeμ κ°μ μ΄λ²€νΈμ μ μ©ν©λλ€.
- μ€λ‘νλ§(Throttling): μ€λ‘νλ§μ ν¨μκ° μ€νλ μ μλ μλλ₯Ό μ νν©λλ€. μ΄λ μ¬μ©μκ° κ³μ μ€ν¬λ‘€νλλΌλ ν©λ¦¬μ μΈ κ°κ²©μΌλ‘ κ³μ°μ μννλ €λ scrollκ³Ό κ°μ μ΄λ²€νΈμ μ μ©ν©λλ€.
Lodashμ κ°μ μλ°μ€ν¬λ¦½νΈ λΌμ΄λΈλ¬λ¦¬λ λλ°μ΄μ±κ³Ό μ€λ‘νλ§μ μν μ νΈλ¦¬ν° ν¨μλ₯Ό μ 곡ν©λλ€.
6. CSS Containment μ¬μ©
CSSμ contain μμ±μ λ¬Έμμ μΌλΆλ₯Ό λ λλ§ λΆμμ©μΌλ‘λΆν° 격리ν μ μκ² ν΄μ€λλ€. 그리λ μμ΄ν
μ contain: layoutμ μ μ©νλ©΄ ν΄λΉ μμ΄ν
λ΄μμ λ³κ²½μ΄ λ°μν λ λ μ΄μμ μ¬κ³μ°μ λ²μλ₯Ό μ νν μ μμ΅λλ€. μ΄λ νΉν 볡μ‘ν λ μ΄μμμ λ€λ£° λ μ±λ₯μ ν¬κ² ν₯μμν¬ μ μμ΅λλ€.
μμ:
.grid-item {
contain: layout;
}
μ΄λ λΈλΌμ°μ μκ² κ·Έλ¦¬λ μμ΄ν μ λ μ΄μμ λ³κ²½μ΄ κ·Έ λΆλͺ¨λ νμ μμμ λ μ΄μμμ μν₯μ λ―ΈμΉμ§ μμ κ²μμ μλ €μ€λλ€.
7. νλμ¨μ΄ κ°μ
CSSκ° κ°λ₯ν ν νλμ¨μ΄ κ°μμ νμ©νκ³ μλμ§ νμΈνμΈμ. transformμ΄λ opacityμ κ°μ νΉμ CSS μμ±μ GPUλ‘ μ€νλ‘λλ μ μμΌλ©°, μ΄λ λ λλ§ μ±λ₯μ ν¬κ² ν₯μμν¬ μ μμ΅λλ€.
μ λλ©μ΄μ
μ΄λ νΈλμ§μ
μ μν΄ top, left, width, heightμ κ°μ΄ λ μ΄μμ μ¬κ³μ°μ μ λ°νλ μμ± μ¬μ©μ νΌνμΈμ. λμ , μμλ₯Ό μ΄λνκ±°λ ν¬κΈ°λ₯Ό μ‘°μ νκΈ° μν΄ transformμ μ¬μ©νμΈμ. μ΄κ²μ΄ μΌλ°μ μΌλ‘ λ μ±λ₯μ΄ μ’μ΅λλ€.
8. κ°μν λλ μλμ
λ§€μ° ν° λ°μ΄ν° μΈνΈμ κ²½μ°, κ°μν λλ μλμ κΈ°λ² μ¬μ©μ κ³ λ €νμΈμ. μ΄λ νμ¬ λ·°ν¬νΈμ 보μ΄λ μμ΄ν λ§ λ λλ§νκ³ μ¬μ©μκ° μ€ν¬λ‘€ν¨μ λ°λΌ λμ μΌλ‘ μμλ₯Ό μμ±νκ³ νκ΄΄νλ κ²μ ν¬ν¨ν©λλ€. μ΄λ λΈλΌμ°μ κ° ν λ²μ κ΄λ¦¬ν΄μΌ νλ μμμ μλ₯Ό ν¬κ² μ€μ¬ μ±λ₯μ ν₯μμν¬ μ μμ΅λλ€.
react-windowλ react-virtualizedμ κ°μ λΌμ΄λΈλ¬λ¦¬λ React μ ν리μΌμ΄μ μμ κ°μνλ₯Ό ꡬννκΈ° μν μ»΄ν¬λνΈλ₯Ό μ 곡ν©λλ€. λ€λ₯Έ μλ°μ€ν¬λ¦½νΈ νλ μμν¬λ₯Ό μν μ μ¬ν λΌμ΄λΈλ¬λ¦¬λ μ‘΄μ¬ν©λλ€.
9. λΈλΌμ°μ λ³ μ΅μ ν
μλ‘ λ€λ₯Έ λΈλΌμ°μ μμ§μ΄ CSS 그리λ λ©μ΄μ¨λ¦¬λ₯Ό λ€μν μ΅μ ν μμ€μΌλ‘ ꡬνν μ μλ€λ μ μ μΈμ§νμΈμ. λ€μν λΈλΌμ°μ (Chrome, Firefox, Safari, Edge)μμ λ μ΄μμμ ν μ€νΈνκ³ λΈλΌμ°μ λ³ μ±λ₯ λ¬Έμ λ₯Ό μλ³νμΈμ. νμν κ²½μ° λΈλΌμ°μ λ³ CSS ν΅μ΄λ μλ°μ€ν¬λ¦½νΈ ν΄κ²° λ°©λ²μ μ μ©νμΈμ.
10. λͺ¨λν°λ§ λ° λ°λ³΅
μ±λ₯ μ΅μ νλ μ§μμ μΈ κ³Όμ μ λλ€. μμμ μ€λͺ ν λꡬμ κΈ°λ²μ μ¬μ©νμ¬ CSS 그리λ λ©μ΄μ¨λ¦¬ λ μ΄μμμ μ±λ₯μ μ§μμ μΌλ‘ λͺ¨λν°λ§νμΈμ. μ ν리μΌμ΄μ μ΄ λ°μ ν¨μ λ°λΌ μλ‘μ΄ λ³λͺ© νμμ μλ³νκ³ μ μ ν μ΅μ ν κΈ°λ²μ μ μ©νμΈμ. λͺ¨λ κΈ°κΈ°μ λΈλΌμ°μ μμ μΌκ΄λ μ±λ₯μ 보μ₯νκΈ° μν΄ μ κΈ°μ μΌλ‘ λ μ΄μμμ ν μ€νΈνμΈμ.
κ΅μ ν κ³ λ € μ¬ν
κΈλ‘λ² μ¬μ©μλ₯Ό λμμΌλ‘ CSS 그리λ λ©μ΄μ¨λ¦¬ λ μ΄μμμ κ°λ°ν λλ λ€μ κ΅μ ν(i18n) λ° νμ§ν(l10n) μμλ₯Ό κ³ λ €νμΈμ:
- ν μ€νΈ λ°©ν₯: CSS 그리λ λ©μ΄μ¨λ¦¬λ μΌμͺ½μμ μ€λ₯Έμͺ½(LTR) λ° μ€λ₯Έμͺ½μμ μΌμͺ½(RTL)κ³Ό κ°μ λ€μν ν μ€νΈ λ°©ν₯μ μλμΌλ‘ μ²λ¦¬ν©λλ€. λ μ΄μμμ΄ λ€λ₯Έ ν μ€νΈ λ°©ν₯μ μ¬λ°λ₯΄κ² μ μνλμ§ νμΈνμΈμ.
- κΈκΌ΄ λ λλ§: μΈμ΄μ λ°λΌ μ΅μ μ λ λλ§μ μν΄ λ€λ₯Έ κΈκΌ΄μ΄ νμν μ μμ΅λλ€. CSS
font-familyλ₯Ό μ¬μ©νμ¬ λ€λ₯Έ μΈμ΄μ μ ν©ν κΈκΌ΄μ μ§μ νμΈμ. - μ½ν μΈ κΈΈμ΄: λ²μλ μ½ν μΈ λ μλ³Έ μ½ν μΈ λ³΄λ€ κΈΈκ±°λ μ§§μ μ μμ΅λλ€. λ μ΄μμμ΄ κΉ¨μ§μ§ μμΌλ©΄μ μ½ν μΈ κΈΈμ΄μ λ³νλ₯Ό μμ©ν μ μλλ‘ λμμΈνμΈμ.
- λ¬Ένμ κ³ λ € μ¬ν: λ μ΄μμμ λμμΈν λ λ¬Ένμ μ°¨μ΄λ₯Ό μΌλμ λμΈμ. μμ μ νΈλ, μ΄λ―Έμ§, μ 보 κ³μΈ΅ ꡬ쑰μ κ°μ μμλ₯Ό κ³ λ €νμΈμ.
- μ κ·Όμ±: CSS 그리λ λ©μ΄μ¨λ¦¬ λ μ΄μμμ΄ μ₯μ κ° μλ μ¬μ©μμκ²λ μ κ·Ό κ°λ₯νλλ‘ λ³΄μ₯νμΈμ. μλ§¨ν± HTMLμ μ¬μ©νκ³ , μ΄λ―Έμ§μ λν λ체 ν μ€νΈλ₯Ό μ 곡νλ©°, ν€λ³΄λλ₯Ό μ¬μ©νμ¬ λ μ΄μμμ νμν μ μλλ‘ νμΈμ.
μ€μ μ¬μ© μμ
CSS 그리λ λ©μ΄μ¨λ¦¬κ° λ€μν λ§₯λ½μμ μ΄λ»κ² μ¬μ©λ μ μλμ§ μ€μ μμλ₯Ό μ΄ν΄λ³΄κ² μ΅λλ€:
- μ μμκ±°λ μΉμ¬μ΄νΈ: ν¨μ μ μμκ±°λ μΉμ¬μ΄νΈλ CSS 그리λ λ©μ΄μ¨λ¦¬λ₯Ό μ¬μ©νμ¬ μ ν μΉ΄νλ‘κ·Έλ₯Ό μκ°μ μΌλ‘ λ§€λ ₯μ μ΄κ³ λμ μΈ λ°©μμΌλ‘ μ λ³΄μΌ μ μμ΅λλ€.
- λ΄μ€ μΉμ¬μ΄νΈ: λ΄μ€ μΉμ¬μ΄νΈλ CSS 그리λ λ©μ΄μ¨λ¦¬λ₯Ό μ¬μ©νμ¬ λ€μν κΈΈμ΄μ κΈ°μ¬λ€μ κ· ν μκ³ ν₯λ―Έλ‘μ΄ λ μ΄μμμΌλ‘ νμν μ μμ΅λλ€.
- ν¬νΈν΄λ¦¬μ€ μΉμ¬μ΄νΈ: μ¬μ§μκ°λ λμμ΄λλ CSS 그리λ λ©μ΄μ¨λ¦¬λ₯Ό μ¬μ©νμ¬ λ€μν νλ©΄ ν¬κΈ°μ μ₯μΉ λ°©ν₯μ μ μνλ ν¬νΈν΄λ¦¬μ€ λ μ΄μμμΌλ‘ μμ μ μνμ μ λ³΄μΌ μ μμ΅λλ€.
- μμ λ―Έλμ΄ νλ«νΌ: μμ λ―Έλμ΄ νλ«νΌμ CSS 그리λ λ©μ΄μ¨λ¦¬λ₯Ό μ¬μ©νμ¬ μ΄λ―Έμ§λ λΉλμ€μ κ°μ μ¬μ©μ μμ± μ½ν μΈ λ₯Ό λμ μ΄κ³ μκ°μ μΌλ‘ λ§€λ ₯μ μΈ νΌλλ‘ νμν μ μμ΅λλ€.
μλ₯Ό λ€μ΄, μΌλ³Έμ μ μμκ±°λ μ¬μ΄νΈλ 그리λ λ©μ΄μ¨λ¦¬λ₯Ό μ¬μ©νμ¬ λ€μν ν¬κΈ°μ ν¨ν΄μ κΈ°λͺ¨λ Έλ₯Ό μ μνμ¬ κ° μμ΄ν μ΄ μκ°μ μΌλ‘ λ보μ΄κ³ μ μ 리λλλ‘ ν μ μμ΅λλ€. λ μΌμ λ΄μ€ μ¬μ΄νΈλ λ€μν κΈΈμ΄μ ν€λλΌμΈκ³Ό μ΄λ―Έμ§ ν¬κΈ°λ₯Ό κ°μ§ κΈ°μ¬λ€μ ꡬ쑰μ μ΄κ³ κ°λ μ± μκ² μ μνκΈ° μν΄ μ¬μ©ν μ μμ΅λλ€. μΈλμ λ―Έμ κ΄μ ν¬νΈν΄λ¦¬μ€ μ¬μ΄νΈμμ λ€μν μ°¨μμ λ€μ±λ‘μ΄ μμ μν 컬λ μ μ μ μν μ μμ΅λλ€.
κ²°λ‘
CSS 그리λ λ©μ΄μ¨λ¦¬λ λμ μΈ νν°λ μ€νΈ μ€νμΌ λ μ΄μμμ λ§λ€κΈ° μν λ€μ΄ν°λΈ μ루μ μ μ 곡νλ κ°λ ₯ν λ μ΄μμ λꡬμ λλ€. μλ°μ€ν¬λ¦½νΈ κΈ°λ° μ루μ μ λΉν΄ μ μ¬μ μΈ μ±λ₯ μ΄μ μ μ 곡νμ§λ§, λ μ΄μμ μ²λ¦¬ μ€λ²ν€λλ₯Ό μ΄ν΄νκ³ μ μ ν μ΅μ ν κΈ°λ²μ μ μ©νλ κ²μ΄ μ€μν©λλ€. 그리λ μμ΄ν μλ₯Ό μ€μ΄κ³ , μ΄λ―Έμ§ λ‘λ©μ μ΅μ ννλ©°, μμ΄ν λμ΄ κ°λ³μ±μ μ μ΄νκ³ , 그리λ ꡬμ±μ μ΅μ ννκ³ , μ΄λ²€νΈ νΈλ€λ¬λ₯Ό λλ°μ΄μ±νκ³ , CSS 컨ν μΈλ¨ΌνΈλ₯Ό μ¬μ©νκ³ , νλμ¨μ΄ κ°μμ νμ©νκ³ , κ°μνλ₯Ό μ±νν¨μΌλ‘μ¨ μ±λ₯ μν₯μ μννκ³ ν¨μ¨μ μ΄λ©° λ°μνμΈ CSS 그리λ λ©μ΄μ¨λ¦¬ λ μ΄μμμ λ§λ€ μ μμ΅λλ€. λ€μν μ₯μΉμ λΈλΌμ°μ μμ μΌκ΄λ μ±λ₯μ 보μ₯νκΈ° μν΄ μ΅μ νλ₯Ό μ§μμ μΌλ‘ λͺ¨λν°λ§νκ³ λ°λ³΅νλ κ²μ μμ§ λ§μΈμ. κ΅μ ν λ° νμ§ν μμλ₯Ό κ³ λ €ν¨μΌλ‘μ¨ μ μΈκ³ μ¬μ©μμκ² μ κ·Ό κ°λ₯νκ³ λ§€λ ₯μ μΈ CSS 그리λ λ©μ΄μ¨λ¦¬ λ μ΄μμμ λ§λ€ μ μμ΅λλ€.