前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
首页程序员面试题库CSS container-type 容器查询 设置方法
CSS响应式设计

要让元素成为尺寸查询容器,container-type 该怎么设?

做尺寸容器查询,通常在组件外壳写 container-type: inline-size。它让后代能够查询外壳的行内尺寸,同时通过尺寸隔离避免“子项样式改变容器宽度”形成循环。

前端进阶之旅 · 一题精讲更新于 2026.09.29
CSS#响应式设计#容器化
先看核心答案读代码示例
理解线索

查询尺寸必须有稳定基准

  1. normal默认值,不启用尺寸查询
  2. inline-size启用行内轴尺寸查询与对应隔离
  3. size启用双轴尺寸查询并施加更强尺寸隔离

inline-size 对应书写模式的行内轴,在横排文字里通常表现为宽度。

核心回答

先记住这个答案

尺寸查询需要先指定查询容器,最常用的是 container-type: inline-size。它让浏览器能用该元素的行内尺寸判断后代的 @container 规则,并避免后代样式反过来影响这个被查询的尺寸。size 同时处理两个轴,但尺寸隔离更强,若容器高度原本由内容撑开,可能需要额外给高度。默认的 normal 不支持尺寸查询。

  • inline-size 是常用的宽度查询类型
  • size 同时支持两个轴的尺寸查询
  • normal 不提供尺寸查询能力
  • 查询样式作用于容器的后代

创建卡片查询容器

卡片放在主栏、侧栏时得到的宽度不同。把卡片外壳设为容器,内部详情区即可按这张卡自身的空间决定单栏或双栏,不受浏览器窗口有多宽直接支配。

按外壳宽度切换内部布局CSS
.card { container-type: inline-size; }
.card__details { display: block; }
@container (min-width: 32rem) {
  .card__details { display: grid; grid-template-columns: 1fr 1fr; }
}

当 .card 的行内尺寸达到阈值,它的后代 .card__details 变成两列。把 container-type 写到 .card__details 自己身上,不能让它直接根据自身宽度改变自身样式。 inline-size 是逻辑轴概念。在常见横排文字中是宽度;竖排书写模式里则对应另一物理方向。讨论容器查询时应说行内轴,而不是无条件说水平宽度。

为什么还有 size

如果组件确实要同时根据容器的行内尺寸和块尺寸判断,可以选 size。但它对两个轴都有尺寸隔离:容器块尺寸不再直接由后代内容决定。若原本依靠内容把盒子撑高,改成 size 后可能出现高度问题。

优先用满足需求且影响最小的 inline-size。需要命名时可加 container-name 或使用 container 简写;名字便于选中正确祖先,但不会单独开启尺寸查询。

inline-size 引入的尺寸隔离还有一个直观后果:容器自己的行内尺寸不能再靠后代内容反推。它通常由父布局分配宽度,所以普通卡片用起来顺手;但若外层本来依赖“内容有多宽,盒子就有多宽”,加上容器类型后可能改变原先的收缩效果。给包装层设容器、让实际内容在其后代里响应,往往比直接给需要自适应宽度的元素设容器更稳。

回答前,多想一步

容易答错的地方

只写 container-name 就查尺寸
名称只筛选祖先。尺寸查询还需要容器具备相应的 container-type。
把 size 当成无副作用的加强版
双轴尺寸隔离会影响内容撑开容器的行为。只按宽度响应时,用 inline-size 通常更合适。
试着用自己的话回答

面试官还会怎么问?

normal 的容器还能做样式查询吗?

样式查询与尺寸查询的要求不同。做自定义属性的样式查询时,普通非空元素也可成为候选样式容器。

为什么查询没命中?

依次检查目标是否是容器后代、实际行内尺寸是否达到阈值、是否存在更近的合格容器。

能给容器自身按其宽度改样式吗?

尺寸查询主要作用于后代,不能让容器用自己的尺寸查询直接决定自身样式,避免循环依赖。

从一道题,走向一组知识

把知识连起来

响应式设计

容器查询和媒体查询分别解决什么问题?

容器查询的基本用途是按组件可用空间改变后代布局。

响应式设计

容器查询可以嵌套吗,cqw 到底参考哪一层?

嵌套容器时需弄清哪一层是当前的查询基准。

参考资料

  • CSS:响应式设计参考资料

示例用于理解所注明的运行环境与边界;延伸学习可结合原文中的更多案例。

本题目录
  1. 先记住这个答案
  2. 创建卡片查询容器
  3. 为什么还有 size
  4. 容易答错的地方
  5. 面试官还会怎么问
  6. 把知识连起来
读懂,再试着讲出来

先看核心答案,再读代码。最后展开追问,检查自己有没有遗漏边界。

试着回答追问
浏览全部面试题理解原理,也关注真实的使用场景。回到顶部 ↑