λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
IT

Flex와 Grid: μ›Ή λ ˆμ΄μ•„μ›ƒ λ””μžμΈμ˜ 두 κ°•μž

by πŸ’²πŸŽ΅βœ–οΈβœ”οΈβ˜Ό 2024. 2. 14.
728x90

Flex와 Grid: μ›Ή λ ˆμ΄μ•„μ›ƒ λ””μžμΈμ˜ 두 κ°•μž

1. Flex와 Grid μ†Œκ°œ

1.1 Flex μ†Œκ°œ

FlexλŠ” CSS의 λ ˆμ΄μ•„μ›ƒ λͺ¨λΈ 쀑 ν•˜λ‚˜λ‘œ, μš”μ†Œλ₯Ό μˆ˜ν‰ λ˜λŠ” 수직으둜 μ •λ ¬ν•˜κ³  간격을 μ‘°μ ˆν•˜λŠ” λ“±μ˜ μž‘μ—…μ„ κ°„νŽΈν•˜κ²Œ μˆ˜ν–‰ν•  수 있게 ν•΄μ£ΌλŠ” κΈ°μˆ μž…λ‹ˆλ‹€. 주둜 ν•œ λ°©ν–₯으둜 μš”μ†Œλ“€μ„ λ°°μΉ˜ν•  λ•Œ ν™œμš©λ©λ‹ˆλ‹€.

1.2 Grid μ†Œκ°œ

GridλŠ” 더 λ³΅μž‘ν•œ λ ˆμ΄μ•„μ›ƒμ„ κ΅¬μ„±ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” CSS의 λ ˆμ΄μ•„μ›ƒ μ‹œμŠ€ν…œμž…λ‹ˆλ‹€. ν–‰κ³Ό 열을 μ •μ˜ν•˜κ³ , 각 셀에 μš”μ†Œλ₯Ό λ°°μΉ˜ν•¨μœΌλ‘œμ¨ λ‹€μ–‘ν•œ ν˜•νƒœμ˜ λ ˆμ΄μ•„μ›ƒμ„ κ΅¬ν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

2. Flex와 Grid의 차이점

2.1 배치 λ°©ν–₯

  • Flex: 주둜 ν•œ λ°©ν–₯(ν–‰ λ˜λŠ” μ—΄)으둜 μš”μ†Œλ₯Ό λ°°μΉ˜ν•©λ‹ˆλ‹€.
  • Grid: ν–‰κ³Ό 열을 λͺ¨λ‘ ν™œμš©ν•˜μ—¬ 2차원적인 λ ˆμ΄μ•„μ›ƒμ„ μƒμ„±ν•©λ‹ˆλ‹€.

2.2 μš”μ†Œμ˜ 배치 μ œμ–΄

  • Flex: μ£ΌμΆ•(main axis)κ³Ό ꡐ차좕(cross axis)을 μ΄μš©ν•˜μ—¬ μš”μ†Œμ˜ μ •λ ¬κ³Ό 간격을 μ‘°μ ˆν•©λ‹ˆλ‹€.
  • Grid: ν–‰κ³Ό μ—΄μ˜ 크기, μœ„μΉ˜ 등을 μžμ„Έν•˜κ²Œ μ œμ–΄ν•˜μ—¬ 더 μ •κ΅ν•œ λ ˆμ΄μ•„μ›ƒμ„ ꡬ성할 수 μžˆμŠ΅λ‹ˆλ‹€.

2.3 적용 λ²”μœ„

  • Flex: 주둜 μž‘μ€ 규λͺ¨μ˜ λ ˆμ΄μ•„μ›ƒμ— ν™œμš©λ©λ‹ˆλ‹€.
  • Grid: λŒ€κ·œλͺ¨μ΄κ±°λ‚˜ λ³΅μž‘ν•œ λ ˆμ΄μ•„μ›ƒμ—μ„œ 효과적으둜 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

3. Flex와 Grid 예제 μ½”λ“œ

3.1 Flex 예제 μ½”λ“œ

.container {
  display: flex;
  justify-content: space-between;
}

.item {
  flex: 1;
  margin: 10px;
}

예제 μ„€λͺ…:

  • display: flex;: Flex μ»¨ν…Œμ΄λ„ˆλ₯Ό μ •μ˜ν•©λ‹ˆλ‹€.
  • justify-content: space-between;: 주좕을 따라 μš”μ†Œλ“€μ„ λ™μΌν•œ κ°„κ²©μœΌλ‘œ λ°°μΉ˜ν•©λ‹ˆλ‹€.
  • flex: 1;: μžμ‹ μš”μ†Œλ“€μ— κ· λ“±ν•œ 곡간을 ν• λ‹Ήν•©λ‹ˆλ‹€.

