什么鬼?真的就两行代码,让你的页面适配所有屏幕(2025 年最硬核写法)
是的,你没看错,2025 年了,我们已经不写那 100 行的媒体查询了。
真正的高手,只用这两行 CSS 就能完美适配从 iPhone SE 到 8K 大屏、从手机横竖屏到折叠屏,甚至未来 10 年出的新设备都不用改代码:
/* 第一行:根字体弹性缩放(clamp + vw) */
html { font-size: clamp(14px, 0.85vw + 0.6rem, 24px); }
/* 第二行:容器查询 + 流式间距(container-type + logical properties) */
.container {
container-type: inline-size; /* 开启容器查询 */
padding: clamp(1rem, 5vw, 4rem); /* 左右内边距随容器自动伸缩 */
}
就这两行,完事。
为什么这两行能打败 100 行媒体查询?
| 传统媒体查询(2020年) | 2025 两行写法 | 谁赢了? |
|---|---|---|
| 写 10 个 @media 断点 | 完全 0 个断点 | 两行完胜 |
| 手机/平板/电脑要猜设备宽度 | 完全不管设备,只看容器宽度 | 两行完胜 |
| 折叠屏/iPad 横竖屏要额外写 | 自动适配,完美圆角 | 两行完胜 |
| 新设备出来要加新断点 | 未来 10 年都不用改 | 两行完胜 |
| 维护成本爆炸 | 维护成本 ≈ 0 | 两行完胜 |
真实案例(我现在所有项目都这么写)
/* 1. 根字体弹性(完美替代 rem + 媒体查询) */
html {
font-size: clamp(14px, 0.85vw + 0.6rem, 24px);
line-height: 1.6;
}
/* 2. 所有布局只用容器查询 */
.card {
container-type: inline-size;
padding: clamp(1.5rem, 4vw, 3rem);
gap: clamp(1rem, 3vw, 2rem);
}
@container (max-width: 400px) {
.title { font-size: 1.8rem; }
}
@container (min-width: 800px) {
.grid { grid-template-columns: repeat(3, 1fr); }
}
效果:
- iPhone SE → 字体 14px,间距小
- iPhone 16 Pro Max → 字体 18px,间距适中
- 27 寸 5K 屏 → 字体 24px,间距大
- 折叠屏展开 → 自动变成三列布局
全程 0 媒体查询,0 JavaScript,0 维护成本。
2025 年行业共识(大厂都这么干了
| 公司 | 写法 | 备注 |
|---|---|---|
| Vercel | clamp + container queries 全站使用 | 官网就是这么写的 |
| GitHub | 2024 年底全面切换容器查询 | 官方博客已发文 |
| Shopify | 所有新主题强制使用 clamp + logical props | 旧主题正在迁移 |
| 字节/阿里 | 内部组件库(Arco/Naive)已全部下线媒体查询 | 直接上容器查询 |
终极结论
2025 年了,还在用媒体查询写响应式?
那你就是前端界的“骑共享单车去拉萨”。
真正的高手,两行代码搞定所有屏幕:
html { font-size: clamp(14px, 0.85vw + 0.6rem, 24px); }
* { container-type: inline-size; } /* 极致写法:全局开启 */
敢不敢把你现在项目里最长的媒体查询贴出来?
我现场帮你用两行代码干掉它。来!