当前位置:首页 > 文章列表 > 文章 > 前端 > CSS cqi 和 cqb 单位分别跟随哪个容器轴

CSS cqi 和 cqb 单位分别跟随哪个容器轴

来源:17golang原创 2026-10-05 15:05:32 0浏览 收藏

CSS 的 cqi 和 cqb 都是容器查询长度单位,但它们看的不是固定的视口宽高:cqi 等于合格查询容器 inline-size 的 1%,cqb 等于其 block-size 的 1%。在常见的横向书写模式下,inline 轴通常接近水平方向、block 轴通常接近垂直方向;一旦使用竖排或改变 writing-mode,这两个单位仍然跟随逻辑轴。

要点速览
  • cqi 看 inline-size,cqb 看 block-size,不能简单记成 width 与 height。
  • 要让单位稳定工作,先给祖先元素声明尺寸查询容器,例如 container-type: inline-size。
  • 无合格容器时存在 small viewport unit 回退;需要固定物理方向时,优先重新判断是否该用 cqw 或 cqh。

cqi 和 cqb 先看逻辑轴,不要先看 width 和 height

可以把查询容器想成一个有两条逻辑轴的参照框。inline-size 描述内容沿书写方向展开的尺寸,block-size 描述与它垂直的尺寸。因此,2cqi 表示参照容器 inline-size 的 2%,2cqb 表示 block-size 的 2%。它们的价值在于组件换到不同宽高比或不同书写模式的容器中时,比例关系仍按逻辑方向成立。

CSS 查询容器中 inline-size、block-size、cqi、cqb 与 writing-mode 的逻辑轴关系说明图
图1:cqi 与 cqb 的逻辑轴说明图,展示单位参照 inline-size 和 block-size 的关系。

下面的例子用逻辑属性把这种关系写出来。代码中的注释只解释关键边界,避免把单位误读成视口单位。

.card {
  /* 让后代按卡片的内联尺寸参与容器查询计算 */
  container-type: inline-size;
  inline-size: min(100%, 42rem);
  padding: 2cqi 3cqi;
}

.card__title {
  /* cqi 随 inline-size 变化,cqb 随 block-size 变化 */
  font-size: clamp(1rem, 1rem + 1cqi, 2rem);
  margin-block-end: 1cqb;
}

建立查询容器后,后代单位才有明确参照

container-type: inline-size 表示这个元素可以作为后代尺寸查询的参照。若需要同时约束内联和块尺寸,可以使用 container-type: size,但也要评估尺寸包含关系和布局约束。container 简写适合同时给容器命名并声明类型,例如 container: article / inline-size。

这里要区分“单位写在谁身上”和“参照对象是谁”:单位通常写在后代标题、间距或组件元素上,实际百分比基准来自最近的合格查询容器,而不是该元素自身,也不是必然来自最外层 viewport。

CSS container-type、查询容器、后代 cqi cqb 与 small viewport fallback 的边界说明图
图2:查询容器与回退边界结构图,说明无合格容器时不要把 cqi/cqb 当成固定视口单位。

writing-mode 改变的是轴的方向,不改变 cqi 与 cqb 的职责

在默认横排模式中,很多人会把 inline-size 近似当作宽度、block-size 近似当作高度,这只是便于入门的观察。对于 writing-mode: vertical-rl 等场景,文本流向变化后,inline 轴和 block 轴的物理方向也会变化;cqi 依然跟 inline-size,cqb 依然跟 block-size。使用 margin-inline、padding-block 这类逻辑属性,通常比把单位硬绑到 left、top、width、height 更不容易出错。

需求优先观察容易混淆的点
随内容横向展开inline-size / cqi不要默认等同于 viewport width
随内容纵向堆叠block-size / cqb竖排模式下物理方向可能改变
取两条逻辑轴较小值cqmin它不是固定的 cqi 或 cqb
取两条逻辑轴较大值cqmax应结合组件的最小可读尺寸使用

无合格容器时,先查回退再查数值

如果元素所在位置没有可用的查询容器,容器查询长度单位不会凭空得到一个普通父元素的尺寸。规范定义了按对应轴回退到 small viewport unit 的行为,所以实际效果可能与预期的卡片比例不同。排查时先确认祖先是否声明了合适的 container-type,再确认书写模式和容器边界,最后才调整数值。

如果设计目标明确是视口宽度或视口高度,应直接考虑 vw、vh 或相应的视口单位;如果目标是物理宽高而不是逻辑轴,也可以评估 cqw 与 cqh。不要为了让数值“看起来对”而给 cqi/cqb 加固定像素补偿。

相关问题

cqi 能不能直接替代 vw?

不能。cqi 以查询容器的 inline-size 为基准,vw 以视口宽度为基准;组件嵌套在窄容器时,两者结果可能明显不同。

cqb 为什么在横排卡片中看起来像高度比例?

因为默认横排模式的 block 轴通常接近垂直方向,但这是书写模式下的物理表现,不是 cqb 永远绑定 height。

只有 container-type: inline-size 时能写 cqb 吗?

可以写,但要先确认布局和浏览器实现对块轴参照的实际条件;若文章只需要沿 inline 轴缩放,优先只使用 cqi,避免让 cqb 承担没有明确参照的尺寸逻辑。

版本声明
本文转载于:17golang原创 如有侵犯,请联系study_golang@163.com删除
Go 结构体输入校验怎么把规范化和错误收集放在一次处理里Go 结构体输入校验怎么把规范化和错误收集放在一次处理里
上一篇
Go 结构体输入校验怎么把规范化和错误收集放在一次处理里
tapaim属于工具还是射击游戏?页面分类标签、FPS靶场定位与使用边界说明
下一篇
tapaim属于工具还是射击游戏?页面分类标签、FPS靶场定位与使用边界说明
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    543次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    516次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    500次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    485次学习
查看更多
AI推荐
  • PubMedQA数据集详解:生物医学问答基准、功能与应用指南
    PubMedQA
    深入了解PubMedQA生物医学问答数据集,涵盖其核心功能、使用方法及在临床决策、药物研发等场景的应用,助力提升NLP模型性能。
    343次使用
  • H2O EvalGPT:开源LLM大模型评估与排行榜工具
    H2O EvalGPT
    H2O EvalGPT是H2O.ai推出的开源LLM评估平台,提供详细的大模型性能排行榜、行业特定基准测试及A/B测试功能,助您快速选择最适合项目的高性能大语言模型。
    398次使用
  • LMArena是什么?伯克利AI模型评估平台使用指南与功能解析
    LMArena
    LMArena是加州大学伯克利分校推出的AI模型匿名评测平台。通过盲测投票机制,用户可对比不同大模型回答并生成实时排行榜,助力开发者优化模型及用户选择最佳AI工具。
    393次使用
  • 斯坦福HELM:大语言模型Holistic Evaluation整体评估框架详解
    HELM
    深入了解斯坦福推出的HELM(Holistic Evaluation of Language Models)大模型评测体系。本文解析其核心功能、安装配置步骤及应用场景,涵盖准确性、公平性、鲁棒性等多维度指标,助力开发者全面优化语言模型性能。
    356次使用
  • MMBench详解:多模态大模型基准测试、功能特点与使用指南
    MMBench
    MMBench是由上海人工智能实验室等机构联合推出的多模态基准测试平台,提供细粒度能力评估、大规模数据集及VLMEvalKit工具。本文详细介绍其核心功能、安装使用方法及应用场景,助力开发者全面评估多模态模型性能。
    182次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议 和 隐私政策
返回登录
  • 重置密码