본문 바로가기
홈페이지

이미지 가변적일때 높이 통일하는 방법 - 최신 aspect-ratio 가로 세로 비율

by 초코몽몽 2025. 3. 19.
728x90

이미지 가변적일때 높이 통일하는 방법

 

이미지의 `height` 값을 고정값이 아니라 너비에 따라 비율적으로 조정되도록 하려면, CSS에서 **비율을 유지하는 컨테이너**와 `padding-top` 또는 `aspect-ratio` 속성을 활용하는 방법을 사용할 수 있습니다. 이렇게 하면 이미지의 높이가 너비에 비례해서 자동으로 변경되며, 브라우저 크기에 따라 반응형으로 동작합니다.

아래는 두 가지 주요 해결책입니다:

---

### 1. `aspect-ratio` 사용 (현대적인 방법)
CSS의 `aspect-ratio` 속성을 사용하면 이미지의 가로:세로 비율을 설정할 수 있습니다. 브라우저 너비가 변할 때 높이가 비율에 맞춰 자동으로 조정됩니다.


<!DOCTYPE html>
<html lang="ko">
<head>
  <meta charset="UTF-8">
  <style>
    .responsive-image {
      width: 100%; /* 브라우저 너비에 맞춤 */
      aspect-ratio: 16 / 9; /* 원하는 가로:세로 비율 (예: 16:9) */
      object-fit: cover; /* 비율 유지하며 잘림 */
    }
  </style>
</head>
<body>
  <img src="이미지1.jpg" alt="이미지1" class="responsive-image">
  <img src="이미지2.jpg" alt="이미지2" class="responsive-image">
</body>
</html>


- **`aspect-ratio`**: 가로:세로 비율을 정의 (예: `16 / 9`, `4 / 3`, `1 / 1` 등).
- 브라우저 크기가 변해도 설정한 비율에 따라 높이가 자동 조정됩니다.
- **호환성**: 최신 브라우저에서 잘 지원되지만, 아주 오래된 브라우저(IE 등)에서는 동작하지 않을 수 있습니다.



2. 컨테이너와 `padding-top` 사용 (전통적인 방법)
`aspect-ratio`가 지원되지 않는 환경을 고려하거나 더 넓은 호환성을 원한다면, 컨테이너에 `padding-top`을 사용해 비율을 유지할 수 있습니다. 이 방법은 이미지의 높이를 너비에 비례하게 만듭니다.


<!DOCTYPE html>
<html lang="ko">
<head>
  <meta charset="UTF-8">
  <style>
    .image-container {
      position: relative;
      width: 100%;
      padding-top: 56.25%; /* 16:9 비율 (9 ÷ 16 × 100) */
    }
    .image-container img {
      position: absolute;
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
      object-fit: cover;
    }
  </style>
</head>
<body>
  <div class="image-container">
    <img src="이미지1.jpg" alt="이미지1">
  </div>
  <div class="image-container">
    <img src="이미지2.jpg" alt="이미지2">
  </div>
</body>
</html>


- **`padding-top` 계산**: 비율에 따라 계산합니다.
  - 16:9 비율 → `(9 ÷ 16) × 100 = 56.25%`
  - 4:3 비율 → `(3 ÷ 4) × 100 = 75%`
  - 1:1 비율 → `100%`
- 이미지의 높이가 컨테이너의 너비에 비례해서 자동으로 조정됩니다.

---

어떤 방법을 선택할까?
- **`aspect-ratio`**: 코드가 간단하고 직관적이며, 현대적인 프로젝트에 추천.
- **`padding-top`**: 더 넓은 브라우저 호환성이 필요할 때 유용.

당신의 요구사항에 따라 원하는 비율(예: 16:9, 4:3 등)을 설정하면 됩니다. 예를 들어, 모든 이미지를 16:9 비율로 통일하고 싶다면 위 코드에서 `aspect-ratio: 16 / 9` 또는 `padding-top: 56.25%`를 사용하세요. 

댓글