响应式布局依赖CSS媒体查询、流动单位和弹性容器,且必须添加标签,否则移动端无法正确触发@media规则。
响应式布局不是靠某个“HTML5专属标签”实现的,而是靠 CSS 媒体查询 + 流动单位 + 弹性容器组合完成的; 这一行漏掉,所有 CSS 响应逻辑都会失效。
标签这是整个响应式的基础,没有它,移动端浏览器会以桌面宽度(通常是 980px)渲染页面,@media 查询根本不会触发。
正确写法只有一行,放在 里:
常见错误包括

立即学习“前端免费学习笔记(深入)”;
name="viewport" 或拼错成 viewpoint
content="width=1200" 这类固定值,失去响应能力public/index.html 要手动检查)max-width 和 width: 100% 的配合逻辑图片、视频、iframe 等替换元素默认不随容器缩放,必须显式约束。单纯设 width: 100% 可能导致拉伸变形;单纯设 max-width: 100% 又可能在大屏下过小。
标准写法是两者一起用:
img, video, iframe {
max-width: 100%;
height: auto;
}
注意点:
height: auto 必须加,否则等比缩放失效flex 或 grid,子元素的 width 行为可能被覆盖,优先检查父级 flex-shrink 是否为 0preserveAspectRatio="xMidYMid meet" 防止裁切@media 写断点时别硬套“手机/平板/桌面”三档真实设备尺寸和像素密度差异极大,按设备类型分类容易漏掉折叠屏、高 DPR 平板、小屏笔记本等场景。更稳妥的方式是按内容撑开需求设断点。
例如导航栏从横排变汉堡菜单,不该写成 @media (max-width: 768px),而应:
@media (max-width: 624px)
min-width + max-width 套叠写法,易引发层叠冲突;推荐移动优先:基础样式写默认态,再用 @media (min-width: ...) 逐步增强rem 和 vw 别混着调字号用 rem 做响应字号依赖根字体大小,需要 JS 动态改 document.documentElement.style.fontSize,但现代项目更倾向纯 CSS 方案。
简单可靠的做法是:
clamp(1.25rem, 4vw, 2.25rem) —— 在最小值、视口比例、最大值之间平滑过渡1rem 固定(继承 默认 16px),靠媒体查询分段调整:@media (max-width: 480px) { html { font-size: 14px; } }
font-size: 1.5rem 和 font-size: 4vw,后者会直接覆盖前者真正卡住人的往往不是语法,而是 viewport 设置遗漏、图片未加 height: auto、或者断点凭经验乱填。打开 DevTools 的设备模拟器,拖着宽度看布局崩在哪,比背教程管用得多。