interpolate-size
interpolate-size 속성은 CSS에서 고정 크기 값(20px, 100% 등)에서 고유 크기 키워드(auto, fit-content, max-content 등)로 부드러운 애니메이션과 트랜지션을 가능하게 해주는 속성이다.
기존 문제점
기존에는 height: 0에서 height: auto로 애니메이션할 수 없어 JavaScript로 가려지는 영역의 직접 높이를 계산해서 구현해야했다.
.element {
height: 0;
transition: height 0.3s;
}
.element.open {
height: auto; /* ❌ 0에서 auto로 애니메이션 불가 */
}해결책: interpolate-size
interpolate-size: allow-keywords를 설정하면 브라우저가 auto, fit-content 등의 고유 크기 키워드를 실제 계산된 값으로 보간할 수 있어 구현이 편리하다.
/* 전역 설정 */
* {
interpolate-size: allow-keywords;
}
/* 이제 작동함 */
.element {
height: 0;
transition: height 0.3s;
}
.element.open {
height: auto; /* ✅ 0에서 auto로 부드럽게 애니메이션 */
}실제 예제
interpolate-size: numeric-only or 기본값
이 박스는 interpolate-size 없이 애니메이션됩니다.
height: 0에서 height: auto로 변경되지만 즉시 점프합니다.
부드러운 트랜지션이 적용되지 않습니다.
interpolate-size: allow-keywords 적용
이 박스는 interpolate-size: allow-keywords가 적용되어 있습니다.
height: 0에서 height: auto로 부드럽게 애니메이션됩니다.
자연스러운 트랜지션을 확인할 수 있습니다
브라우저 지원
- Chrome/Edge: 129+
- Safari: 18+
- Firefox: 지원 예정
참고 문서
MDN: interpolate-size Chrome for Developers: Animate to height auto