3.2 Grid 예제 μ½”λ“œ

.container {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-gap: 10px;
}

.item {
  grid-column: span 1;
  grid-row: span 2;
}

예제 μ„€λͺ…:

  • display: grid;: Grid μ»¨ν…Œμ΄λ„ˆλ₯Ό μ •μ˜ν•©λ‹ˆλ‹€.
  • grid-template-columns: repeat(3, 1fr);: μ„Έ 개의 열을 μƒμ„±ν•˜κ³  각각의 λ„ˆλΉ„λ₯Ό κ· λ“±ν•˜κ²Œ μ„€μ •ν•©λ‹ˆλ‹€.
  • grid-gap: 10px;: κ·Έλ¦¬λ“œ μ…€ μ‚¬μ΄μ˜ 간격을 μ„€μ •ν•©λ‹ˆλ‹€.
  • grid-column: span 1;, grid-row: span 2;: 각각의 μš”μ†Œκ°€ μ°¨μ§€ν•˜λŠ” μ—΄κ³Ό ν–‰μ˜ λ²”μœ„λ₯Ό μ§€μ •ν•©λ‹ˆλ‹€.

4. λ‹€λ₯Έ μ˜ˆμ™€ 자주 μ‚¬μš©ν•˜λŠ” Attributes

4.1 λ‹€λ₯Έ Flex 예제

.container {
  display: flex;
  align-items: center;
}

.item {
  flex: 2;
  margin: 10px;
}

예제 μ„€λͺ…:

  • align-items: center;: ꡐ차좕을 따라 μš”μ†Œλ“€μ„ 쀑앙 μ •λ ¬ν•©λ‹ˆλ‹€.
  • flex: 2;: μžμ‹ μš”μ†Œ 쀑 ν•˜λ‚˜μ— 더 λ§Žμ€ 곡간을 ν• λ‹Ήν•©λ‹ˆλ‹€.

4.2 λ‹€λ₯Έ Grid 예제

.container {
  display: grid;
  grid-template-rows: 100px 200px;
}

.item {
  grid-row: span 1;
}

예제 μ„€λͺ…:

  • grid-template-rows: 100px 200px;: 두 개의 행을 μƒμ„±ν•˜κ³  각각의 높이λ₯Ό μ„€μ •ν•©λ‹ˆλ‹€.
  • grid-row: span 1;: 각각의 μš”μ†Œκ°€ μ°¨μ§€ν•˜λŠ” ν–‰μ˜ λ²”μœ„λ₯Ό μ§€μ •ν•©λ‹ˆλ‹€.

5. μ–΄λ–€ μƒν™©μ—μ„œ μ–΄λ–»κ²Œ ν™œμš©ν•  것인가?

  • Flex ν™œμš© μ‹œ: 주둜 일렬둜 λ°°μΉ˜ν•˜κ±°λ‚˜, κ°„λ‹¨ν•œ λ ˆμ΄μ•„μ›ƒμ„ ꡬ성할 λ•Œ ν™œμš©ν•©λ‹ˆλ‹€.

  • Grid ν™œμš© μ‹œ: 더 λ³΅μž‘ν•˜κ³  μ •κ΅ν•œ λ ˆμ΄μ•„μ›ƒμ΄ ν•„μš”ν•œ κ²½μš°μ— μ‚¬μš©ν•˜λ©°, 특히 κ·Έλ¦¬λ“œ μ‹œμŠ€ν…œμ΄ λͺ…ν™•ν•œ λ ˆμ΄μ•„μ›ƒμ„ μš”κ΅¬ν•˜λŠ” λŒ€κ·œλͺ¨ ν”„λ‘œμ νŠΈμ— μ ν•©ν•©λ‹ˆλ‹€.

6. 마무리

Flex와 GridλŠ” 각각의 νŠΉμ„±μ— 따라 λ‹€μ–‘ν•œ μƒν™©μ—μ„œ 효과적으둜 ν™œμš©λ©λ‹ˆλ‹€. FlexλŠ” κ°„λ‹¨ν•œ λ°°μΉ˜μ— μ ν•©ν•˜κ³ , GridλŠ” 더 λ³΅μž‘ν•˜κ³  μ •κ΅ν•œ λ ˆμ΄μ•„μ›ƒμ„ μœ„ν•΄ μ„€κ³„λ˜μ—ˆμŠ΅λ‹ˆλ‹€. μ μ ˆν•œ μƒν™©μ—μ„œ μœ μ—°ν•˜κ²Œ μ„ νƒν•˜μ—¬ μ›Ή νŽ˜μ΄μ§€μ˜ λ ˆμ΄μ•„μ›ƒμ„ 효과적으둜 λ””μžμΈν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λŒ“κΈ€