# [[CSS Grid|CSS Grid]] ## πŸ“Œ Brief Summary CSS GridλŠ” ν–‰(Row)κ³Ό μ—΄(Column)을 λ™μ‹œμ— 닀루어 λ³΅μž‘ν•˜κ³  체계적인 μ›Ή νŽ˜μ΄μ§€ ꡬ쑰λ₯Ό 섀계할 수 μžˆλ„λ‘ λ•λŠ” 2차원 λ ˆμ΄μ•„μ›ƒ μ‹œμŠ€ν…œμž…λ‹ˆλ‹€ [1, 2]. [[Flexbox|Flexbox]]와 달리 λ ˆμ΄μ•„μ›ƒ ꡬ쑰λ₯Ό λ¨Όμ € μ •μ˜ν•˜κ³  μš”μ†Œλ₯Ό λ°°μΉ˜ν•˜λŠ” 'λ ˆμ΄μ•„μ›ƒ μš°μ„ (layout in)' 방식을 μ·¨ν•˜λ©°, λŒ€κ·œλͺ¨ νŽ˜μ΄μ§€ λ ˆμ΄μ•„μ›ƒμ΄λ‚˜ λŒ€μ‹œλ³΄λ“œ, 가러리 λ“± μ •λ°€ν•œ λ°°μΉ˜κ°€ ν•„μš”ν•œ 곳에 κ°€μž₯ μ ν•©ν•©λ‹ˆλ‹€ [3-5]. ## πŸ“– Core Content * **2차원 λ ˆμ΄μ•„μ›ƒ μ œμ–΄:** * 1차원(ν–‰ λ˜λŠ” μ—΄)으둜만 μž‘λ™ν•˜λŠ” Flexbox와 λ‹€λ₯΄κ²Œ, CSS GridλŠ” κ°€λ‘œμ™€ μ„Έλ‘œ 두 λ°©ν–₯의 λ ˆμ΄μ•„μ›ƒμ„ λ™μ‹œμ— μ œμ–΄ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [2, 6]. * λ³΅μž‘ν•œ 쀑첩 μ»¨ν…Œμ΄λ„ˆλ₯Ό 생성할 ν•„μš” 없이 κΉ”λ”ν•œ λ§ˆν¬μ—…μœΌλ‘œ λ³΅μž‘ν•œ λ””μžμΈ(예: 헀더, ν‘Έν„°, μ‚¬μ΄λ“œλ°”, 메인 μ½˜ν…μΈ  배치)을 μ‰½κ²Œ κ΅¬ν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [7, 8]. * **μ •λ°€ν•œ 배치 및 μ˜€λ²„λž©(Overlap):** * `grid-template-columns`, `grid-template-rows`, `grid-template-areas` λ“±μ˜ 속성을 톡해 μ•„μ΄ν…œμ„ μ›ν•˜λŠ” μœ„μΉ˜μ— μ •ν™•νžˆ λ°°μΉ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [9, 10]. * `grid-column` 및 `grid-row` 속성을 ν™œμš©ν•΄ λ³΅μž‘ν•œ λ§ˆμ§„μ΄λ‚˜ μ ˆλŒ€ μœ„μΉ˜ μ§€μ •(Absolute positioning) 없이도 μš”μ†Œλ“€μ„ 겹치게 λ§Œλ“€ 수 μžˆμ–΄ μ‹œκ°μ μΈ 계측을 ν‘œν˜„ν•˜λŠ” 데 μœ λ¦¬ν•©λ‹ˆλ‹€ [11, 12]. * **κ°•λ ₯ν•œ λ°˜μ‘ν˜• 섀계 κΈ°λŠ₯:** * μ—¬λ°± μ œμ–΄μš© `gap`(`grid-gap`) 속성을 λ„€μ΄ν‹°λΈŒλ‘œ μ§€μ›ν•˜λ―€λ‘œ marginκ³Ό κ΄€λ ¨λœ λΆ€μž‘μš©μ„ λ°©μ§€ν•©λ‹ˆλ‹€ [6, 12]. * `fr`(λΆ„μˆ˜) λ‹¨μœ„μ™€ `minmax()` ν•¨μˆ˜, 그리고 `repeat(auto-fit, ...)` 같은 κΈ°λŠ₯을 κ²°ν•©ν•˜μ—¬, λ―Έλ””μ–΄ 쿼리에 크게 μ˜μ‘΄ν•˜μ§€ μ•Šκ³ λ„ κ°€μš© 곡간에 따라 νŠΈλž™ μˆ˜κ°€ λ™μ μœΌλ‘œ λ³€ν•˜λŠ” μœ μ—°ν•œ λ°˜μ‘ν˜• λ ˆμ΄μ•„μ›ƒμ„ κ΅¬ν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [13-17]. * **λ‹€λ₯Έ CSS κΈ°λŠ₯과의 μƒν˜Έμž‘μš©:** * **μ ˆλŒ€ μœ„μΉ˜ μ§€μ •:** Grid μ»¨ν…Œμ΄λ„ˆμ— `position: relative`λ₯Ό μ£Όλ©΄ λ‚΄λΆ€μ˜ μ ˆλŒ€ μœ„μΉ˜(`position: absolute`) μš”μ†Œκ°€ 전체 κ·Έλ¦¬λ“œ λ˜λŠ” ν• λ‹Ήλœ κ·Έλ¦¬λ“œ μ˜μ—­(Grid Area)을 κΈ°μ€€μœΌλ‘œ μ •λ°€ν•˜κ²Œ 배치될 수 μžˆμŠ΅λ‹ˆλ‹€ [18-20]. * **`display: contents` ν™œμš©:** Grid ν•­λͺ©μ˜ 래퍼(Wrapper) μš”μ†Œμ— `display: contents`λ₯Ό μ μš©ν•˜λ©΄, ν•΄λ‹Ή 래퍼의 λ°•μŠ€λŠ” 사라지고 λ‚΄λΆ€ μžμ‹ μš”μ†Œλ“€μ΄ 직접 Grid μ‹œμŠ€ν…œμ˜ ν•­λͺ©μœΌλ‘œ νŽΈμž…λ˜μ–΄ κ·Έλ¦¬λ“œμ˜ μ •λ ¬ κ·œμΉ™μ„ λ”°λ₯΄κ²Œ λ©λ‹ˆλ‹€ [21-23]. * **싀무 μœ μ§€λ³΄μˆ˜λ₯Ό μœ„ν•œ 섀계 μ „λž΅ (Flexboxμ™€μ˜ μ‘°ν•©):** * λͺ¨λ˜ ν”„λ‘ νŠΈμ—”λ“œ μ•„ν‚€ν…μ²˜μ—μ„œλŠ” CSS Grid와 Flexbox 쀑 ν•˜λ‚˜λ§Œ μ„ νƒν•˜λŠ” 것이 μ•„λ‹ˆλΌ, λͺ©μ μ— 맞게 두 κ°€μ§€λ₯Ό ν˜Όμš©ν•˜λŠ” 것이 ν•΅μ‹¬μž…λ‹ˆλ‹€ [24, 25]. * 전체 νŽ˜μ΄μ§€μ˜ ꡬ쑰(Major layout)λ‚˜ λŒ€κ·œλͺ¨ λΌˆλŒ€λŠ” 2차원인 **CSS Grid**둜 작고, ν•΄λ‹Ή μ…€ 내뢀에 λ“€μ–΄κ°€λŠ” UI μ»΄ν¬λ„ŒνŠΈλ“€μ˜ 세뢀적인 정렬은 1차원인 **Flexbox**둜 μ²˜λ¦¬ν•˜λŠ” 것이 μœ μ§€λ³΄μˆ˜μ„± 높은 μ½”λ“œλ₯Ό μž‘μ„±ν•˜λŠ” λͺ¨λ²” μ‚¬λ‘€μž…λ‹ˆλ‹€ [26-29]. ## πŸ”— Knowledge Connections - **Related Topics:** [[Flexbox|Flexbox]], [[ᄇᅑᆫ응형 α„ƒα…΅α„Œα…‘α„‹α…΅α†«|λ°˜μ‘ν˜• λ””μžμΈ]] - **Projects/Contexts:** μœ μ§€λ³΄μˆ˜ κ°€λŠ₯ν•œ CSS λ ˆμ΄μ•„μ›ƒ 섀계, μ›Ή νŽ˜μ΄μ§€ 및 λŒ€μ‹œλ³΄λ“œ ꡬ쑰화 - **Contradictions/Notes:** FlexboxλŠ” μ½˜ν…μΈ μ˜ 크기λ₯Ό 기반으둜 곡간을 λΆ„λ°°ν•˜λŠ” 'μ½˜ν…μΈ  μš°μ„ (content out)' λ°©μ‹μœΌλ‘œ λ™μž‘ν•˜μ§€λ§Œ, CSS GridλŠ” μ •μ˜λœ λ ˆμ΄μ•„μ›ƒμ˜ ν˜•νƒœμ— μš”μ†Œλ₯Ό λΌμ›Œ λ§žμΆ”λŠ” 'λ ˆμ΄μ•„μ›ƒ μš°μ„ (layout in)' 방식을 μ·¨ν•©λ‹ˆλ‹€ [5, 30]. CSS Gridκ°€ 더 λ³΅μž‘ν•œ κΈ°λŠ₯을 μ œκ³΅ν•˜μ§€λ§Œ λ‹¨μˆœν•œ 1차원 μ •λ ¬(ν–‰, μ—΄ λ‚΄μ—μ„œμ˜ μ•„μ΄ν…œ μ •λ ¬)에 μ‚¬μš©ν•˜κΈ°μ—λŠ” κ³Όλ„ν•œ μ„€μ •(overkill)이 될 수 μžˆμœΌλ―€λ‘œ 상황에 맞게 Flexbox와 ꡬ별해 μ‚¬μš©ν•΄μ•Ό ν•©λ‹ˆλ‹€ [6, 27, 31]. --- *Last updated: 2026-04-26*