媒体查询必须配合正确的 viewport 元标签才能生效,否则在移动端基本无效;推荐使用 min-width 实现移动优先,搭配 flex 或 grid 布局,并约束图片和容器尺寸。

媒体查询必须配合正确的 viewport 才能生效
没加 <meta name="viewport" content="width=device-width, initial-scale=1">,@media 规则在移动端基本等于摆设。iOS Safari 和主流安卓 WebView 会默认以 980px 宽度渲染页面,max-width: 768px 这类断点永远不触发。
常见错误包括:width=device_width(下划线错写)、initial-scale 缺失、标签放在 里或 靠后位置导致闪屏。它不是“锦上添花”,而是媒体查询能工作的前提。
媒体查询中的 min-width 比 max-width 更可靠
用 @media (min-width: 768px) 实现“移动优先”是当前最稳的写法。基础样式默认适配小屏,大屏才叠加增强规则——避免遗漏默认状态,也减少覆盖冲突。
而 max-width 写法容易陷入“补丁式维护”:每加一个新设备尺寸,就得新增一条 @media (max-width: xxx),断点一多就互相打架;更麻烦的是,max-device-width 已被废弃,一律用 max-width(查的是视口宽度,不是物理屏幕)。
- 推荐断点:320px、480px、768px、1024px、1200px —— 按布局实际变化点设,不按设备型号硬套
- 横竖屏需显式判断:
@media (min-width: 768px) and (orientation: landscape),不能只靠宽度 - 高度敏感组件(如弹窗、表单)可加
@media (max-height: 600px)单独处理
媒体查询本身不排版,真正起作用的是它触发的 CSS 布局模块
媒体查询只是“开关”,真正完成自适应排列的是它后面启用的 display: flex 或 display: grid。没有这些,光靠 @media 改个 font-size 或 padding,解决不了结构坍塌问题。
比如导航栏在手机上垂直堆叠、平板横排,靠的是:
将调研报告、方案对比、数据分析、需求梳理、会议纪要、设计说明、代码评审、学习笔记等任务产物输出为可在浏览器直接打开的单文件 HTML,替代 Markdown 作为最终交付物。Markdown 在信息密度、视觉清晰度和可分享性上已跟不上 AI 产物的丰富度,HTML 能同时承载排版、表格、SVG 等。
.nav { display: flex; flex-direction: column; }
@media (min-width: 768px) {
.nav { flex-direction: row; }
}
注意:flex 和 grid 在老安卓 WebView(如 Android 4.4 KitKat)中支持不全,若需兼容,得加 -webkit- 前缀或降级为 float + calc() 方案。
图片和容器的响应式处理常被忽略,但直接影响布局稳定性
即使媒体查询和 flex 都写对了,一张没约束的 <img> 仍会让整个布局在小屏上崩掉——它会撑破父容器、触发横向滚动条。
必须加这两行:
img {
max-width: 100%;
height: auto;
}
此外,容器本身也要防溢出:.container { width: 100%; max-width: 1200px; margin: 0 auto; }。如果用 rem 做字体或间距,别忘了动态设置根字号(JS 计算或 font-size: 4.266667vw),否则 rem 在不同屏幕下还是固定像素感。
最后提醒一句:Chrome DevTools 的 Device Toolbar 只模拟 DPR,真机上 window.devicePixelRatio 才是真实值,别只靠模拟器调。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










