CSS Region κ·μΉμ κ°λ ₯ν κΈ°λ₯μΌλ‘ κ³ κΈ μ½ν μΈ νλ¦ μ μ΄, λ°μν λμμΈ, λμ λ μ΄μμμ μΉ κ°λ°μ μ μ©ν΄λ³΄μΈμ. μ‘μ§ μ€νμΌ λ μ΄μμμ λ§λλ λ²μ λ°°μ보μΈμ.
CSS Region κ·μΉ: κ³ κΈ λ μ΄μμμ μν μ½ν μΈ νλ¦ μ μ΄
λμμμ΄ μ§ννλ μΉ κ°λ° νκ²½μμ μκ°μ μΌλ‘ λ§€λ ₯μ μ΄κ³ μ°Έμ¬λ₯Ό μ λνλ λ μ΄μμμ λ§λλ κ²μ λ§€μ° μ€μν©λλ€. Flexbox λ° Gridμ κ°μ μ ν΅μ μΈ CSS λ μ΄μμ κΈ°λ²μ μ½ν μΈ κ΅¬μ±μ μν κ°λ ₯ν λꡬλ₯Ό μ 곡νμ§λ§, μ‘μ§λ μ λ¬Έμμ λ³Ό μ μλ 볡μ‘νκ³ λΉμ νμ μΈ λμμΈμ λ¬μ±νλ λ°λ λλλ‘ λΆμ‘±ν¨μ΄ μμ΅λλ€. μ΄λ CSS Regionsμ΄ λ±μ₯νμ¬ μ¬λ¬ 컨ν μ΄λμ κ±Έμ³ μ½ν μΈ νλ¦μ μ μ΄νλ κ°λ ₯ν λ©μ»€λμ¦μ μ 곡νλ©°, κ°λ°μκ° μ κ΅νκ³ λμ μΈ λ μ΄μμμ μ μν μ μλλ‘ ν©λλ€.
CSS Regions μ΄ν΄νκΈ°
CSS Regionsμ CSS3 μ¬μμ μΌλΆ(보νΈμ μΌλ‘ ꡬνλμ§λ μμμ§λ§)λ‘, λͺ λͺ λ νλ¦μ μ μν λ€μ νΉμ μμμΌλ‘ μ½ν μΈ λ₯Ό μ§μ νλ λ°©λ²μ μ 곡ν©λλ€. μ¬λ¬ λͺ¨μκ³Ό ν¬κΈ°κ° λ€μν 컨ν μ΄λμ κ±Έμ³ νμνκ³ μ νλ κΈ΄ κΈ°μ¬κ° μλ€κ³ μμν΄ λ³΄μΈμ. CSS Regionsμ μ¬μ©νλ©΄ μ΄λ¬ν μμ μ μνν μ μμΌλ©°, μ½ν μΈ κ° μ΄λ¬ν 컨ν μ΄λ κ°μ μννκ² λ€μ νλ¬ μΌκ΄λκ³ μκ°μ μΌλ‘ λ§€λ ₯μ μΈ κ²½νμ λ§λ€ μ μμ΅λλ€.
ν΅μ¬ κ°λ μ λ κ°μ§ μ£Όμ κ΅¬μ± μμλ‘ μ΄λ£¨μ΄μ§λλ€:
- λͺ λͺ λ νλ¦ (Named Flows): μ½ν μΈ λ₯Ό λ΄λ λͺ λͺ λ 컨ν μ΄λμ λλ€. μ±μμ§κΈ°λ₯Ό κΈ°λ€λ¦¬λ λ¬Όν΅μΌλ‘ μκ°νμΈμ. λͺ λͺ λ νλ¦μ λ¨μΌ μ½ν μΈ μμ€ μν μ ν©λλ€.
- μμ (Regions): λͺ λͺ λ νλ¦μμ μ½ν μΈ λ₯Ό μκ°μ μΌλ‘ νμνλ 컨ν μ΄λμ λλ€. μ΄λ¬ν μμμ λ 립μ μΌλ‘ μμΉλ₯Ό μ§μ νκ³ μ€νμΌμ μ§μ ν μ μμ΄ μ°½μμ μ΄κ³ μ μ°ν λ μ΄μμμ΄ κ°λ₯ν©λλ€.
μνκΉκ²λ CSS Regionsμ κ°λ μ κ°λ ₯νμ§λ§ λΈλΌμ°μ μ§μμ΄ μ νμ μ λλ€. μ²μμλ μΌλΆ λΈλΌμ°μ μμ ꡬνλμμ§λ§ μ΄ν μ€λ¨λμκ±°λ μ κ·Ήμ μΌλ‘ μ μ§ κ΄λ¦¬λμ§ μκ³ μμ΅λλ€. κ·Έλ¬λ CSS Regionsμ κΈ°λ³Έ μ리λ₯Ό μ΄ν΄νλ κ²μ λ€λ₯Έ λ μ΄μμ κ³Όμ μ μ κ·Όνλ λ°©λ²μ λν μ 보λ₯Ό μ 곡νκ³ μ μ¬μ μΌλ‘ ν΄λ¦¬ν λλ ν₯ν λ μ΄μμ κΈ°μ μ μκ°μ μ€ μ μμ΅λλ€.
CSS Regions μλ λ°©μ (μ΄λ‘ μ)
νμ¬ λΈλΌμ°μ μ§μμ νκ³λ₯Ό μΌλμ λκ³ CSS Regionsμ΄ μ΄λ‘ μ μΌλ‘ μ΄λ»κ² μλνλμ§ μ΄ν΄λ³΄κ² μ΅λλ€. μ΄ κ³Όμ μ μΌλ°μ μΌλ‘ λ€μ λ¨κ³λ₯Ό ν¬ν¨ν©λλ€:
- λͺ
λͺ
λ νλ¦ μ μ: νλ¦μ μ μ΄ν μ½ν
μΈ λ₯Ό ν¬ν¨νλ μμμ `flow-into` μμ±μ μ¬μ©νμ¬ μ½ν
μΈ νλ¦μ μ΄λ¦μ μ§μ νλ κ²μΌλ‘ μμν©λλ€. μλ₯Ό λ€λ©΄ λ€μκ³Ό κ°μ΅λλ€.
.content { flow-into: articleFlow; }
- μμ μμ±: λ€μμΌλ‘ μ½ν
μΈ λ₯Ό νμν μμμ μ μν©λλ€. μ΄λ¬ν μμμ μΌλ°μ μΌλ‘ `` μμμ κ°μ λΈλ‘ λ 벨 μμμ λλ€. `flow-from` μμ±μ μ¬μ©νμ¬ μ΄λ¬ν μμμ λͺ λͺ λ νλ¦κ³Ό μ°κ²°ν©λλ€.
.region1 { flow-from: articleFlow; width: 300px; height: 200px; } .region2 { flow-from: articleFlow; width: 400px; height: 300px; }
- μμ μ€νμΌ μ§μ : κ·Έλ° λ€μ `width`, `height`, `background-color`, `border` λ±κ³Ό κ°μ νμ€ CSS μμ±μ μ¬μ©νμ¬ κ° μμμ λ 립μ μΌλ‘ μ€νμΌ μ§μ ν μ μμ΅λλ€.
`flow-into: articleFlow`κ° μλ μμμ μ½ν μΈ λ μλμΌλ‘ `.region1` λ° `.region2` μμλ‘ νλ¬ λ€μ΄κ° μμλλ‘ μ±μμ§λλ€. μ½ν μΈ κ° μμμ μ¬μ© κ°λ₯ν 곡κ°μ μ΄κ³Όνλ©΄ μλ¦¬κ² λλ©°, `region-fragment`μ κ°μ CSS μμ±μ μ¬μ©νμ¬ μ½ν μΈ κ° μμ κ°μ λΆν λλ λ°©μμ μ μ΄ν μ μμ΅λλ€.
Regionsμ λν μ£Όμ CSS μμ±
Regionsμ κ΄λ ¨λ νμ CSS μμ± λͺ©λ‘μ λλ€:
- `flow-into`: μ΄ μμ±μ μ½ν μΈ λ₯Ό λͺ λͺ λ νλ¦μ ν λΉν©λλ€. λ°°ν¬ν μ½ν μΈ λ₯Ό ν¬ν¨νλ μμμ μ μ©λ©λλ€. κ°μ νλ¦μ μ§μ ν μ΄λ¦μ λλ€.
- `flow-from`: μ΄ μμ±μ λͺ λͺ λ νλ¦μ μ½ν μΈ λ₯Ό νΉμ μμμΌλ‘ μ§μ ν©λλ€. μμ μμμ μ μ©λ©λλ€. κ°μ `flow-into` μμ±μμ μ¬μ©λ μ΄λ¦κ³Ό μΌμΉν΄μΌ ν©λλ€.
- `region-fragment`: μ΄ μμ±μ μ½ν μΈ κ° μμμ λ²μ΄λ λ μ½ν μΈ κ° λΆν λλ λ°©μμ μ μ΄ν©λλ€. κ°λ₯ν κ°μ `auto`, `break`, `discard`μ λλ€. `auto`λ κΈ°λ³Έκ°μΌλ‘, λΈλΌμ°μ κ° μ½ν μΈ λ₯Ό μ€λ¨ν μμΉλ₯Ό κ²°μ νλλ‘ νμ©ν©λλ€. `break`λ κ°μ₯ κ°κΉμ΄ μ ν¨ν μ€λ¨ μ§μ (μ: λ¨μ΄ λλ μ€ μ¬μ΄)μμ μ€λ¨μ κ°μ ν©λλ€. `discard`λ λ²μ΄λ μ½ν μΈ λ₯Ό μ¨κΉλλ€.
- `getRegions()`: μ΄ Javascript λ©μλλ μ¬μ© κ°λ₯ν κ²½μ° νΉμ λͺ λͺ λ νλ¦κ³Ό κ΄λ ¨λ μμ λͺ©λ‘μ κ²μν μ μμ΅λλ€. μ΄λ λ μ΄μμμ λμ μ‘°μμ μ¬μ©λ μ μμ΅λλ€. κ·Έλ¬λ μ νλ λΈλΌμ°μ μ§μμΌλ‘ μΈν΄ μ λ’°μ±μ΄ μλ¬Έμ€λ½μ΅λλ€.
μ€μ©μ μΈ μμ (κ°λ μ )
λΈλΌμ°μ μ§μ λΆμ‘±μΌλ‘ νλ‘λμ μμ CSS Regionsμ μμ μ μΌλ‘ μ¬μ©ν μλ μμ§λ§, κ·Έ μ μ¬λ ₯μ μ€λͺ νκΈ° μν λͺ κ°μ§ μ¬μ© μ¬λ‘λ₯Ό μμν΄ λ΄ μλ€:
μ‘μ§ λ μ΄μμ
κΈ°μ¬κ° μ΄λ―Έμ§, μ¬μ΄λλ° λ° κΈ°ν μμ μ£Όμλ‘ νλ¬κ°λ μ‘μ§ μ€νμΌμ λ μ΄μμμ μμν΄ λ³΄μΈμ. κΈ°μ¬ μ½ν μΈ μ λν λͺ λͺ λ νλ¦μ μ μν λ€μ μ΄λ¬ν μμλ₯Ό μμ©νκΈ° μν΄ λ€μν λͺ¨μκ³Ό ν¬κΈ°μ μμμ λ§λ€ μ μμ΅λλ€. ν μ€νΈλ μ₯μ λ¬Ό μ£Όμλ‘ μλμΌλ‘ λ€μ νλ¬ μκ°μ μΌλ‘ μλμ μ΄κ³ λ§€λ ₯μ μΈ λ μ΄μμμ μμ±ν©λλ€.
λ°μν κΈ°μ¬ νλ μ ν μ΄μ
λ°μν λμμΈμμλ κΈ°μ¬μ λ μ΄μμμ΄ νλ©΄ ν¬κΈ°μ λ°λΌ λ³κ²½λκΈ°λ₯Ό μν μ μμ΅λλ€. CSS Regionsμ μ¬μ©νλ©΄ λ€λ₯Έ νλ©΄ ν¬κΈ°μ λν΄ λ€λ₯Έ μμ μΈνΈλ₯Ό μ μν μ μμ΅λλ€. νλ©΄ ν¬κΈ°κ° λ³κ²½λ¨μ λ°λΌ μ½ν μΈ λ μ μ ν μμμΌλ‘ μλμΌλ‘ λ€μ νλ¬ λ€μ΄κ° μ¬μ© κ°λ₯ν 곡κ°μ λ§μΆ° μ‘°μ λ©λλ€.
μΈν°λν°λΈ μ€ν 리ν λ§
μΈν°λν°λΈ μ€ν 리ν λ§μ μν΄ CSS Regionsμ μ¬μ©νμ¬ λΉμ νμ μΈ λ΄λ¬ν°λΈλ₯Ό λ§λ€ μ μμ΅λλ€. μ¬μ©μκ° μ½ν μΈ μ μνΈ μμ©ν¨μ λ°λΌ μ΄μΌκΈ°κ° λ€λ₯Έ μμμΌλ‘ λΆκΈ°λμ΄ λ νΉνκ³ κ°μΈνλ κ²½νμ λ§λ€ μ μμ΅λλ€.
μ ν μ¬ν λ° λμ
μμ μΈκΈνλ―μ΄ CSS Regionsμ μ£Όμ μ ν μ¬νμ κ΄λ²μν λΈλΌμ°μ μ§μ λΆμ‘±μ λλ€. μ¬μμ΄ μ€λ«λμ μ‘΄μ¬νμ§λ§ λΈλΌμ°μ 곡κΈμ 체μμ λ리 μ±νλμ§ μμμ΅λλ€. λ°λΌμ νλ‘λμ μΉμ¬μ΄νΈμ CSS Regionsλ§ μμ‘΄νλ κ²μ νμ¬ κΆμ₯λμ§ μμ΅λλ€.
κ·Έλ¬λ μ μ¬ν κ²°κ³Όλ₯Ό μ»μ μ μλ λμμ μΈ μ κ·Ό λ°©μμ΄ μμ§λ§ 볡μ‘μ±μ μ λλ λ€μν©λλ€:
- JavaScript κΈ°λ° μ루μ : μ¬λ¬ JavaScript λΌμ΄λΈλ¬λ¦¬ λ° νλ μμν¬λ μ μ¬ν μ½ν μΈ μ¬νλ¦ κΈ°λ₯μ μ 곡ν©λλ€. μ΄λ¬ν μ루μ μ μ’ μ’ κ° μ»¨ν μ΄λμ μ¬μ© κ°λ₯ν 곡κ°μ κ³μ°νκ³ μ½ν μΈ λ₯Ό ν΄λΉ 곡κ°μ μλμΌλ‘ λ°°ν¬νλ κ²μ ν¬ν¨ν©λλ€. μ΄ μ κ·Ό λ°©μμ ꡬννκΈ° λ 볡μ‘ν μ μμ§λ§ λ ν° μ μ΄ λ° μ μ°μ±μ μ 곡ν©λλ€.
- CSS Grid λ° Flexbox: CSS Regionsκ³Ό μ§μ μ μΌλ‘ λλ±νμ§λ μμ§λ§ CSS Grid λ° Flexboxλ₯Ό μ¬μ©νμ¬ λ€μ€ μ΄ λ° μ μ°ν μ½ν μΈ λ°°μ΄μ κ°μΆ μ κ΅ν λ μ΄μμμ λ§λ€ μ μμ΅λλ€. μ΄λ¬ν κΈ°μ μ λ―Έλμ΄ μΏΌλ¦¬μ κ²°ν©νλ©΄ λ€λ₯Έ νλ©΄ ν¬κΈ°μ λ§μΆ° μ‘°μ λλ λ°μν λμμΈμ λ¬μ±ν μ μμ΅λλ€.
- Column-count μμ±: `column-count` CSS μμ±μ λͺ¨λ μ£Όμ λΈλΌμ°μ μμ μ§μλ©λλ€. μ½ν μΈ κ° μ΄λμμ μ€λ¨λλμ§μ λν μμ ν μ μ΄λ₯Ό μ 곡νμ§λ μμ§λ§, μ½ν μΈ κ° μ¬λ¬ μ΄λ‘ νλ₯΄λ μ‘μ§ μ€νμΌμ λ μ΄μμμ λ§λλ λ° μ¬μ©ν μ μμ΅λλ€. `column-gap`μ μ¬μ©νμ¬ μ΄ μ¬μ΄μ κ°κ²©μ μΆκ°νκ³ `column-rule`μ μ¬μ©νμ¬ μκ°μ ꡬλΆμ μ μΆκ°ν μ μμ΅λλ€.
CSS λ μ΄μμμ λ―Έλ
CSS Regionsμ νμ¬ νλ‘λμ μΉμ¬μ΄νΈμ μ ν©ν μ΅μ μ΄ μλ μ μμ§λ§, μ½ν μΈ νλ¦ μ μ΄μ κΈ°λ³Έ κ°λ μ μ¬μ ν κ΄λ ¨μ±μ΄ μμ΅λλ€. μΉμ΄ κ³μ λ°μ ν¨μ λ°λΌ κΈ°μ‘΄ μ κ·Ό λ°©μμ νκ³λ₯Ό ν΄κ²°νλ μλ‘κ³ νμ μ μΈ λ μ΄μμ κΈ°μ μ΄ λ±μ₯ν κ²μΌλ‘ μμν μ μμ΅λλ€. CSS Regionsμ μμ΄λμ΄κ° μ¬κ²ν λμ΄ ν₯ν CSS μ¬μμ ν΅ν©λ κ°λ₯μ±μ΄ μμ΅λλ€.
κ³ κΈ λ μ΄μμ ꡬν μ κΈλ‘λ² κ³ λ € μ¬ν
κ³ κΈ λ μ΄μμμ μ€κ³ν λ νΉν κΈλ‘λ² μ μ¬ κ³ κ°μ λμμΌλ‘ ν λλ λ€μ μ¬νμ κ³ λ €νλ κ²μ΄ μ€μν©λλ€.
- μΈμ΄ μ§μ: λ μ΄μμμ΄ μλμ΄, νλΈλ¦¬μ΄μ κ°μ΄ μ€λ₯Έμͺ½μμ μΌμͺ½μΌλ‘ ν μ€νΈ λ°©ν₯μ΄ μλ μΈμ΄λ₯Ό ν¬ν¨νμ¬ λ€μν μΈμ΄λ₯Ό μ§μν μ μλμ§ νμΈνμμμ€. ν μ€νΈ λ°©ν₯μ κ΄κ³μμ΄ μ¬λ°λ₯Έ λ μ΄μμ λμμ 보μ₯νκΈ° μν΄ λ Όλ¦¬μ μμ±(μ: `margin-left` λμ `margin-inline-start`)μ μ¬μ©νλ κ²μ κ³ λ €νμμμ€.
- κΈκΌ΄ λ λλ§: μ΄μ 체μ λ° λΈλΌμ°μ λ§λ€ κΈκΌ΄ λ λλ§ λ°©μμ΄ λ€λ₯Ό μ μμ΅λλ€. μΌκ΄λ μκ°μ λͺ¨μμ 보μ₯νκΈ° μν΄ λ€μν νλ«νΌμμ λ μ΄μμμ ν μ€νΈνμμμ€. μΉ κΈκΌ΄μ μ¬μ©νμ¬ μΌκ΄λ νμ΄ν¬κ·ΈλνΌ κ²½νμ μ 곡νλ κ²μ κ³ λ €νμμμ€.
- μ κ·Όμ±: λ μ΄μμμ΄ μ₯μ κ° μλ μ¬μ©μμκ² μ κ·Ό κ°λ₯νλλ‘ νμμμ€. μ΄λ―Έμ§μ λν λ체 ν μ€νΈλ₯Ό μ 곡νκ³ , μλ―Έλ‘ μ HTML μμλ₯Ό μ¬μ©νκ³ , μΆ©λΆν μμ λλΉλ₯Ό 보μ₯νμμμ€. ARIA μμ±μ μ¬μ©νμ¬ λ³΅μ‘ν λ μ΄μμμ μ κ·Όμ±μ ν₯μμν€μμμ€.
- μ±λ₯: 볡μ‘ν λ μ΄μμμ μΉμ¬μ΄νΈ μ±λ₯μ μν₯μ λ―ΈμΉ μ μμ΅λλ€. CSS λ° JavaScript μ½λλ₯Ό μ΅μ ννκ³ , HTTP μμ²μ μ΅μννκ³ , μΊμ± κΈ°μ μ μ¬μ©νμ¬ λ‘λ© μκ°μ κ°μ νμμμ€. Google PageSpeed Insightsμ κ°μ λꡬλ₯Ό μ¬μ©νμ¬ μ±λ₯ λ³λͺ© νμμ μλ³νμμμ€.
- ν μ€νΈ: λ€μν λΈλΌμ°μ , μ₯μΉ λ° νλ©΄ ν¬κΈ°μμ λ μ΄μμμ μ² μ ν ν μ€νΈνμ¬ μμλλ‘ μλνλμ§ νμΈνμμμ€. μλνλ ν μ€νΈ λꡬλ₯Ό μ¬μ©νμ¬ νκ·λ₯Ό κ°μ§νκ³ μΌκ΄λ λμμ 보μ₯νμμμ€.
κ²°λ‘
CSS Regionsμ μ νλ λΈλΌμ°μ μ§μμλ λΆκ΅¬νκ³ μ½ν μΈ νλ¦ μ μ΄λ₯Ό μν λ§€λ ₯μ μΈ μ κ·Ό λ°©μμ λνλ λλ€. CSS Regionsμ κΈ°λ³Έ μ리λ₯Ό μ΄ν΄νλ©΄ λ μ΄μμ λμμΈμ λν΄ μ°½μμ μΌλ‘ μκ°νκ³ λ³΅μ‘νκ³ λμ μΈ λ μ΄μμμ λ¬μ±νκΈ° μν λμμ μΈ κΈ°μ μ νμνλ λ° μκ°μ μ€ μ μμ΅λλ€. CSS λ μ΄μμ κΈ°μ μ μ§ννλ νκ²½μ μ£Όμν¨μΌλ‘μ¨ μ΅μ νΈλ λλ₯Ό μμ λκ°κ³ μ μΈκ³ μ¬μ©μμκ² μκ°μ μΌλ‘ λ©μ§κ³ λ§€λ ₯μ μΈ μΉ κ²½νμ λ§λ€ μ μμ΅λλ€. Regionsμ μμ§ μ€μ μ ν¬μ λ μ€λΉκ° λμ§ μμμ§λ§, κ·Έλ€μ΄ νꡬνλ κ°λ μ ν₯ν λ μ΄μμ ν¨λ¬λ€μμ νμ±νλ λ° μ¬μ ν κ°μΉκ° μμ΅λλ€.