반응형 웹 퍼블리싱을 위한 CSS 컨테이너 쿼리 활용법

반응형 웹 디자인에서 미디어 쿼리는 오랫동안 표준으로 사용되어 왔지만, 최근에는 컨테이너 쿼리(Container Queries)가 주목받고 있습니다. 기존 미디어 쿼리와의 차이점을 이해하고, 실전 적용 방법을 살펴보겠습니다.


1. 기존 미디어 쿼리 vs 컨테이너 쿼리: 핵심 차이점

📌 미디어 쿼리(Media Queries)의 한계

미디어 쿼리는 뷰포트(Viewport)의 크기에 따라 스타일을 적용합니다. 즉, 화면 전체 크기를 기준으로 요소의 스타일을 변경하는 방식입니다.

@media (max-width: 768px) {
  .card {
    width: 100%;
    font-size: 14px;
  }
}

❌ 문제점:

  • 특정 요소가 아니라 브라우저 전체 크기를 기준으로 스타일이 적용됨
  • 다양한 레이아웃에서 컴포넌트 단위로 조정이 어려움

📌 컨테이너 쿼리(Container Queries)의 등장

컨테이너 쿼리는 개별 요소(컨테이너)의 크기에 따라 스타일을 적용할 수 있도록 도와줍니다. 즉, 요소가 포함된 컨테이너의 크기에 따라 반응형 스타일을 지정하는 방식입니다.

@container (max-width: 600px) {
  .card {
    font-size: 14px;
  }
}

✅ 장점:

  • 컴포넌트 단위로 반응형 스타일 적용 가능
  • 다양한 레이아웃에서도 일관된 스타일 유지 가능
  • 중첩된 구조에서도 효과적

2. CSS 컨테이너쿼리 기본 사용법

🔹 컨테이너 정의하기

컨테이너쿼리를 사용하려면 먼저 container-type을 설정해야 합니다.

.container {
  container-type: inline-size;
  container-name: card-container;
}

  • container-type: inline-size;컨테이너의 가로 크기(width)에 따라 반응형 적용
  • container-name: card-container; → 컨테이너를 특정 이름으로 정의

🔹 컨테이너 크기에 따른 스타일 적용

@container card-container (max-width: 500px) {
  .card {
    font-size: 14px;
    padding: 10px;
  }
}

👉 뷰포트 크기와 관계없이 .card가 포함된 .container 크기에 따라 스타일이 변경됩니다.


3. 컨테이너쿼리 실전 적용법

📌 (1) 카드 레이아웃에서 유연한 반응형 스타일 적용

<div class="container">
  <div class="card">Responsive Card</div>
</div>

.container {
  container-type: inline-size;
}

.card {
  background: #f5f5f5;
  padding: 20px;
  border-radius: 8px;
}

@container (max-width: 400px) {
  .card {
    font-size: 14px;
    padding: 10px;
  }
}

✔️ 컨테이너 크기가 400px 이하일 때 font-sizepadding이 줄어듦


📌 (2) 다단 레이아웃(Grid)에서 유동적인 스타일 적용

<div class="grid-container">
  <div class="item">Item 1</div>
  <div class="item">Item 2</div>
  <div class="item">Item 3</div>
</div>

.grid-container {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 10px;
  container-type: inline-size;
}

@container (max-width: 600px) {
  .item {
    font-size: 14px;
    text-align: center;
  }
}

✔️ 그리드 컨테이너의 크기에 따라 내부 아이템 스타일이 자동 조정됨


4. 컨테이너쿼리 적용 시 고려해야 할 사항

브라우저 지원 여부 확인

현재 컨테이너쿼리는 최신 브라우저(Chrome, Edge, Firefox)에서 지원되며, 일부 구형 브라우저에서는 완전한 지원이 이루어지지 않았습니다.

Can I Use: Container Queries에서 최신 지원 여부를 확인하세요.

레이아웃 구조 설계 시 유연성을 고려

컨테이너쿼리는 개별 요소 기준으로 반응형을 적용하므로, 레이아웃을 설계할 때 컴포넌트 기반으로 스타일을 정의하는 것이 중요합니다.


비교 항목미디어 쿼리컨테이너 쿼리
기준 값뷰포트 크기개별 컨테이너 크기
적용 방식페이지 전체 레이아웃 기준컴포넌트 단위 스타일 적용
유연성낮음 (레이아웃에 의존)높음 (독립적인 컴포넌트 스타일 가능)
적용 사례전체 페이지 반응형재사용 가능한 UI 컴포넌트

👉 컨테이너 쿼리는 UI 컴포넌트 단위에서 반응형 디자인을 더 유연하게 적용할 수 있는 강력한 도구입니다. 미디어 쿼리와 함께 적절히 활용하면 더욱 강력한 반응형 웹 퍼블리싱이 가능합니다.

이 게시물이 얼마나 유용했습니까?

평점을 매겨주세요.

평균 평점 0 / 5. 투표수: 0

지금까지 투표한 사람이 없습니다. 가장 먼저 게시물을 평가해 주세요.

error: 우클릭이 불가능 합니다.