Media Query와 Container Query의 차이, @container 문법, 실전 반응형 레이아웃 예시와 브라우저 지원 현황을 정리한다. 기존 Media Query에서의 마이그레이션 전략을 포함한다.
한 줄 요약: CSS Container Queries는 부모 컨테이너의 크기를 기준으로 스타일을 조건부 적용하는 기능으로, 재사용 가능한 컴포넌트 기반 레이아웃을 구축할 때 Media Query보다 훨씬 정확하다.
이 글이 필요한 사람
같은 컴포넌트가 사이드바와 메인 영역에서 다르게 보여야 하는 레이아웃을 구현 중인 개발자
Media Query만으로 해결이 안 되는 반응형 컴포넌트 문제를 겪고 있는 경우
@container 문법과 브라우저 지원 현황을 실무 기준으로 파악하려는 경우
CSS Container Queries를 도입할 때 폴백 전략이 필요한 팀
※ 브라우저 지원 현황은 2026년 3월 기준입니다. Can I Use 기준 전 세계 지원율 약 93%.
Media Query vs Container Query — 근본 차이
Media Query는 뷰포트(viewport) 크기를 기준으로 스타일을 바꾼다. 문제는 같은 컴포넌트가 메인 영역(넓음)과 사이드바(좁음)에 동시에 존재할 때, 뷰포트 폭은 동일하지만 컴포넌트가 놓인 공간은 다르다는 점이다. 이 경우 Media Query로는 컨테이너별 스타일링이 불가능하다.
Container Query는 부모 컨테이너의 크기를 기준으로 스타일을 조건부 적용한다. 컴포넌트가 어디에 배치되든 자신이 차지하는 공간에 반응한다.
항목
Media Query
Container Query
기준 대상
뷰포트 폭/높이
부모 컨테이너 폭/높이
컴포넌트 재사용성
낮음 (배치 위치에 따라 별도 처리)
높음 (어디에나 동작)
사용 목적
페이지 레이아웃 전환
컴포넌트 내부 레이아웃 전환
중첩 레이아웃 처리
어려움
자연스럽게 지원
CSS Container Queries 실전 가이드 — 프레임워크 성능 벤치마크 (출처: 공식 문서 및 벤치마크 데이터 기반)
@container 문법 완전 정리
Container Query를 사용하려면 두 단계가 필요하다. 1) 부모 요소에 container-type을 선언해 컨테이너로 등록한다. 2) 자식 요소에 @container 규칙으로 조건을 작성한다.