全部学科
NodeJS全栈
nodejs
Python全栈
python
小程序首页
📅 2026-05-16 5 分钟 ✍️ juanwangdev

容器查询基础概念

容器查询(Container Queries)让组件能够根据父容器尺寸自适应样式,突破传统媒体查询的视口限制。

什么是容器查询

传统响应式设计基于视口宽度,容器查询基于父容器宽度。

CSS
媒体查询:视口宽度 → 元素样式变化
容器查询:容器宽度 → 子元素样式变化

核心解决的问题

传统媒体查询的局限

HTML
/* 媌体查询:基于视口 */
@media (min-width: 768px) {
  .card {
    display: flex;
  }
}

问题:同一组件在不同容器中表现不一致。

CSS
<!-- 宽容器中:卡片横向布局 -->
<div class="wide-container">
  <div class="card">...</div>
</div>

<!-- 窄容器中:期望纵向布局,但视口宽度不变 -->
<div class="sidebar">
  <div class="card">...</div>  <!-- 仍然横向布局,不合理 -->
</div>

容器查询的优势

HTML
/* 容器查询:基于容器 */
.card-container {
  container-type: inline-size;
}

@container (min-width: 400px) {
  .card {
    display: flex;
  }
}

组件根据所在容器自动调整样式。

基本工作流程

CSS
1. 定义容器 → container-type
2. 编写查询 → @container
3. 应用样式 → 响应式规则

最简示例

text
<div class="card-container">
  <div class="card">
    <img class="card__image" src="photo.jpg">
    <div class="card__content">
      <h3 class="card__title">标题</h3>
      <p class="card__text">描述文字</p>
    </div>
  </div>
</div>
text
/* 步骤1:声明容器 */
.card-container {
  container-type: inline-size;
}

/* 步骤2:容器查询 */
.card {
  display: block;
}

@container (min-width: 300px) {
  .card {
    display: flex;
    gap: 16px;
  }

  .card__image {
    width: 120px;
  }
}

@container (min-width: 500px) {
  .card__title {
    font-size: 24px;
  }

  .card__text {
    font-size: 16px;
  }
}

关键术语

术语说明
Container被查询的父元素
Containment元素与外部隔离的限制
Query Container设置了container-type的元素
Container Query基于容器尺寸的条件样式

与媒体查询对比

特性媒体查询容器查询
查询对象视口容器
响应粒度页面级组件级
复用性受限
设计系统不友好天然适配

要点总结

  1. 容器查询基于父容器尺寸而非视口尺寸
  2. 核心价值:组件级响应式设计
  3. 基本流程:定义容器 → 编写查询 → 应用样式
  4. 解决传统媒体查询的组件复用问题

📝 发现内容有误?点击此处直接编辑

← 上一篇 容器查询单位(cqw, cqh, cqi, cqb, cqmin, cqmax)
下一篇 → 容器查询实战案例:响应式卡片布局
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库