当前位置: 首页 > news >正文

CSS Container Queries:响应式设计的新突破

CSS Container Queries:响应式设计的新突破

什么是 Container Queries?

Container Queries 是 CSS 的一个新特性,允许根据父容器的尺寸来应用样式。

Container Queries vs Media Queries

特性Media QueriesContainer Queries
参考对象视口尺寸父容器尺寸
应用范围全局局部组件
响应粒度页面级别组件级别

基础用法

.container { container-type: inline-size; container-name: card; } @container card (min-width: 400px) { .card-content { display: flex; } }

Container Type

.element { container-type: size; /* 同时关注宽高 */ container-type: inline-size; /* 仅关注行内尺寸 */ container-type: normal; /* 默认,不建立容器 */ }

Container Name

.card { container-type: inline-size; container-name: card-container; } @container card-container (min-width: 500px) { .card-title { font-size: 1.5rem; } }

容器查询单位

@container (min-width: 400px) { .element { font-size: 1cqi; /* 容器宽度的 1% */ padding: 2cqw; /* 容器宽度的 2% */ margin: 3cqh; /* 容器高度的 3% */ } }

实际应用

响应式卡片

.card { container-type: inline-size; container-name: card; } .card-header { font-size: 1rem; } .card-body { padding: 1rem; } @container card (min-width: 400px) { .card { display: flex; } .card-header { font-size: 1.25rem; width: 30%; } .card-body { flex: 1; padding: 1.5rem; } }

组件级响应式

.avatar { width: 48px; height: 48px; border-radius: 50%; } .user-info { container-type: inline-size; container-name: user-info; } @container user-info (min-width: 300px) { .avatar { width: 64px; height: 64px; } .username { font-size: 1.1rem; font-weight: bold; } }

组合使用

.card { container-type: inline-size; container-name: card; } @container card (min-width: 400px) and (max-width: 600px) { .card-content { display: grid; grid-template-columns: 1fr 1fr; } } @container card (min-width: 601px) { .card-content { display: grid; grid-template-columns: 1fr 1fr 1fr; } }

嵌套容器

.layout { container-type: inline-size; container-name: layout; } .card { container-type: inline-size; container-name: card; } @container layout (min-width: 800px) { .cards { display: grid; grid-template-columns: 1fr 1fr; } } @container card (min-width: 300px) { .card-title { font-size: 1.25rem; } }

浏览器兼容性

浏览器支持情况
Chrome✅ 105+
Firefox✅ 119+
Safari✅ 16.4+
Edge✅ 105+

最佳实践

1. 合理命名容器

.main-content { container-type: inline-size; container-name: main-content; }

2. 优先使用容器查询

/* 先定义默认样式 */ .card { padding: 1rem; } /* 再定义容器查询样式 */ @container (min-width: 400px) { .card { padding: 1.5rem; } }

3. 结合媒体查询使用

/* 全局响应式 */ @media (min-width: 1200px) { .page-container { max-width: 1200px; } } /* 组件响应式 */ .card { container-type: inline-size; } @container (min-width: 300px) { .card { display: flex; } }

总结

Container Queries 为响应式设计带来了新的可能性:

  1. 组件级响应式:根据父容器尺寸调整样式
  2. 更高的复用性:组件可以在不同场景自适应
  3. 更清晰的代码:将响应式逻辑封装在组件内部
  4. 更好的用户体验:更精细的响应式控制

掌握 Container Queries,让你的组件更加灵活和强大。

http://www.jsqmd.com/news/879563/

相关文章:

  • AdapFair:基于归一化流与Wasserstein距离的动态公平性框架解析
  • 在ubuntu20.04上快速配置taotoken的python开发环境
  • 2026年5月常德安乡地区黄金回收白银铂金回收门店推荐TOP1 地址及联系方式 - 检测回收中心
  • 战略分类中从在线学习错误边界到PAC保证的理论转换与算法实现
  • 不关Secure Boot!用mokutil永久解决Linux内核模块签名问题(附自动化脚本)
  • 2026年5月德阳广汉地区黄金回收白银铂金回收门店推荐TOP1 地址及联系方式 - 检测回收中心
  • Jupyter notebook 最简安装方法
  • 2026年5月郴州永兴地区黄金回收白银铂金回收门店推荐TOP1 地址及联系方式 - 检测回收中心
  • 2026年5月北京地区黄金回收白银铂金回收门店推荐TOP1 地址及联系方式 - 检测回收中心
  • 2026年5月百色隆林地区黄金回收白银铂金回收门店推荐TOP1 地址及联系方式 - 五金回收
  • 技术博客写作:分享知识,提升影响力
  • 2026年5月海南省东方地区黄金回收白银铂金回收门店推荐TOP1 地址及联系方式 - 诚信金利回收
  • 2026年5月安顺地区黄金回收白银铂金回收门店推荐TOP1 地址及联系方式 - 五金回收
  • 跨链桥接:多链资产转移实现
  • 2026年5月湖州吴兴地区黄金回收白银铂金回收门店推荐TOP1 地址及联系方式 - 诚信金利回收
  • 2026年5月汉中略阳地区黄金回收白银铂金回收门店推荐TOP1 地址及联系方式 - 诚信金利回收
  • 远程工作技巧:高效协作与生活平衡
  • 单晶多晶的电子衍射标定
  • 2026年5月百色田东地区黄金回收白银铂金回收门店推荐TOP1 地址及联系方式 - 五金回收
  • 2026年5月百色那坡地区黄金回收白银铂金回收门店推荐TOP1 地址及联系方式 - 五金回收
  • 2026年5月海南省乐东地区黄金回收白银铂金回收门店推荐TOP1 地址及联系方式 - 诚信金利回收
  • 2026年5月常德地区黄金回收白银铂金回收门店推荐TOP1 地址及联系方式 - 检测回收中心
  • 在Node.js后端服务中接入Taotoken实现异步AI对话功能
  • 2026年5月贵阳花溪地区黄金回收白银铂金回收门店推荐TOP1 地址及联系方式 - 诚信金利回收
  • 整合OpenClaw与Taotoken,构建高效自动化AI智能体工作流
  • 2026年5月百色平果地区黄金回收白银铂金回收门店推荐TOP1 地址及联系方式 - 五金回收
  • 2026年5月郴州资兴地区黄金回收白银铂金回收门店推荐TOP1 地址及联系方式 - 检测回收中心
  • 抖音下载器:5分钟掌握批量下载无水印视频的终极指南
  • 中小团队如何利用多模型聚合平台优化 AI 应用开发成本
  • 2026年5月海南省临高地区黄金回收白银铂金回收门店推荐TOP1 地址及联系方式 - 诚信金利回收