Heroku部署后移动端导航响应功能失效问题求助
给你梳理几个优先级最高的排查方向,按顺序试大概率能解决问题:
遗漏viewport元标签
这是移动端媒体查询失效的头号坑!本地用浏览器开发者工具模拟手机时,浏览器会自动补全viewport配置,但真实手机访问时,如果HTML的<head>里没加这个标签,手机会把页面当成桌面端页面缩放显示,媒体查询自然不会触发。
立刻检查你的页面头部,确保有这段代码:<meta name="viewport" content="width=device-width, initial-scale=1.0">CSS构建/压缩过程中被篡改
本地开发用的是未压缩的原始CSS,但部署到Heroku时如果用了构建工具(比如Webpack、Vite)压缩代码,有时候压缩工具会误改媒体查询的语法,或者打乱样式优先级。你可以直接在Heroku部署后的页面打开开发者工具,查看Elements面板里的CSS代码,确认媒体查询的内容、语法是否和本地完全一致。Heroku静态资源缓存问题
有时候Heroku会缓存旧的CSS文件,导致你新修改的媒体查询没被加载。可以试试强制刷新页面(手机上长按刷新按钮,桌面端用Ctrl+Shift+R),或者在部署时给静态资源加版本号(比如把style.css改成style.v2.css),彻底绕过缓存。媒体查询语法细节错误
虽然本地能正常运行,但有时候浏览器对语法错误的容错性比构建工具高。比如检查媒体查询的括号、逻辑符是否正确:
错误写法:@media screen and max-width:764px
正确写法:@media screen and (max-width: 764px)
确认所有媒体查询的语法都严格符合标准。服务器静态资源配置异常
少数情况下,Heroku上的服务器(比如Express)没正确设置静态资源的Content-Type,导致CSS文件被当成纯文本加载,浏览器无法解析。可以在浏览器的Network面板里查看CSS文件的响应头,确认Content-Type是text/css。
内容的提问来源于stack exchange,提问作者Spicy Sauce

