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

容器查询单位(cqw, cqh, cqi, cqb, cqmin, cqmax)

容器查询单位相对于容器尺寸计算,而非视口,让组件内部尺寸随容器自适应。

单位定义

单位全称计算基准
cqwContainer Query Width容器宽度的1%
cqhContainer Query Height容器高度的1%
cqiContainer Query Inline容器内联尺寸的1%
cqbContainer Query Block容器块级尺寸的1%
cqminContainer Query Minmin(cqi, cqb)的1%
cqmaxContainer Query Maxmax(cqi, cqb)的1%

单位详解

cqw与cqh

CSS
.container {
  container-type: size;
  width: 400px;
  height: 300px;
}

.child {
  width: 50cqw;   /* 400px × 50% = 200px */
  height: 100cqh; /* 300px × 100% = 300px */
}

cqi与cqb

内联和块级方向取决于书写模式。

CSS
/* 水平书写模式(默认) */
.container {
  container-type: inline-size;
  writing-mode: horizontal-tb;
}

.child {
  width: 50cqi;  /* 内联方向=宽度,即容器宽度的50% */
  height: 50cqb; /* 块级方向=高度,即容器高度的50% */
}

/* 垂直书写模式 */
.container-vertical {
  writing-mode: vertical-rl;
  container-type: inline-size;
}

.child-vertical {
  width: 50cqi;  /* 内联方向=高度,即容器高度的50% */
  height: 50cqb; /* 块级方向=宽度,即容器宽度的50% */
}

cqmin与cqmax

CSS
.container {
  container-type: size;
  width: 400px;
  height: 300px;
}

.square-box {
  /* 取较小值的百分比,保持正方形不溢出 */
  width: 100cqmin;  /* min(400, 300) × 100% = 300px */
  height: 100cqmin; /* 300px × 300px 正方形 */
}

.expand-box {
  /* 取较大值的百分比 */
  width: 50cqmax;   /* max(400, 300) × 50% = 200px */
}

使用前提

容器必须声明container-type

CSS
/* cqw/cqh需要size类型 */
.full-container {
  container-type: size;  /* 查询宽度和高度 */
}

/* cqi只需inline-size类型 */
.inline-container {
  container-type: inline-size;  /* 只查询内联尺寸 */
}
单位所需container-type
cqwsize
cqhsize
cqiinline-sizesize
cqbsize
cqminsize
cqmaxsize

实际应用

自适应字体大小

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

.card__title {
  /* 字体随容器宽度缩放 */
  font-size: 5cqi;  /* 容器宽度的5% */
}

/* 容器400px → 字体20px */
/* 容器200px → 字体10px */

自适应间距

CSS
.panel-container {
  container-type: size;
}

.panel {
  padding: 2cqw 3cqh;  /* 水平间距基于宽度,垂直间距基于高度 */
}

保持比例的元素

CSS
.media-container {
  container-type: size;
}

.aspect-box {
  /* 基于容器最小边保持比例 */
  width: 80cqmin;
  height: 80cqmin;
  /* 总是正方形,且不超出容器 */
}

响应式图标尺寸

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

.icon {
  width: 10cqi;
  height: 10cqi;
  /* 图标随容器缩放 */
}

与视口单位对比

单位类型视口单位容器单位
宽度vwcqw
高度vhcqh
内联vicqi
块级vbcqb
最小vmincqmin
最大vmaxcqmax

复合计算

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

/* 基础尺寸 + 容器相对值 */
.title {
  font-size: calc(16px + 2cqi);
}

/* 固定比例计算 */
.image {
  width: 100cqi;
  height: calc(100cqi * 0.75);  /* 4:3比例 */
}

注意事项

容器单位需要容器实际有明确尺寸,无尺寸容器可能导致单位为0。

CSS
/* 问题:无尺寸容器 */
.auto-container {
  container-type: inline-size;
  width: auto;  /* 尺寸不明确 */
}

.child {
  width: 50cqi;  /* 可能为0 */
}

要点总结

  1. cqw/cqh:容器宽/高度的1%
  2. cqi/cqb:内联/块级尺寸的1%,适应书写模式
  3. cqmin/cqmax:取较小/较大尺寸的1%
  4. 使用单位前必须声明container-type
  5. cqi只需inline-size,其他需要size类型

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

← 上一篇 容器查询中的容器类型(inline-size, size, normal)
下一篇 → 容器查询基础概念
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

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

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