CSS媒体查询无法识别视口宽度,手机未加载预期样式
我来帮你拆解下这个问题——你碰到的其实是移动端开发里很常见的物理分辨率与CSS像素不匹配的坑,这也是导致你的媒体查询没按预期触发的核心原因。
为什么CSS B没生效?
DOOGEE X5PRO的物理分辨率是1280x720,但浏览器渲染页面时用的是CSS像素,而非物理像素。绝大多数现代手机都存在设备像素比(DPR),也就是物理像素和CSS像素的换算比例。这款手机的DPR大概率是2,那它的CSS视口宽度就是 1280 ÷ 2 = 640px,这个数值小于你设置的700px断点,所以浏览器自然会加载max-width:700px对应的CSS A,而非CSS B。
调试与解决步骤
先确认真实的CSS视口宽度
你可以在页面里加一段简单代码,直接查看手机浏览器的实际视口宽度:<p>当前视口宽度: <span id="vp-width"></span></p> <script> document.getElementById('vp-width').textContent = window.innerWidth; </script>打开页面后就能拿到准确的数值,这是调整断点的关键依据。
调整媒体查询断点
如果实际视口宽度是640px,你可以把CSS B的断点改成min-width:640px,或者根据实际数值微调:@media only screen and (max-width: 639px) { /* 原CSS A内容 */ } @media only screen and (min-width: 640px) { /* 原CSS B内容 */ }更推荐用移动优先的写法(先写移动端样式,再用
min-width覆盖大屏样式),逻辑会更清晰:/* 默认移动端样式(对应原CSS A) */ ... @media only screen and (min-width: 640px) { /* 大屏适配样式(对应原CSS B) */ ... }排查样式优先级问题
有时候即使媒体查询触发了,样式也可能被优先级更高的规则覆盖。你可以用浏览器开发者工具(手机端可开启远程调试,或用Chrome的设备模拟功能)查看元素样式,确认CSS B的规则是否被正确应用,有没有被划掉的情况。再次验证viewport标签
你的<meta name="viewport">标签写法是正确的,但可以再检查下拼写细节,比如content里的逗号、空格是否规范,确保浏览器能正确识别视口设置。
内容的提问来源于stack exchange,提问作者Adam Bajger

