前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
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 query units vs viewport units
CSS响应式设计

cqw 和 vw 各按谁的尺寸计算,组件该用哪个?

vw 按视口宽度计算,cqw 按最近合格查询容器的宽度计算。可复用组件里的尺寸常用容器单位,但要用 clamp() 等限制极端值,避免窄侧栏里字体过小。

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

先确定长度的参照物

  1. vw相对视口宽度
  2. cqw相对最近合格宽度查询容器
  3. cqi相对查询容器的行内尺寸

容器单位的基准与某条命名 @container 规则并非自动绑定。

核心回答

先记住这个答案

1vw 是视口宽度的百分之一,1cqw 是最近合格宽度查询容器宽度的百分之一。卡片在主栏和侧栏复用时,cqw 能让内部间距随卡片空间变化,而 vw 在同一屏上给两张卡相同的视口基准。cqi 按行内轴计算,在竖排书写模式下未必等于物理宽度。找不到合格容器时,容器单位会退回对应的小视口单位。

  • 1vw 是视口宽度的百分之一
  • 1cqw 是查询容器宽度的百分之一
  • 容器单位适合组件局部伸缩
  • 找不到容器时有小视口回退

侧栏卡片为什么不适合纯视口单位

桌面视口很宽,但侧栏只有一小块空间。若给卡片标题写 font-size: 2vw,标题可能相对侧栏过大;主栏里同样的卡片却又显得偏小。容器单位让它跟实际可用空间走。

间距随卡片宽度变化CSS
.card { container-type: inline-size; }
.card__content { padding: clamp(12px, 3cqw, 24px); }
.card__title { font-size: clamp(18px, 5cqw, 28px); }

卡片变宽时内边距和标题会平滑增长;clamp() 给它们设了下限与上限,避免极窄或极宽容器产生难读的尺寸。纯 cqw 字体可能随容器过度缩小,不应无条件使用。 容器需要在目标元素的祖先上设置。若把 container-type 写到标题自己身上,标题的 cqw 不会因此直接按自己的宽度计算。

选择基准先看设计意图

整页的全屏装饰或与窗口宽度成比例的边距可用 vw。组件内的图片尺寸、卡片间距若要随父容器变化,可用 cqw 或 cqi。若需求是固定可读尺寸,普通 rem 可能更合适。

还要检查轴向。cqh 需要能查询块轴尺寸的合格容器;只设 inline-size 类型并不等于同时提供高度基准。单位选错时页面仍可能渲染,但回退到小视口尺寸会让结果看起来“有值却不对”。

计算一下更容易记:视口宽 1200px 时,2vw 始终是 24px;同一页面里主栏卡片宽 600px、侧栏卡片宽 240px,若各自是最近的宽度查询容器,2cqw 分别是 12px 和 4.8px。这解释了为什么单独用容器单位可能把侧栏文字压得太小,也解释了 clamp() 的下限不是装饰,而是可读性保护。

回答前,多想一步

容易答错的地方

认为 cqw 总等于卡片自己的宽度
它找的是目标元素的合格祖先容器。更近的容器出现后,基准也会变化。
认为容器单位一定比 vw 好
全屏效果本来就应跟视口变化;容器单位适合局部组件,不是所有尺寸的替代品。
试着用自己的话回答

面试官还会怎么问?

cqw 找不到容器会怎样?

会退回到相应的小视口单位,而不是变成零。需要稳定外观时给普通长度回退。

cqw 与 cqi 有什么区别?

cqw 指物理宽度,cqi 指书写模式中的行内尺寸;横排常一致,竖排可能不同。

为什么要给字体加 clamp()?

组件可能被放进极窄侧栏或宽屏主栏,给字号上下限能守住可读性。

从一道题,走向一组知识

把知识连起来

响应式设计

逻辑 margin 和 padding 写百分比时,基准是什么?

逻辑属性百分比的基准规则与容器单位不同,不能类推。

响应式设计

移动端的 svh、lvh、dvh 应该怎么选?

动态视口单位处理移动浏览器工具栏变化。

参考资料

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

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

本题目录
  1. 先记住这个答案
  2. 侧栏卡片为什么不适合纯视口单位
  3. 选择基准先看设计意图
  4. 容易答错的地方
  5. 面试官还会怎么问
  6. 把知识连起来
读懂,再试着讲出来

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

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