CSS Container Queries 实战指南

··

什么是 Container Queries?

Container Queries 允许你基于容器的大小而不是视口大小来应用样式。这是实现真正的组件级响应式的关键。

基本语法

/* 定义容器 */
.card-container {
  container-type: inline-size;
  container-name: card;
}

/* 容器查询 */
@container card (min-width: 400px) {
  .card {
    display: grid;
    grid-template-columns: 200px 1fr;
  }
}

实际案例

响应式卡片组件

<div class="card-container">
  <div class="card">
    <img src="photo.jpg" alt="Photo" />
    <div class="card-content">
      <h2>标题</h2>
      <p>描述文字</p>
    </div>
  </div>
</div>
.card-container {
  container-type: inline-size;
}

.card {
  display: flex;
  flex-direction: column;
  gap: 1rem;
}

@container (min-width: 350px) {
  .card {
    flex-direction: row;
  }
  
  .card img {
    width: 150px;
    height: 150px;
  }
}

@container (min-width: 600px) {
  .card {
    padding: 2rem;
  }
  
  .card-content h2 {
    font-size: 1.5rem;
  }
}

Container Queries vs Media Queries

特性Container QueriesMedia Queries
基于容器大小视口大小
组件复用
浏览器支持较新广泛

浏览器兼容性

现代浏览器(Chrome 105+, Safari 16+, Firefox 110+)均已支持 Container Queries。

总结

Container Queries 让组件真正变得独立和可复用,是构建设计系统的理想选择。