반응형 웹을 만들다 보면 이미지나 박스 요소의 비율을 고정하면서 크기만 유동적으로 바꾸고 싶을 때가 많습니다. 예를 들어 유튜브 영상 썸네일(16:9), 정사각형 카드(1:1), 세로로 긴 프로필 이미지(3:4) 등이 있죠. 기존에는 padding-top 트릭이나 ::before 가상 요소를 활용해야 했지만, 이제는 aspect-ratio 속성 하나로 간단하게 처리할 수 있습니다.
.element {
aspect-ratio: 가로 / 세로;
}
aspect-ratio는 가로:세로 비율을 지정하는 속성입니다.width 또는 height 중 하나만 지정하면 나머지는 비율에 맞게 자동 계산됩니다..square {
width: 200px;
aspect-ratio: 1 / 1; /* 가로세로 1:1 비율 */
background: lightblue;
}
→ 항상 정사각형 형태를 유지합니다.
.video {
width: 100%;
aspect-ratio: 16 / 9;
background: black;
}
→ 반응형 레이아웃에서도 16:9 비율이 깨지지 않습니다.
.card {
width: 150px;
aspect-ratio: 3 / 4;
background: pink;
}
→ 가로보다 세로가 긴 카드 레이아웃에 유용합니다.
이미지에 적용
img {
width: 100%;
aspect-ratio: 4 / 3;
object-fit: cover;
}
→ 이미지가 잘려도 비율을 유지하면서 꽉 차게 보여줄 수 있습니다.
1. 지원 브라우저: 대부분의 최신 브라우저(크롬, 엣지, 사파리, 파이어폭스)에서 지원합니다.
단, IE는 지원하지 않습니다.
2. 우선순위:
width와 height를 동시에 지정하면 aspect-ratio가 무시됩니다.width만 지정하면 height는 비율로 계산됩니다.height만 지정해도 width가 자동으로 맞춰집니다.aspect-ratio 속성은 반응형 레이아웃에서 비율 고정 박스를 쉽게 만들 수 있는 강력한 도구입니다.
이제 복잡한 padding-top 트릭을 쓰지 않아도 되고, 코드가 훨씬 간결해집니다.
등에서 활용해 보시면 큰 도움이 될 거예요.