`@media`는 브라우저 창 크기만 봅니다. 그래서 같은 카드 컴포넌트를 넓은 메인 영역에 놓든 좁은 사이드바에 놓든 스타일이 똑같이 적용돼서, 좁은 자리에서는 내용이 찌그러지기 쉬웠습니다. `@container`는 그 카드가 "실제로 몇 px짜리 상자 안에 있는지"를 기준으로 스타일을 바꿉니다.
쓰는 법은 두 단계입니다. 부모에 `container-type: inline-size`를 줘서 "이 요소는 쿼리 대상이다"라고 선언하고, 자식에서 `@container (min-width: 400px) { … }`처럼 그 컨테이너의 폭 조건을 씁니다.
이제 정말로 "컴포넌트 단위 반응형"이 가능해졌다는 점에서 최근 CSS 중 가장 실용적인 기능으로 꼽힙니다. 2023년 기준 주요 브라우저에 모두 도입되어 실무에 바로 쓸 수 있습니다.
언제 쓰나
재사용 가능한 카드·위젯을 여러 폭의 자리(메인, 사이드바, 모달)에 두루 배치해야 할 때 필수입니다. 페이지 전체 레이아웃 전환에는 여전히 미디어 쿼리가 더 간단합니다.