container queries 是 CSS 机制而非 HTML 特性,需在父元素 CSS 中显式声明 container-type(如 inline-size)并在子元素中用 @container 查询,仅对直接子代生效,且依赖浏览器支持(Chrome 105+ 等)。

container queries 在 HTML 中根本不存在
HTML 本身不支持 真正起作用的是 CSS 的 关键就两步:设 示例: 常见失效原因几乎都和容器“没被识别”有关,不是语法错,而是链路断了。 不是“谁更好”,而是“查谁的尺寸”。这个区别直接影响组件封装性和复用逻辑。 简单说:想让组件“自己看自己占多大地方”,就用 真正难的不是写法,是判断哪个父级该设 container queries,它不是 HTML 标签或属性,而是 CSS 的一种查询机制。你不能在 container="size",也不能靠改 HTML 结构“开启”容器查询。@container 规则 + 元素的容器类型声明(通过 container-type 或 container-name),而这个声明必须加在**父级元素的 CSS 样式里**,不是 HTML 属性。怎么让某个 div 成为 container queries 的容器
container-type,再在子元素里用 @container 查询。缺一不可,顺序不能反。
container-type 必须显式设置为 inline-size(最常用)或 size;normal 不行,不触发查询display: grid,也得单独加 container-type: inline-size
container-name: card,方便子元素精准匹配 @container card (min-width: 400px)
.card {
container-type: inline-size;
container-name: card;
}
.card h2 {
font-size: 1rem;
}
@container card (min-width: 400px) {
.card h2 {
font-size: 1.25rem;
}
}
为什么写了 @container 却没效果
container-type —— 这是最高频错误,CSS 文件里漏了这行,整个查询就静默失败contain: layout paint 等强隔离属性,但没配 container-type,二者不等价0 或未脱离文档流(比如 display: contents 或 visibility: hidden),导致无法测量@container 但浏览器不支持:Chrome 105+、Firefox 110+、Safari 16.4+,旧版 Safari 尤其容易误判 标签里写了 @container,但该 没插入 DOM 或被动态移除container queries 和 media queries 的核心区别在哪
media queries 查的是**视口宽度**,同一个组件在不同页面布局下响应行为完全一样@container 查的是**父容器宽度**,同一组件嵌在窄 sidebar 和宽 main 区域里,能各自适配container-name 分层)orientation 或 prefers-color-scheme 这类媒体特性,只支持尺寸与块轴相关条件@container;想让它“看整个屏幕”,还是 @media。container-type——设浅了,子组件查不到;设深了,破坏布局语义,还可能意外截断布局上下文。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











